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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? repos.c

?? apache服務器源代碼(版本號:2.2.2)
?? C
?? 第 1 頁 / 共 5 頁
字號:
        char *uri = ap_make_dirstr_parent(ctx->pool, resource->uri);        if (strlen(uri) > 1 && uri[strlen(uri) - 1] == '/')            uri[strlen(uri) - 1] = '\0';        parent_resource->uri = uri;    }    rv = apr_stat(&parent_ctx->finfo, parent_ctx->pathname,                  APR_FINFO_NORM, ctx->pool);    if (rv == APR_SUCCESS || rv == APR_INCOMPLETE) {        parent_resource->exists = 1;    }    *result_parent = parent_resource;    return NULL;}static int dav_fs_is_same_resource(    const dav_resource *res1,    const dav_resource *res2){    dav_resource_private *ctx1 = res1->info;    dav_resource_private *ctx2 = res2->info;    if (res1->hooks != res2->hooks)        return 0;    if ((ctx1->finfo.filetype != 0) && (ctx2->finfo.filetype != 0)        && (ctx1->finfo.valid & ctx2->finfo.valid & APR_FINFO_INODE)) {        return ctx1->finfo.inode == ctx2->finfo.inode;    }    else {        return strcmp(ctx1->pathname, ctx2->pathname) == 0;    }}static int dav_fs_is_parent_resource(    const dav_resource *res1,    const dav_resource *res2){    dav_resource_private *ctx1 = res1->info;    dav_resource_private *ctx2 = res2->info;    apr_size_t len1 = strlen(ctx1->pathname);    apr_size_t len2;    if (res1->hooks != res2->hooks)        return 0;    /* it is safe to use ctx2 now */    len2 = strlen(ctx2->pathname);    return (len2 > len1            && memcmp(ctx1->pathname, ctx2->pathname, len1) == 0            && ctx2->pathname[len1] == '/');}static dav_error * dav_fs_open_stream(const dav_resource *resource,                                      dav_stream_mode mode,                                      dav_stream **stream){    apr_pool_t *p = resource->info->pool;    dav_stream *ds = apr_pcalloc(p, sizeof(*ds));    apr_int32_t flags;    apr_status_t rv;    switch (mode) {    default:        flags = APR_READ | APR_BINARY;        break;    case DAV_MODE_WRITE_TRUNC:        flags = APR_WRITE | APR_CREATE | APR_TRUNCATE | APR_BINARY;        break;    case DAV_MODE_WRITE_SEEKABLE:        flags = APR_WRITE | APR_CREATE | APR_BINARY;        break;    }    ds->p = p;    ds->pathname = resource->info->pathname;    rv = apr_file_open(&ds->f, ds->pathname, flags, APR_OS_DEFAULT, ds->p);    if (rv != APR_SUCCESS) {        return dav_new_error(p, MAP_IO2HTTP(rv), 0,                             "An error occurred while opening a resource.");    }    /* (APR registers cleanups for the fd with the pool) */    *stream = ds;    return NULL;}static dav_error * dav_fs_close_stream(dav_stream *stream, int commit){    apr_file_close(stream->f);    if (!commit) {        if (apr_file_remove(stream->pathname, stream->p) != APR_SUCCESS) {            /* ### use a better description? */            return dav_new_error(stream->p, HTTP_INTERNAL_SERVER_ERROR, 0,                                 "There was a problem removing (rolling "                                 "back) the resource "                                 "when it was being closed.");        }    }    return NULL;}static dav_error * dav_fs_write_stream(dav_stream *stream,                                       const void *buf, apr_size_t bufsize){    apr_status_t status;    status = apr_file_write_full(stream->f, buf, bufsize, NULL);    if (APR_STATUS_IS_ENOSPC(status)) {        return dav_new_error(stream->p, HTTP_INSUFFICIENT_STORAGE, 0,                             "There is not enough storage to write to "                             "this resource.");    }    else if (status != APR_SUCCESS) {        /* ### use something besides 500? */        return dav_new_error(stream->p, HTTP_INTERNAL_SERVER_ERROR, 0,                             "An error occurred while writing to a "                             "resource.");    }    return NULL;}static dav_error * dav_fs_seek_stream(dav_stream *stream, apr_off_t abs_pos){    if (apr_file_seek(stream->f, APR_SET, &abs_pos) != APR_SUCCESS) {        /* ### should check whether apr_file_seek set abs_pos was set to the         * correct position? */        /* ### use something besides 500? */        return dav_new_error(stream->p, HTTP_INTERNAL_SERVER_ERROR, 0,                             "Could not seek to specified position in the "                             "resource.");    }    return NULL;}#if DEBUG_GET_HANDLER/* only define set_headers() and deliver() for debug purposes */static dav_error * dav_fs_set_headers(request_rec *r,                                      const dav_resource *resource){    /* ### this function isn't really used since we have a get_pathname */    if (!resource->exists)        return NULL;    /* make sure the proper mtime is in the request record */    ap_update_mtime(r, resource->info->finfo.mtime);    /* ### note that these use r->filename rather than <resource> */    ap_set_last_modified(r);    ap_set_etag(r);    /* we accept byte-ranges */    apr_table_setn(r->headers_out, "Accept-Ranges", "bytes");    /* set up the Content-Length header */    ap_set_content_length(r, resource->info->finfo.size);    /* ### how to set the content type? */    /* ### until this is resolved, the Content-Type header is busted */    return NULL;}static dav_error * dav_fs_deliver(const dav_resource *resource,                                  ap_filter_t *output){    apr_pool_t *pool = resource->pool;    apr_bucket_brigade *bb;    apr_file_t *fd;    apr_status_t status;    apr_bucket *bkt;    /* Check resource type */    if (resource->type != DAV_RESOURCE_TYPE_REGULAR        && resource->type != DAV_RESOURCE_TYPE_VERSION        && resource->type != DAV_RESOURCE_TYPE_WORKING) {        return dav_new_error(pool, HTTP_CONFLICT, 0,                             "Cannot GET this type of resource.");    }    if (resource->collection) {        return dav_new_error(pool, HTTP_CONFLICT, 0,                             "There is no default response to GET for a "                             "collection.");    }    if ((status = apr_file_open(&fd, resource->info->pathname,                                APR_READ | APR_BINARY, 0,                                pool)) != APR_SUCCESS) {        return dav_new_error(pool, HTTP_FORBIDDEN, 0,                             "File permissions deny server access.");    }    bb = apr_brigade_create(pool, output->c->bucket_alloc);    /* ### this does not handle large files. but this is test code anyway */    bkt = apr_bucket_file_create(fd, 0,                                 (apr_size_t)resource->info->finfo.size,                                 pool, output->c->bucket_alloc);    APR_BRIGADE_INSERT_TAIL(bb, bkt);    bkt = apr_bucket_eos_create(output->c->bucket_alloc);    APR_BRIGADE_INSERT_TAIL(bb, bkt);    if ((status = ap_pass_brigade(output, bb)) != APR_SUCCESS) {        return dav_new_error(pool, HTTP_FORBIDDEN, 0,                             "Could not write contents to filter.");    }    return NULL;}#endif /* DEBUG_GET_HANDLER */static dav_error * dav_fs_create_collection(dav_resource *resource){    dav_resource_private *ctx = resource->info;    apr_status_t status;    status = apr_dir_make(ctx->pathname, APR_OS_DEFAULT, ctx->pool);    if (APR_STATUS_IS_ENOSPC(status)) {        return dav_new_error(ctx->pool, HTTP_INSUFFICIENT_STORAGE, 0,                             "There is not enough storage to create "                             "this collection.");    }    else if (APR_STATUS_IS_ENOENT(status)) {        return dav_new_error(ctx->pool, HTTP_CONFLICT, 0,                             "Cannot create collection; intermediate "                             "collection does not exist.");    }    else if (status != APR_SUCCESS) {        /* ### refine this error message? */        return dav_new_error(ctx->pool, HTTP_FORBIDDEN, 0,                             "Unable to create collection.");    }    /* update resource state to show it exists as a collection */    resource->exists = 1;    resource->collection = 1;    return NULL;}static dav_error * dav_fs_copymove_walker(dav_walk_resource *wres,                                          int calltype){    dav_fs_copymove_walk_ctx *ctx = wres->walk_ctx;    dav_resource_private *srcinfo = wres->resource->info;    dav_resource_private *dstinfo = ctx->res_dst->info;    dav_error *err = NULL;    if (wres->resource->collection) {        if (calltype == DAV_CALLTYPE_POSTFIX) {            /* Postfix call for MOVE. delete the source dir.             * Note: when copying, we do not enable the postfix-traversal.             */            /* ### we are ignoring any error here; what should we do? */            (void) apr_dir_remove(srcinfo->pathname, ctx->pool);        }        else {            /* copy/move of a collection. Create the new, target collection */            if (apr_dir_make(dstinfo->pathname, APR_OS_DEFAULT,                             ctx->pool) != APR_SUCCESS) {                /* ### assume it was a permissions problem */                /* ### need a description here */                err = dav_new_error(ctx->pool, HTTP_FORBIDDEN, 0, NULL);            }        }    }    else {        err = dav_fs_copymove_file(ctx->is_move, ctx->pool,                                   srcinfo->pathname, dstinfo->pathname,                                   &srcinfo->finfo,                                   ctx->res_dst->exists ? &dstinfo->finfo : NULL,                                   &ctx->work_buf);        /* ### push a higher-level description? */    }    /*    ** If we have a "not so bad" error, then it might need to go into a    ** multistatus response.    **    ** For a MOVE, it will always go into the multistatus. It could be    ** that everything has been moved *except* for the root. Using a    ** multistatus (with no errors for the other resources) will signify    ** this condition.    **    ** For a COPY, we are traversing in a prefix fashion. If the root fails,    ** then we can just bail out now.    */    if (err != NULL        && !ap_is_HTTP_SERVER_ERROR(err->status)        && (ctx->is_move            || !dav_fs_is_same_resource(wres->resource, ctx->root))) {        /* ### use errno to generate DAV:responsedescription? */        dav_add_response(wres, err->status, NULL);        /* the error is in the multistatus now. do not stop the traversal. */        return NULL;    }    return err;}static dav_error *dav_fs_copymove_resource(    int is_move,    const dav_resource *src,    const dav_resource *dst,    int depth,    dav_response **response){    dav_error *err = NULL;    dav_buffer work_buf = { 0 };    *response = NULL;    /* if a collection, recursively copy/move it and its children,     * including the state dirs     */    if (src->collection) {        dav_walk_params params = { 0 };        dav_response *multi_status;        params.walk_type = DAV_WALKTYPE_NORMAL | DAV_WALKTYPE_HIDDEN;        params.func = dav_fs_copymove_walker;        params.pool = src->info->pool;        params.root = src;        /* params.walk_ctx is managed by dav_fs_internal_walk() */        /* postfix is needed for MOVE to delete source dirs */        if (is_move)            params.walk_type |= DAV_WALKTYPE_POSTFIX;        /* note that we return the error OR the multistatus. never both */        if ((err = dav_fs_internal_walk(&params, depth, is_move, dst,                                        &multi_status)) != NULL) {            /* on a "real" error, then just punt. nothing else to do. */            return err;        }        if ((*response = multi_status) != NULL) {            /* some multistatus responses exist. wrap them in a 207 */            return dav_new_error(src->info->pool, HTTP_MULTI_STATUS, 0,                                 "Error(s) occurred on some resources during "                                 "the COPY/MOVE process.");        }        return NULL;    }    /* not a collection */    if ((err = dav_fs_copymove_file(is_move, src->info->pool,                                    src->info->pathname, dst->info->pathname,                                    &src->info->finfo,                                    dst->exists ? &dst->info->finfo : NULL,                                    &work_buf)) != NULL) {        /* ### push a higher-level description? */        return err;    }    /* copy/move properties as well */    return dav_fs_copymoveset(is_move, src->info->pool, src, dst, &work_buf);}static dav_error * dav_fs_copy_resource(    const dav_resource *src,    dav_resource *dst,    int depth,    dav_response **response){    dav_error *err;#if DAV_DEBUG    if (src->hooks != dst->hooks) {        /*        ** ### strictly speaking, this is a design error; we should not        ** ### have reached this point.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
轻轻草成人在线| 国产精品久久久久9999吃药| 日韩视频在线一区二区| 日韩免费看的电影| 国产欧美日韩在线看| 亚洲一区二区在线观看视频| 精品一区二区三区在线观看| av一区二区三区黑人| 欧美绝品在线观看成人午夜影视| 日韩精品中文字幕一区二区三区 | 日韩在线一区二区三区| 国产麻豆日韩欧美久久| 色香蕉久久蜜桃| 欧美www视频| 亚洲美女免费在线| 激情欧美日韩一区二区| 色综合色狠狠天天综合色| 国产精品美女一区二区三区| 亚洲精选视频免费看| 国产一区二区三区免费在线观看| 国产 日韩 欧美大片| 91影院在线免费观看| 欧美午夜一区二区三区| 欧美r级在线观看| 一区二区三区四区蜜桃 | 亚洲三级小视频| 亚洲国产精品t66y| 中文字幕精品—区二区四季| 亚洲mv大片欧洲mv大片精品| 日韩精品一区第一页| 91在线精品秘密一区二区| 欧美日本乱大交xxxxx| 亚洲va欧美va国产va天堂影院| 国产一区二区三区久久久 | 欧美一区二区在线视频| **性色生活片久久毛片| 久久成人免费日本黄色| 欧美日韩综合在线免费观看| 中文字幕精品综合| 国产一区二区三区美女| 5月丁香婷婷综合| 亚洲免费在线电影| 国产不卡高清在线观看视频| 91精品国产入口在线| 一区二区三区加勒比av| 99精品偷自拍| 国产欧美一区二区精品秋霞影院 | 亚洲国产精品黑人久久久| 青青国产91久久久久久| 欧美无乱码久久久免费午夜一区| 中文字幕高清一区| 国产激情一区二区三区桃花岛亚洲| 欧美猛男gaygay网站| 亚洲欧美色图小说| 成人美女视频在线看| 欧美精品一区二区三区蜜桃| 日韩精品一卡二卡三卡四卡无卡| 欧美亚洲丝袜传媒另类| 亚洲日本乱码在线观看| 成人一区二区三区视频在线观看| 亚洲精品一区二区三区蜜桃下载 | 欧美一级艳片视频免费观看| 亚洲午夜一区二区| 91成人免费网站| 亚洲三级在线播放| 色偷偷久久人人79超碰人人澡| 国产精品久线在线观看| 不卡一区二区在线| 精品国产精品网麻豆系列| 国产综合久久久久久久久久久久 | 国产成人综合精品三级| 国产精品美女久久久久aⅴ| 91在线视频18| 蜜臀国产一区二区三区在线播放| 久久综合久久综合九色| 成人毛片视频在线观看| 亚洲国产一区二区视频| 久久人人超碰精品| 日韩欧美一区二区免费| 亚洲精品五月天| 91麻豆精品秘密| 亚洲另类一区二区| 欧美性xxxxxx少妇| 丝瓜av网站精品一区二区| 日韩视频一区在线观看| 国内不卡的二区三区中文字幕| 国产欧美日韩精品一区| 99精品久久免费看蜜臀剧情介绍| 亚洲精品免费在线观看| 欧美亚洲一区三区| 日本三级亚洲精品| 欧美精品一区二区久久婷婷| 国产不卡在线一区| 亚洲女女做受ⅹxx高潮| 欧美少妇性性性| 美日韩一区二区| 久久久精品国产99久久精品芒果| 99在线视频精品| 亚洲成人tv网| 久久中文字幕电影| 91蜜桃在线观看| 丝瓜av网站精品一区二区 | 亚洲va天堂va国产va久| 日韩精品一区二区三区三区免费| 国产一区二区不卡老阿姨| 国产精品久久久久精k8| 欧美亚日韩国产aⅴ精品中极品| 全国精品久久少妇| 久久久国产一区二区三区四区小说 | 一本色道亚洲精品aⅴ| 日韩高清一级片| 国产日韩欧美a| 欧美视频一区二区三区在线观看| 久久99在线观看| 日韩理论片一区二区| 欧美精品v国产精品v日韩精品| 国产一区在线视频| 亚洲已满18点击进入久久| 精品国内二区三区| 色综合久久99| 狠狠色丁香久久婷婷综合丁香| 亚洲你懂的在线视频| 日韩精品资源二区在线| 色综合天天综合网天天狠天天| 久久精品99国产精品日本| 亚洲欧美怡红院| 精品国产乱码久久久久久夜甘婷婷| jlzzjlzz欧美大全| 日本网站在线观看一区二区三区| 欧美国产精品中文字幕| 欧美精品1区2区| 不卡的av在线| 久久99精品久久久| 亚洲一二三区不卡| 国产精品国产三级国产三级人妇| 91精品免费在线观看| 色婷婷综合久久久久中文 | 亚洲丝袜精品丝袜在线| 日韩精品专区在线影院重磅| 欧洲精品在线观看| 成人一区二区三区视频| 蜜芽一区二区三区| 亚洲最大色网站| 中文子幕无线码一区tr| 精品国产免费视频| 欧美久久久久中文字幕| 97se亚洲国产综合自在线| 国产一区二区不卡| 蜜臀av性久久久久蜜臀aⅴ四虎 | 7777精品伊人久久久大香线蕉完整版| 99久久夜色精品国产网站| 国产一区日韩二区欧美三区| 日本成人在线看| 亚洲国产一区二区三区 | 欧美人与z0zoxxxx视频| 91丨九色丨尤物| 成人丝袜18视频在线观看| 一本大道久久a久久精二百| 国产成人av一区二区三区在线观看| 蜜桃av噜噜一区| 三级欧美在线一区| 亚洲综合成人在线| 亚洲黄色小视频| 亚洲精品欧美专区| 亚洲欧美日韩中文字幕一区二区三区| 国产欧美精品一区aⅴ影院| 337p粉嫩大胆噜噜噜噜噜91av| 欧美一区二区视频免费观看| 欧美挠脚心视频网站| 在线一区二区三区四区五区| 99久久精品99国产精品| 成人一级黄色片| 国产成人一区在线| 粉嫩欧美一区二区三区高清影视| 久久99精品国产.久久久久 | 欧美成人a视频| 91精品国产综合久久精品| 欧美精品久久天天躁| 欧美精品日韩精品| 欧美一区二区在线不卡| 欧美精品免费视频| 欧美一二三在线| 日韩视频123| 久久免费视频色| 久久尤物电影视频在线观看| 久久奇米777| 欧美国产亚洲另类动漫| 国产精品剧情在线亚洲| 亚洲欧洲精品一区二区三区| 一区在线中文字幕| 亚洲欧美成aⅴ人在线观看| 亚洲精品亚洲人成人网| 亚洲国产乱码最新视频 | 欧美大片拔萝卜| 精品1区2区在线观看| 国产无人区一区二区三区| 亚洲国产精品av| 一区二区三区在线看| 亚洲成人资源网| 美女mm1313爽爽久久久蜜臀|