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

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

?? lock.c

?? apache服務器源代碼(版本號:2.2.2)
?? C
?? 第 1 頁 / 共 4 頁
字號:
        "<D:lockentry>" DEBUG_CR        "<D:lockscope><D:shared/></D:lockscope>" DEBUG_CR        "<D:locktype><D:write/></D:locktype>" DEBUG_CR        "</D:lockentry>" DEBUG_CR;    return supported;}/* ---------------------------------------------------------------**** General lock functions***//* ---------------------------------------------------------------**** Functions dealing with lock-null resources***//*** dav_fs_load_locknull_list:  Returns a dav_buffer dump of the locknull file**    for the given directory.*/static dav_error * dav_fs_load_locknull_list(apr_pool_t *p, const char *dirpath,                                             dav_buffer *pbuf){    apr_finfo_t finfo;    apr_file_t *file = NULL;    dav_error *err = NULL;    apr_size_t amt;    apr_status_t rv;    dav_buffer_init(p, pbuf, dirpath);    if (pbuf->buf[pbuf->cur_len - 1] == '/')        pbuf->buf[--pbuf->cur_len] = '\0';    dav_buffer_place(p, pbuf, "/" DAV_FS_STATE_DIR "/" DAV_FS_LOCK_NULL_FILE);    /* reset this in case we leave w/o reading into the buffer */    pbuf->cur_len = 0;    if (apr_file_open(&file, pbuf->buf, APR_READ | APR_BINARY, APR_OS_DEFAULT,                p) != APR_SUCCESS) {        return NULL;    }    rv = apr_file_info_get(&finfo, APR_FINFO_SIZE, file);    if (rv != APR_SUCCESS) {        err = dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                            apr_psprintf(p,                                        "Opened but could not stat file %s",                                        pbuf->buf));        goto loaderror;    }    if (finfo.size != (apr_size_t)finfo.size) {        err = dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                            apr_psprintf(p,                                        "Opened but rejected huge file %s",                                        pbuf->buf));        goto loaderror;    }    amt = (apr_size_t)finfo.size;    dav_set_bufsize(p, pbuf, amt);    if (apr_file_read(file, pbuf->buf, &amt) != APR_SUCCESS        || amt != finfo.size) {        err = dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                            apr_psprintf(p,                                        "Failure reading locknull file "                                        "for %s", dirpath));        /* just in case the caller disregards the returned error */        pbuf->cur_len = 0;        goto loaderror;    }  loaderror:    apr_file_close(file);    return err;}/*** dav_fs_save_locknull_list:  Saves contents of pbuf into the**    locknull file for dirpath.*/static dav_error * dav_fs_save_locknull_list(apr_pool_t *p, const char *dirpath,                                             dav_buffer *pbuf){    const char *pathname;    apr_file_t *file = NULL;    dav_error *err = NULL;    apr_size_t amt;    if (pbuf->buf == NULL)        return NULL;    dav_fs_ensure_state_dir(p, dirpath);    pathname = apr_pstrcat(p,                          dirpath,                          dirpath[strlen(dirpath) - 1] == '/' ? "" : "/",                          DAV_FS_STATE_DIR "/" DAV_FS_LOCK_NULL_FILE,                          NULL);    if (pbuf->cur_len == 0) {        /* delete the file if cur_len == 0 */        if (apr_file_remove(pathname, p) != 0) {            return dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                                 apr_psprintf(p,                                             "Error removing %s", pathname));        }        return NULL;    }    if (apr_file_open(&file, pathname,                APR_WRITE | APR_CREATE | APR_TRUNCATE | APR_BINARY,                APR_OS_DEFAULT, p) != APR_SUCCESS) {        return dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                             apr_psprintf(p,                                         "Error opening %s for writing",                                         pathname));    }    amt = pbuf->cur_len;    if (apr_file_write(file, pbuf->buf, &amt) != APR_SUCCESS        || amt != pbuf->cur_len) {        err = dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                            apr_psprintf(p,                                        "Error writing %" APR_SIZE_T_FMT                                        " bytes to %s",                                        pbuf->cur_len, pathname));    }    apr_file_close(file);    return err;}/*** dav_fs_remove_locknull_member:  Removes filename from the locknull list**    for directory path.*/static dav_error * dav_fs_remove_locknull_member(apr_pool_t *p,                                                 const char *filename,                                                 dav_buffer *pbuf){    dav_error *err;    apr_size_t len;    apr_size_t scanlen;    char *scan;    const char *scanend;    char *dirpath = apr_pstrdup(p, filename);    char *fname = strrchr(dirpath, '/');    int dirty = 0;    if (fname != NULL)        *fname++ = '\0';    else        fname = dirpath;    len = strlen(fname) + 1;    if ((err = dav_fs_load_locknull_list(p, dirpath, pbuf)) != NULL) {        /* ### add a higher level description? */        return err;    }    for (scan = pbuf->buf, scanend = scan + pbuf->cur_len;         scan < scanend;         scan += scanlen) {        scanlen = strlen(scan) + 1;        if (len == scanlen && memcmp(fname, scan, scanlen) == 0) {            pbuf->cur_len -= scanlen;            memmove(scan, scan + scanlen, scanend - (scan + scanlen));            dirty = 1;            break;        }    }    if (dirty) {        if ((err = dav_fs_save_locknull_list(p, dirpath, pbuf)) != NULL) {            /* ### add a higher level description? */            return err;        }    }    return NULL;}/* Note: used by dav_fs_repos.c */dav_error * dav_fs_get_locknull_members(    const dav_resource *resource,    dav_buffer *pbuf){    const char *dirpath;    /* ### should test this result value... */    (void) dav_fs_dir_file_name(resource, &dirpath, NULL);    return dav_fs_load_locknull_list(dav_fs_pool(resource), dirpath, pbuf);}/* ### fold into append_lock? *//* ### take an optional buf parameter? */static dav_error * dav_fs_add_locknull_state(    dav_lockdb *lockdb,    const dav_resource *resource){    dav_buffer buf = { 0 };    apr_pool_t *p = lockdb->info->pool;    const char *dirpath;    const char *fname;    dav_error *err;    /* ### should test this result value... */    (void) dav_fs_dir_file_name(resource, &dirpath, &fname);    if ((err = dav_fs_load_locknull_list(p, dirpath, &buf)) != NULL) {        return dav_push_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                              "Could not load .locknull file.", err);    }    dav_buffer_append(p, &buf, fname);    buf.cur_len++;   /* we want the null-term here */    if ((err = dav_fs_save_locknull_list(p, dirpath, &buf)) != NULL) {        return dav_push_error(p, HTTP_INTERNAL_SERVER_ERROR, 0,                              "Could not save .locknull file.", err);    }    return NULL;}/*** dav_fs_remove_locknull_state:  Given a request, check to see if r->filename**    is/was a lock-null resource.  If so, return it to an existant state.****    ### this function is broken... it doesn't check!****    In this implementation, this involves two things:**    (a) remove it from the list in the appropriate .DAV/locknull file**    (b) on *nix, convert the key from a filename to an inode.*/static dav_error * dav_fs_remove_locknull_state(    dav_lockdb *lockdb,    const dav_resource *resource){    dav_buffer buf = { 0 };    dav_error *err;    apr_pool_t *p = lockdb->info->pool;    const char *pathname = dav_fs_pathname(resource);    if ((err = dav_fs_remove_locknull_member(p, pathname, &buf)) != NULL) {        /* ### add a higher-level description? */        return err;    }    {        dav_lock_discovery *ld;        dav_lock_indirect  *id;        apr_datum_t key;        /*        ** Fetch the lock(s) that made the resource lock-null. Remove        ** them under the filename key. Obtain the new inode key, and        ** save the same lock information under it.        */        key = dav_fs_build_fname_key(p, pathname);        if ((err = dav_fs_load_lock_record(lockdb, key, DAV_CREATE_LIST,                                           &ld, &id)) != NULL) {            /* ### insert a higher-level error description */            return err;        }        if ((err = dav_fs_save_lock_record(lockdb, key, NULL, NULL)) != NULL) {            /* ### insert a higher-level error description */            return err;        }        key = dav_fs_build_key(p, resource);        if ((err = dav_fs_save_lock_record(lockdb, key, ld, id)) != NULL) {            /* ### insert a higher-level error description */            return err;        }    }    return NULL;}static dav_error * dav_fs_create_lock(dav_lockdb *lockdb,                                      const dav_resource *resource,                                      dav_lock **lock){    apr_datum_t key;    key = dav_fs_build_key(lockdb->info->pool, resource);    *lock = dav_fs_alloc_lock(lockdb,                              key,                              NULL);    (*lock)->is_locknull = !resource->exists;    return NULL;}static dav_error * dav_fs_get_locks(dav_lockdb *lockdb,                                    const dav_resource *resource,                                    int calltype,                                    dav_lock **locks){    apr_pool_t *p = lockdb->info->pool;    apr_datum_t key;    dav_error *err;    dav_lock *lock = NULL;    dav_lock *newlock;    dav_lock_discovery *dp;    dav_lock_indirect *ip;#if DAV_DEBUG    if (calltype == DAV_GETLOCKS_COMPLETE) {        return dav_new_error(lockdb->info->pool,                             HTTP_INTERNAL_SERVER_ERROR, 0,                             "INTERNAL DESIGN ERROR: DAV_GETLOCKS_COMPLETE "                             "is not yet supported");    }#endif    key = dav_fs_build_key(p, resource);    if ((err = dav_fs_load_lock_record(lockdb, key, DAV_CREATE_LIST,                                       &dp, &ip)) != NULL) {        /* ### push a higher-level desc? */        return err;    }    /* copy all direct locks to the result list */    for (; dp != NULL; dp = dp->next) {        newlock = dav_fs_alloc_lock(lockdb, key, dp->locktoken);        newlock->is_locknull = !resource->exists;        newlock->scope = dp->f.scope;        newlock->type = dp->f.type;        newlock->depth = dp->f.depth;        newlock->timeout = dp->f.timeout;        newlock->owner = dp->owner;        newlock->auth_user = dp->auth_user;        /* hook into the result list */        newlock->next = lock;        lock = newlock;    }    /* copy all the indirect locks to the result list. resolve as needed. */    for (; ip != NULL; ip = ip->next) {        newlock = dav_fs_alloc_lock(lockdb, ip->key, ip->locktoken);        newlock->is_locknull = !resource->exists;        if (calltype == DAV_GETLOCKS_RESOLVED) {            if ((err = dav_fs_resolve(lockdb, ip, &dp, NULL, NULL)) != NULL) {                /* ### push a higher-level desc? */                return err;            }            newlock->scope = dp->f.scope;            newlock->type = dp->f.type;            newlock->depth = dp->f.depth;            newlock->timeout = dp->f.timeout;            newlock->owner = dp->owner;            newlock->auth_user = dp->auth_user;        }        else {            /* DAV_GETLOCKS_PARTIAL */            newlock->rectype = DAV_LOCKREC_INDIRECT_PARTIAL;        }        /* hook into the result list */        newlock->next = lock;        lock = newlock;    }    *locks = lock;    return NULL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美国毛片一区二区| 蜜桃视频一区二区三区在线观看| 91精品视频网| 欧美日韩激情一区二区| 欧美体内she精高潮| 色94色欧美sute亚洲线路一ni| 色综合久久综合网欧美综合网| 9i在线看片成人免费| 99久久99久久精品免费看蜜桃| 不卡大黄网站免费看| 色欧美日韩亚洲| 精品视频免费看| 日韩写真欧美这视频| 欧美成人精品高清在线播放| 国产亚洲精品aa| 最新中文字幕一区二区三区 | 亚洲国产综合视频在线观看| 一区二区三区高清| 日韩精品色哟哟| 国产精品系列在线播放| 成人精品亚洲人成在线| 日本乱人伦aⅴ精品| 制服丝袜亚洲网站| 久久九九久精品国产免费直播| 国产精品天干天干在观线| 亚洲视频电影在线| 免费一级片91| 丁香一区二区三区| 欧美日韩精品电影| 欧美激情艳妇裸体舞| 亚洲午夜日本在线观看| 激情文学综合插| 色播五月激情综合网| 2023国产精华国产精品| |精品福利一区二区三区| 捆绑调教一区二区三区| 99国产麻豆精品| 欧美精品一区二区三区在线播放 | 一道本成人在线| 欧美电影免费观看完整版| 国产精品国产a| 久久99国产精品免费| 91免费国产在线| 久久久国产综合精品女国产盗摄| 亚洲色图在线播放| 久久99精品久久久久久国产越南| heyzo一本久久综合| 精品国免费一区二区三区| 亚洲视频免费在线| 国产不卡免费视频| 欧美精品久久久久久久多人混战 | 综合久久久久久久| 久久99久久99| 91麻豆精品91久久久久久清纯 | 日本免费新一区视频| 成人亚洲一区二区一| 日韩欧美国产一区二区在线播放| 亚洲乱码国产乱码精品精可以看| 亚洲成a天堂v人片| 国产成人免费在线观看| 日韩亚洲欧美一区| 亚洲成a人在线观看| 91精品办公室少妇高潮对白| 欧美激情在线一区二区| 国产乱码字幕精品高清av| 91麻豆精品91久久久久同性| 偷偷要91色婷婷| 欧美日本不卡视频| 午夜欧美在线一二页| 在线日韩一区二区| 亚洲精品国产第一综合99久久| eeuss鲁一区二区三区| 久久精品亚洲一区二区三区浴池| 韩日欧美一区二区三区| 日韩欧美在线一区二区三区| 首页国产欧美日韩丝袜| 91精品国产色综合久久ai换脸| 亚洲欧美日韩电影| 欧美吞精做爰啪啪高潮| 亚洲国产精品久久一线不卡| 色94色欧美sute亚洲线路一久| 亚洲日韩欧美一区二区在线| 成年人网站91| 亚洲三级理论片| 日本韩国欧美一区| 亚洲一级二级在线| 欧美性受xxxx黑人xyx| 亚洲国产三级在线| 51久久夜色精品国产麻豆| 青青草一区二区三区| 精品国产伦一区二区三区观看体验| 日韩精品一区第一页| 欧美一区二区女人| 国产乱子轮精品视频| 中文字幕一区二区三| 在线观看一区二区视频| 午夜精品在线视频一区| 26uuu亚洲综合色| 成人免费va视频| 亚洲国产综合91精品麻豆| 日韩精品一区二区三区老鸭窝| 国产精品夜夜嗨| 亚洲综合偷拍欧美一区色| 欧美一区欧美二区| 国产一区二区三区av电影 | 亚洲综合在线观看视频| 欧美精品成人一区二区三区四区| 六月婷婷色综合| 国产精品免费aⅴ片在线观看| 一本色道久久加勒比精品| 裸体健美xxxx欧美裸体表演| 中国av一区二区三区| 欧美日韩国产区一| 粉嫩一区二区三区性色av| 亚洲一区二区三区小说| 久久蜜桃av一区精品变态类天堂| 一本大道久久a久久精品综合| 免费观看日韩电影| 国产精品久久影院| 日韩精品一区二区三区视频播放| 99久久99精品久久久久久 | wwwwxxxxx欧美| 欧洲一区二区三区免费视频| 黄色成人免费在线| 亚洲18女电影在线观看| 亚洲国产精品成人综合| 欧美一区二区三区电影| 91亚洲精华国产精华精华液| 精品一区二区免费| 亚洲成人综合在线| 亚洲欧洲精品一区二区精品久久久 | 日韩一区二区三区电影 | 亚洲制服丝袜在线| 欧美国产日韩精品免费观看| 日韩三区在线观看| 欧美丝袜丝交足nylons图片| 成人激情av网| 国产精品亚洲人在线观看| 蜜桃一区二区三区在线| 亚洲丶国产丶欧美一区二区三区| 中文字幕中文字幕在线一区 | 国产精品麻豆久久久| 精品国产1区二区| 欧美一区二区在线不卡| 欧美日韩中文精品| 色狠狠一区二区三区香蕉| 成人av电影观看| 成人免费看片app下载| 国产乱理伦片在线观看夜一区| 麻豆精品新av中文字幕| 婷婷久久综合九色综合绿巨人| ...av二区三区久久精品| 国产精品久久久久久户外露出 | 色综合久久中文综合久久97| 成人小视频免费观看| 国产成人综合亚洲网站| 国产精品69毛片高清亚洲| 国产乱子轮精品视频| 国产一区二区按摩在线观看| 国产乱码精品一区二区三区忘忧草| 国产一区二区影院| 国产成人在线视频网站| 国产91精品在线观看| 岛国精品在线观看| 99精品国产热久久91蜜凸| 色老汉av一区二区三区| 欧美日韩不卡视频| 精品久久国产字幕高潮| 久久免费视频一区| 中文字幕不卡的av| 亚洲欧美激情一区二区| 亚洲永久免费av| 裸体健美xxxx欧美裸体表演| 国产一区二区三区观看| 国产91在线看| 91福利视频在线| 91麻豆精品91久久久久久清纯| 欧美成人aa大片| 中文字幕免费在线观看视频一区| 亚洲欧洲另类国产综合| 亚洲国产综合在线| 九色|91porny| 91蝌蚪porny| 日韩欧美一级精品久久| 日本一区二区动态图| 亚洲精品日产精品乱码不卡| 水蜜桃久久夜色精品一区的特点| 国产乱子轮精品视频| 一本久道中文字幕精品亚洲嫩| 欧美丰满高潮xxxx喷水动漫 | aa级大片欧美| 日韩午夜激情av| 亚洲欧洲日韩av| 免费在线观看一区二区三区| 东方aⅴ免费观看久久av| 欧美日韩国产综合久久| 国产三级精品三级| 亚洲3atv精品一区二区三区| 白白色 亚洲乱淫| 日韩一区二区三区四区五区六区|