亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? repos.c

?? apache服務(wù)器源代碼(版本號(hào):2.2.2)
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as * applicable. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//*** DAV filesystem-based repository provider*/#include "apr.h"#include "apr_file_io.h"#include "apr_strings.h"#include "apr_buckets.h"#if APR_HAVE_STDIO_H#include <stdio.h>              /* for sprintf() */#endif#include "httpd.h"#include "http_log.h"#include "http_protocol.h"      /* for ap_set_* (in dav_fs_set_headers) */#include "http_request.h"       /* for ap_update_mtime() */#include "mod_dav.h"#include "repos.h"/* to assist in debugging mod_dav's GET handling */#define DEBUG_GET_HANDLER       0#define DAV_FS_COPY_BLOCKSIZE   16384   /* copy 16k at a time *//* context needed to identify a resource */struct dav_resource_private {    apr_pool_t *pool;        /* memory storage pool associated with request */    const char *pathname;   /* full pathname to resource */    apr_finfo_t finfo;       /* filesystem info */};/* private context for doing a filesystem walk */typedef struct {    /* the input walk parameters */    const dav_walk_params *params;    /* reused as we walk */    dav_walk_resource wres;    dav_resource res1;    dav_resource_private info1;    dav_buffer path1;    dav_buffer uri_buf;    /* MOVE/COPY need a secondary path */    dav_resource res2;    dav_resource_private info2;    dav_buffer path2;    dav_buffer locknull_buf;} dav_fs_walker_context;typedef struct {    int is_move;                /* is this a MOVE? */    dav_buffer work_buf;        /* handy buffer for copymove_file() */    /* CALLBACK: this is a secondary resource managed specially for us */    const dav_resource *res_dst;    /* copied from dav_walk_params (they are invariant across the walk) */    const dav_resource *root;    apr_pool_t *pool;} dav_fs_copymove_walk_ctx;/* an internal WALKTYPE to walk hidden files (the .DAV directory) */#define DAV_WALKTYPE_HIDDEN     0x4000/* an internal WALKTYPE to call collections (again) after their contents */#define DAV_WALKTYPE_POSTFIX    0x8000#define DAV_CALLTYPE_POSTFIX    1000    /* a private call type *//* pull this in from the other source file */extern const dav_hooks_locks dav_hooks_locks_fs;/* forward-declare the hook structures */static const dav_hooks_repository dav_hooks_repository_fs;static const dav_hooks_liveprop dav_hooks_liveprop_fs;/*** The namespace URIs that we use. This list and the enumeration must** stay in sync.*/static const char * const dav_fs_namespace_uris[] ={    "DAV:",    "http://apache.org/dav/props/",    NULL        /* sentinel */};enum {    DAV_FS_URI_DAV,            /* the DAV: namespace URI */    DAV_FS_URI_MYPROPS         /* the namespace URI for our custom props */};/*** Does this platform support an executable flag?**** ### need a way to portably abstract this query*/#ifndef WIN32#define DAV_FS_HAS_EXECUTABLE#endif/*** The single property that we define (in the DAV_FS_URI_MYPROPS namespace)*/#define DAV_PROPID_FS_executable        1static const dav_liveprop_spec dav_fs_props[] ={    /* standard DAV properties */    {        DAV_FS_URI_DAV,        "creationdate",        DAV_PROPID_creationdate,        0    },    {        DAV_FS_URI_DAV,        "getcontentlength",        DAV_PROPID_getcontentlength,        0    },    {        DAV_FS_URI_DAV,        "getetag",        DAV_PROPID_getetag,        0    },    {        DAV_FS_URI_DAV,        "getlastmodified",        DAV_PROPID_getlastmodified,        0    },    /* our custom properties */    {        DAV_FS_URI_MYPROPS,        "executable",        DAV_PROPID_FS_executable,        0       /* handled special in dav_fs_is_writable */    },    { 0 }        /* sentinel */};static const dav_liveprop_group dav_fs_liveprop_group ={    dav_fs_props,    dav_fs_namespace_uris,    &dav_hooks_liveprop_fs};/* define the dav_stream structure for our use */struct dav_stream {    apr_pool_t *p;    apr_file_t *f;    const char *pathname;       /* we may need to remove it at close time */};/* returns an appropriate HTTP status code given an APR status code for a * failed I/O operation.  ### use something besides 500? */#define MAP_IO2HTTP(e) (APR_STATUS_IS_ENOSPC(e) ? HTTP_INSUFFICIENT_STORAGE : \                        HTTP_INTERNAL_SERVER_ERROR)/* forward declaration for internal treewalkers */static dav_error * dav_fs_walk(const dav_walk_params *params, int depth,                               dav_response **response);static dav_error * dav_fs_internal_walk(const dav_walk_params *params,                                        int depth, int is_move,                                        const dav_resource *root_dst,                                        dav_response **response);/* --------------------------------------------------------------------**** PRIVATE REPOSITORY FUNCTIONS*/apr_pool_t *dav_fs_pool(const dav_resource *resource){    return resource->info->pool;}const char *dav_fs_pathname(const dav_resource *resource){    return resource->info->pathname;}dav_error * dav_fs_dir_file_name(    const dav_resource *resource,    const char **dirpath_p,    const char **fname_p){    dav_resource_private *ctx = resource->info;    if (resource->collection) {        *dirpath_p = ctx->pathname;        if (fname_p != NULL)            *fname_p = NULL;    }    else {        const char *testpath, *rootpath;        char *dirpath = ap_make_dirstr_parent(ctx->pool, ctx->pathname);        apr_size_t dirlen = strlen(dirpath);        apr_status_t rv = APR_SUCCESS;        testpath = dirpath;        if (dirlen > 0) {            rv = apr_filepath_root(&rootpath, &testpath, 0, ctx->pool);        }        /* remove trailing slash from dirpath, unless it's a root path         */        if ((rv == APR_SUCCESS && testpath && *testpath)            || rv == APR_ERELATIVE) {            if (dirpath[dirlen - 1] == '/') {                dirpath[dirlen - 1] = '\0';            }        }        /* ###: Looks like a response could be appropriate         *         * APR_SUCCESS     here tells us the dir is a root         * APR_ERELATIVE   told us we had no root (ok)         * APR_EINCOMPLETE an incomplete testpath told us         *                 there was no -file- name here!         * APR_EBADPATH    or other errors tell us this file         *                 path is undecipherable         */        if (rv == APR_SUCCESS || rv == APR_ERELATIVE) {            *dirpath_p = dirpath;            if (fname_p != NULL)                *fname_p = ctx->pathname + dirlen;        }        else {            return dav_new_error(ctx->pool, HTTP_INTERNAL_SERVER_ERROR, 0,                                 "An incomplete/bad path was found in "                                 "dav_fs_dir_file_name.");        }    }    return NULL;}/* Note: picked up from ap_gm_timestr_822() *//* NOTE: buf must be at least DAV_TIMEBUF_SIZE chars in size */static void dav_format_time(int style, apr_time_t sec, char *buf){    apr_time_exp_t tms;    /* ### what to do if fails? */    (void) apr_time_exp_gmt(&tms, sec);    if (style == DAV_STYLE_ISO8601) {        /* ### should we use "-00:00" instead of "Z" ?? */        /* 20 chars plus null term */        sprintf(buf, "%.4d-%.2d-%.2dT%.2d:%.2d:%.2dZ",               tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday,               tms.tm_hour, tms.tm_min, tms.tm_sec);        return;    }    /* RFC 822 date format; as strftime '%a, %d %b %Y %T GMT' */    /* 29 chars plus null term */    sprintf(buf,            "%s, %.2d %s %d %.2d:%.2d:%.2d GMT",           apr_day_snames[tms.tm_wday],           tms.tm_mday, apr_month_snames[tms.tm_mon],           tms.tm_year + 1900,           tms.tm_hour, tms.tm_min, tms.tm_sec);}/* Copy or move src to dst; src_finfo is used to propagate permissions * bits across if non-NULL; dst_finfo must be non-NULL iff dst already * exists. */static dav_error * dav_fs_copymove_file(    int is_move,    apr_pool_t * p,    const char *src,    const char *dst,    const apr_finfo_t *src_finfo,    const apr_finfo_t *dst_finfo,    dav_buffer *pbuf){    dav_buffer work_buf = { 0 };    apr_file_t *inf = NULL;    apr_file_t *outf = NULL;    apr_status_t status;    apr_fileperms_t perms;    if (pbuf == NULL)        pbuf = &work_buf;    /* Determine permissions to use for destination */    if (src_finfo && src_finfo->valid & APR_FINFO_PROT        && src_finfo->protection & APR_UEXECUTE) {        perms = src_finfo->protection;        if (dst_finfo != NULL) {            /* chmod it if it already exist */            if (apr_file_perms_set(dst, perms)) {                return dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                                     "Could not set permissions on destination");            }        }    }    else {        perms = APR_OS_DEFAULT;    }    dav_set_bufsize(p, pbuf, DAV_FS_COPY_BLOCKSIZE);    if ((apr_file_open(&inf, src, APR_READ | APR_BINARY, APR_OS_DEFAULT, p))            != APR_SUCCESS) {        /* ### use something besides 500? */        return dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                             "Could not open file for reading");    }    /* ### do we need to deal with the umask? */    status = apr_file_open(&outf, dst, APR_WRITE | APR_CREATE | APR_TRUNCATE                           | APR_BINARY, perms, p);    if (status != APR_SUCCESS) {        apr_file_close(inf);        return dav_new_error(p, MAP_IO2HTTP(status), 0,                             "Could not open file for writing");    }    while (1) {        apr_size_t len = DAV_FS_COPY_BLOCKSIZE;        status = apr_file_read(inf, pbuf->buf, &len);        if (status != APR_SUCCESS && status != APR_EOF) {            apr_file_close(inf);            apr_file_close(outf);            if (apr_file_remove(dst, p) != APR_SUCCESS) {                /* ### ACK! Inconsistent state... */                /* ### use something besides 500? */                return dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                                     "Could not delete output after read "                                     "failure. Server is now in an "                                     "inconsistent state.");            }            /* ### use something besides 500? */            return dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                                 "Could not read input file");        }        if (status == APR_EOF)            break;        /* write any bytes that were read */        status = apr_file_write_full(outf, pbuf->buf, len, NULL);        if (status != APR_SUCCESS) {            apr_file_close(inf);            apr_file_close(outf);            if (apr_file_remove(dst, p) != APR_SUCCESS) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区在线 | 欧美三级电影精品| 欧美日韩在线一区二区| 欧美一区2区视频在线观看| 欧美成人精品1314www| 国产欧美一区二区三区沐欲| 一色屋精品亚洲香蕉网站| 亚洲第一激情av| 精品一区二区三区久久| www.亚洲色图.com| 欧美日韩aaaaaa| 久久久国产综合精品女国产盗摄| 国产精品第四页| 午夜成人在线视频| 国产成人无遮挡在线视频| 在线观看av一区二区| 欧美大片在线观看一区二区| 中文字幕在线一区| 日本最新不卡在线| 99久久久免费精品国产一区二区| 欧美年轻男男videosbes| 国产日产欧美精品一区二区三区| 亚洲午夜久久久久久久久久久 | 国产无人区一区二区三区| 亚洲一区二区三区免费视频| 精品一区二区在线视频| 日本精品一区二区三区高清| 久久免费电影网| 日韩黄色片在线观看| 99久久99久久免费精品蜜臀| 亚洲精品在线电影| 亚洲一二三四区不卡| 成人午夜视频网站| 日韩一区二区三区精品视频| 亚洲区小说区图片区qvod| 久久成人久久鬼色| 欧美日韩综合色| 亚洲欧洲精品一区二区三区不卡| 精品制服美女久久| 欧美日韩亚洲综合一区| 国产精品福利一区二区| 国产剧情一区二区| 91精品国产一区二区人妖| 亚洲精选视频在线| 粉嫩一区二区三区性色av| 精品少妇一区二区三区视频免付费 | 亚洲成人av一区| 99热精品一区二区| 久久久久88色偷偷免费| 美女视频第一区二区三区免费观看网站| 99国产精品久久久| 国产日本欧洲亚洲| 国产在线视视频有精品| 欧美老年两性高潮| 亚洲精品国产第一综合99久久| 国产麻豆午夜三级精品| 精品国产免费视频| 奇米在线7777在线精品| 在线一区二区视频| 中文字幕亚洲电影| 国产99精品国产| 久久欧美一区二区| 久久av中文字幕片| 日韩一区二区三区电影 | 日韩一区二区电影| 五月天激情小说综合| 欧日韩精品视频| 亚洲日本乱码在线观看| 99久久99久久精品国产片果冻| 国产精品久久国产精麻豆99网站| 国产黄人亚洲片| 国产偷国产偷精品高清尤物| 黄色日韩三级电影| 26uuu久久天堂性欧美| 久久国产人妖系列| 久久久午夜精品理论片中文字幕| 精品一区二区国语对白| 日韩欧美一二三| 精品无人码麻豆乱码1区2区| 欧美白人最猛性xxxxx69交| 美女诱惑一区二区| 精品福利一二区| 国产成人av电影在线| 中文字幕精品在线不卡| 99久久精品99国产精品| 最新日韩在线视频| 在线免费视频一区二区| 亚洲成人7777| 538prom精品视频线放| 日本91福利区| 久久精品视频网| 成人av免费在线观看| 亚洲人精品一区| 欧美三级电影在线看| 美腿丝袜在线亚洲一区| 久久综合九色综合97_久久久| 国产在线播放一区| 国产精品情趣视频| 在线看国产日韩| 日本亚洲一区二区| 久久亚洲私人国产精品va媚药| 成人综合婷婷国产精品久久 | 91一区二区在线| 亚洲综合清纯丝袜自拍| 制服丝袜日韩国产| 国产精品白丝jk白祙喷水网站 | 欧美性猛交xxxx黑人交| 日韩电影在线观看电影| 久久亚洲免费视频| 91在线无精精品入口| 香蕉久久一区二区不卡无毒影院| 韩国欧美一区二区| 日韩电影在线免费观看| 日本v片在线高清不卡在线观看| 亚洲成人动漫在线免费观看| 国产美女精品在线| 国产精品美女久久福利网站 | 国产欧美精品一区| 色综合久久天天| 天堂影院一区二区| 久久久久久久国产精品影院| 91免费小视频| 另类欧美日韩国产在线| 国产精品无遮挡| 欧美丰满一区二区免费视频| 国产麻豆午夜三级精品| 亚洲一区二区三区不卡国产欧美| 精品久久久久久无| 色综合亚洲欧洲| 精品亚洲欧美一区| 一区二区三区四区在线免费观看| 日韩美女主播在线视频一区二区三区| k8久久久一区二区三区| 日本欧美肥老太交大片| 亚洲免费观看高清| 久久精品亚洲一区二区三区浴池| 欧美中文一区二区三区| 国产成人在线视频免费播放| 五月综合激情日本mⅴ| 久久精品亚洲国产奇米99| 7777精品伊人久久久大香线蕉的 | 国产欧美精品日韩区二区麻豆天美| 精品视频一区二区不卡| 国产99久久久国产精品潘金| 日韩av一区二| 一区二区三区四区精品在线视频 | www.欧美精品一二区| 久久91精品国产91久久小草| 亚洲自拍偷拍网站| 中文字幕在线一区| 久久精品一区二区三区四区| 91精品综合久久久久久| 欧美在线免费观看亚洲| 成人av资源在线| 国产亚洲欧洲997久久综合| 欧美高清在线一区| 欧美肥妇bbw| 成人免费视频国产在线观看| 免费在线观看精品| 一区二区三区高清| 日本一区二区三区国色天香| 欧美一级欧美三级| 欧美性猛交xxxx乱大交退制版 | 久久这里都是精品| 日韩一区和二区| 欧美人体做爰大胆视频| 日本黄色一区二区| heyzo一本久久综合| 国产二区国产一区在线观看| 国内外成人在线| 日韩国产欧美三级| 亚洲国产精品久久久久婷婷884 | av综合在线播放| 成人免费视频视频在线观看免费| 国产精品77777| 久久国产日韩欧美精品| 蜜桃av噜噜一区| 美女在线视频一区| 蜜桃传媒麻豆第一区在线观看| 日韩av高清在线观看| 天堂成人免费av电影一区| 亚洲一区二区偷拍精品| 夜夜嗨av一区二区三区四季av| 亚洲免费观看视频| 亚洲视频一区二区在线| 亚洲视频中文字幕| 亚洲精品中文字幕在线观看| 亚洲丝袜美腿综合| 亚洲最大色网站| 亚洲成人免费观看| 丝袜亚洲精品中文字幕一区| 午夜视频在线观看一区二区| 性欧美大战久久久久久久久| 午夜精品福利一区二区三区蜜桃| 亚洲成av人影院| 日韩不卡免费视频| 国产一区在线不卡| 成人免费毛片a| 色综合久久99| 欧美三级中文字幕|