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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lock.c

?? apache服務(wù)器源代碼(版本號:2.2.2)
?? C
?? 第 1 頁 / 共 4 頁
字號:
    apr_datum_t key;    /* ### does this allocation have a proper lifetime? need to check */    /* ### can we use a buffer for this? */    /* size is TYPE + pathname + null */    key.dsize = strlen(pathname) + 2;    key.dptr = apr_palloc(p, key.dsize);    *key.dptr = DAV_TYPE_FNAME;    memcpy(key.dptr + 1, pathname, key.dsize - 1);    if (key.dptr[key.dsize - 2] == '/')        key.dptr[--key.dsize - 1] = '\0';    return key;}/*** dav_fs_build_key:  Given a resource, return a apr_datum_t key**    to look up lock information for this file.****    (inode/dev not supported or file is lock-null):**       apr_datum_t->dvalue = full path****    (inode/dev supported and file exists ):**       apr_datum_t->dvalue = inode, dev*/static apr_datum_t dav_fs_build_key(apr_pool_t *p,                                    const dav_resource *resource){    const char *file = dav_fs_pathname(resource);    apr_datum_t key;    apr_finfo_t finfo;    apr_status_t rv;    /* ### use lstat() ?? */    /*     * XXX: What for platforms with no IDENT (dev/inode)?     */    rv = apr_stat(&finfo, file, APR_FINFO_IDENT, p);    if ((rv == APR_SUCCESS || rv == APR_INCOMPLETE)        && ((finfo.valid & APR_FINFO_IDENT) == APR_FINFO_IDENT))    {        /* ### can we use a buffer for this? */        key.dsize = 1 + sizeof(finfo.inode) + sizeof(finfo.device);        key.dptr = apr_palloc(p, key.dsize);        *key.dptr = DAV_TYPE_INODE;        memcpy(key.dptr + 1, &finfo.inode, sizeof(finfo.inode));        memcpy(key.dptr + 1 + sizeof(finfo.inode), &finfo.device,               sizeof(finfo.device));        return key;    }    return dav_fs_build_fname_key(p, file);}/*** dav_fs_lock_expired:  return 1 (true) if the given timeout is in the past**    or present (the lock has expired), or 0 (false) if in the future**    (the lock has not yet expired).*/static int dav_fs_lock_expired(time_t expires){    return expires != DAV_TIMEOUT_INFINITE && time(NULL) >= expires;}/*** dav_fs_save_lock_record:  Saves the lock information specified in the**    direct and indirect lock lists about path into the lock database.**    If direct and indirect == NULL, the key is removed.*/static dav_error * dav_fs_save_lock_record(dav_lockdb *lockdb, apr_datum_t key,                                           dav_lock_discovery *direct,                                           dav_lock_indirect *indirect){    dav_error *err;    apr_datum_t val = { 0 };    char *ptr;    dav_lock_discovery *dp = direct;    dav_lock_indirect *ip = indirect;#if DAV_DEBUG    if (lockdb->ro) {        return dav_new_error(lockdb->info->pool,                             HTTP_INTERNAL_SERVER_ERROR, 0,                             "INTERNAL DESIGN ERROR: the lockdb was opened "                             "readonly, but an attempt to save locks was "                             "performed.");    }#endif    if ((err = dav_fs_really_open_lockdb(lockdb)) != NULL) {        /* ### add a higher-level error? */        return err;    }    /* If nothing to save, delete key */    if (dp == NULL && ip == NULL) {        /* don't fail if the key is not present */        /* ### but what about other errors? */        (void) dav_dbm_delete(lockdb->info->db, key);        return NULL;    }    while(dp) {        val.dsize += dav_size_direct(dp);        dp = dp->next;    }    while(ip) {        val.dsize += dav_size_indirect(ip);        ip = ip->next;    }    /* ### can this be apr_palloc() ? */    /* ### hmmm.... investigate the use of a buffer here */    ptr = val.dptr = apr_pcalloc(lockdb->info->pool, val.dsize);    dp  = direct;    ip  = indirect;    while(dp) {        *ptr++ = DAV_LOCK_DIRECT;   /* Direct lock - lock_discovery struct follows */        memcpy(ptr, dp, sizeof(dp->f));   /* Fixed portion of struct */        ptr += sizeof(dp->f);        memcpy(ptr, dp->locktoken, sizeof(*dp->locktoken));        ptr += sizeof(*dp->locktoken);        if (dp->owner == NULL) {            *ptr++ = '\0';        }        else {            memcpy(ptr, dp->owner, strlen(dp->owner) + 1);            ptr += strlen(dp->owner) + 1;        }        if (dp->auth_user == NULL) {            *ptr++ = '\0';        }        else {            memcpy(ptr, dp->auth_user, strlen(dp->auth_user) + 1);            ptr += strlen(dp->auth_user) + 1;        }        dp = dp->next;    }    while(ip) {        *ptr++ = DAV_LOCK_INDIRECT;   /* Indirect lock prefix */        memcpy(ptr, ip->locktoken, sizeof(*ip->locktoken));   /* Locktoken */        ptr += sizeof(*ip->locktoken);        memcpy(ptr, &ip->timeout, sizeof(ip->timeout));   /* Expire time */        ptr += sizeof(ip->timeout);        memcpy(ptr, &ip->key.dsize, sizeof(ip->key.dsize));   /* Size of key */        ptr += sizeof(ip->key.dsize);        memcpy(ptr, ip->key.dptr, ip->key.dsize);   /* Key data */        ptr += ip->key.dsize;        ip = ip->next;    }    if ((err = dav_dbm_store(lockdb->info->db, key, val)) != NULL) {        /* ### more details? add an error_id? */        return dav_push_error(lockdb->info->pool,                              HTTP_INTERNAL_SERVER_ERROR,                              DAV_ERR_LOCK_SAVE_LOCK,                              "Could not save lock information.",                              err);    }    return NULL;}/*** dav_load_lock_record:  Reads lock information about key from lock db;**    creates linked lists of the direct and indirect locks.****    If add_method = DAV_APPEND_LIST, the result will be appended to the**    head of the direct and indirect lists supplied.****    Passive lock removal:  If lock has timed out, it will not be returned.**    ### How much "logging" does RFC 2518 require?*/static dav_error * dav_fs_load_lock_record(dav_lockdb *lockdb, apr_datum_t key,                                           int add_method,                                           dav_lock_discovery **direct,                                           dav_lock_indirect **indirect){    apr_pool_t *p = lockdb->info->pool;    dav_error *err;    apr_size_t offset = 0;    int need_save = DAV_FALSE;    apr_datum_t val = { 0 };    dav_lock_discovery *dp;    dav_lock_indirect *ip;    dav_buffer buf = { 0 };    if (add_method != DAV_APPEND_LIST) {        *direct = NULL;        *indirect = NULL;    }    if ((err = dav_fs_really_open_lockdb(lockdb)) != NULL) {        /* ### add a higher-level error? */        return err;    }    /*    ** If we opened readonly and the db wasn't there, then there are no    ** locks for this resource. Just exit.    */    if (lockdb->info->db == NULL)        return NULL;    if ((err = dav_dbm_fetch(lockdb->info->db, key, &val)) != NULL)        return err;    if (!val.dsize)        return NULL;    while (offset < val.dsize) {        switch (*(val.dptr + offset++)) {        case DAV_LOCK_DIRECT:            /* Create and fill a dav_lock_discovery structure */            dp = apr_pcalloc(p, sizeof(*dp));            memcpy(dp, val.dptr + offset, sizeof(dp->f));            offset += sizeof(dp->f);            dp->locktoken = apr_palloc(p, sizeof(*dp->locktoken));            memcpy(dp->locktoken, val.dptr + offset, sizeof(*dp->locktoken));            offset += sizeof(*dp->locktoken);            if (*(val.dptr + offset) == '\0') {                ++offset;            }            else {                dp->owner = apr_pstrdup(p, val.dptr + offset);                offset += strlen(dp->owner) + 1;            }            if (*(val.dptr + offset) == '\0') {                ++offset;            }            else {                dp->auth_user = apr_pstrdup(p, val.dptr + offset);                offset += strlen(dp->auth_user) + 1;            }            if (!dav_fs_lock_expired(dp->f.timeout)) {                dp->next = *direct;                *direct = dp;            }            else {                need_save = DAV_TRUE;                /* Remove timed-out locknull fm .locknull list */                if (*key.dptr == DAV_TYPE_FNAME) {                    const char *fname = key.dptr + 1;                    apr_finfo_t finfo;                    apr_status_t rv;                    /* if we don't see the file, then it's a locknull */                    rv = apr_stat(&finfo, fname, APR_FINFO_MIN | APR_FINFO_LINK, p);                    if (rv != APR_SUCCESS && rv != APR_INCOMPLETE) {                        if ((err = dav_fs_remove_locknull_member(p, fname, &buf)) != NULL) {                            /* ### push a higher-level description? */                            return err;                        }                    }                }            }            break;        case DAV_LOCK_INDIRECT:            /* Create and fill a dav_lock_indirect structure */            ip = apr_pcalloc(p, sizeof(*ip));            ip->locktoken = apr_palloc(p, sizeof(*ip->locktoken));            memcpy(ip->locktoken, val.dptr + offset, sizeof(*ip->locktoken));            offset += sizeof(*ip->locktoken);            memcpy(&ip->timeout, val.dptr + offset, sizeof(ip->timeout));            offset += sizeof(ip->timeout);            memcpy(&ip->key.dsize, val.dptr + offset, sizeof(ip->key.dsize)); /* length of datum */            offset += sizeof(ip->key.dsize);            ip->key.dptr = apr_palloc(p, ip->key.dsize);            memcpy(ip->key.dptr, val.dptr + offset, ip->key.dsize);            offset += ip->key.dsize;            if (!dav_fs_lock_expired(ip->timeout)) {                ip->next = *indirect;                *indirect = ip;            }            else {                need_save = DAV_TRUE;                /* A locknull resource will never be locked indirectly */            }            break;        default:            dav_dbm_freedatum(lockdb->info->db, val);            /* ### should use a computed_desc and insert corrupt token data */            --offset;            return dav_new_error(p,                                 HTTP_INTERNAL_SERVER_ERROR,                                 DAV_ERR_LOCK_CORRUPT_DB,                                 apr_psprintf(p,                                             "The lock database was found to "                                             "be corrupt. offset %"                                             APR_SIZE_T_FMT ", c=%02x",                                             offset, val.dptr[offset]));        }    }    dav_dbm_freedatum(lockdb->info->db, val);    /* Clean up this record if we found expired locks */    /*    ** ### shouldn't do this if we've been opened READONLY. elide the    ** ### timed-out locks from the response, but don't save that info back    */    if (need_save == DAV_TRUE) {        return dav_fs_save_lock_record(lockdb, key, *direct, *indirect);    }    return NULL;}/* resolve <indirect>, returning <*direct> */static dav_error * dav_fs_resolve(dav_lockdb *lockdb,                                  dav_lock_indirect *indirect,                                  dav_lock_discovery **direct,                                  dav_lock_discovery **ref_dp,                                  dav_lock_indirect **ref_ip){    dav_error *err;    dav_lock_discovery *dir;    dav_lock_indirect *ind;    if ((err = dav_fs_load_lock_record(lockdb, indirect->key,                                       DAV_CREATE_LIST,                                       &dir, &ind)) != NULL) {        /* ### insert a higher-level description? */        return err;    }    if (ref_dp != NULL) {        *ref_dp = dir;        *ref_ip = ind;    }    for (; dir != NULL; dir = dir->next) {        if (!dav_compare_locktoken(indirect->locktoken, dir->locktoken)) {            *direct = dir;            return NULL;        }    }    /* No match found (but we should have found one!) */    /* ### use a different description and/or error ID? */    return dav_new_error(lockdb->info->pool,                         HTTP_INTERNAL_SERVER_ERROR,                         DAV_ERR_LOCK_CORRUPT_DB,                         "The lock database was found to be corrupt. "                         "An indirect lock's direct lock could not "                         "be found.");}/* ---------------------------------------------------------------**** Property-related lock functions***//*** dav_fs_get_supportedlock:  Returns a static string for all supportedlock**    properties. I think we save more returning a static string than**    constructing it every time, though it might look cleaner.*/static const char *dav_fs_get_supportedlock(const dav_resource *resource){    static const char supported[] = DEBUG_CR        "<D:lockentry>" DEBUG_CR        "<D:lockscope><D:exclusive/></D:lockscope>" DEBUG_CR        "<D:locktype><D:write/></D:locktype>" DEBUG_CR        "</D:lockentry>" DEBUG_CR

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久久久久久久 | 高清成人在线观看| 久久综合久久综合亚洲| 国产69精品一区二区亚洲孕妇| 国产精品久久久爽爽爽麻豆色哟哟 | 日韩在线一二三区| 日韩欧美一区在线| 99视频国产精品| 免费在线观看一区二区三区| 精品国产1区二区| 91在线小视频| 国产美女精品在线| 亚洲国产视频一区| 欧美国产日韩a欧美在线观看| 色嗨嗨av一区二区三区| 精品一区二区久久| 性做久久久久久久免费看| 美女免费视频一区| 亚洲一区成人在线| 欧美国产日韩一二三区| 日韩中文欧美在线| 日韩精品专区在线影院观看| 成人av在线观| 精东粉嫩av免费一区二区三区| 亚洲色图欧洲色图| 久久久99精品久久| 欧美一级黄色片| 色老头久久综合| 99国产精品久久久| 国产91丝袜在线观看| 精品在线免费观看| 三级久久三级久久久| 亚洲午夜久久久久中文字幕久| 26uuu久久综合| 精品欧美乱码久久久久久| 欧美日韩国产一级片| 91福利在线播放| 粉嫩在线一区二区三区视频| 日本欧美久久久久免费播放网| 亚洲国产精品一区二区久久| 国产精品乱码一区二区三区软件| 久久这里只精品最新地址| 日韩欧美激情在线| 久久久91精品国产一区二区精品| 日韩欧美综合在线| www欧美成人18+| 国产欧美一区二区精品仙草咪| 日韩欧美专区在线| 欧美一级高清片| 欧美精品一区二区高清在线观看| 欧美一区二区三区色| 久久综合视频网| 日韩免费成人网| 久久久蜜臀国产一区二区| 精品国产免费一区二区三区四区 | 亚洲午夜av在线| 亚洲一区影音先锋| 国产在线播精品第三| 国产精品资源在线观看| 96av麻豆蜜桃一区二区| 97久久人人超碰| 51精品久久久久久久蜜臀| 国产女主播视频一区二区| 亚洲一区在线观看免费观看电影高清| 91麻豆精品91久久久久同性| 精品久久久久久久久久久久包黑料| 欧美国产一区在线| 亚洲亚洲精品在线观看| 奇米在线7777在线精品| 97国产一区二区| 久久久久久久久伊人| 日韩精品一级中文字幕精品视频免费观看 | 国产精品色在线| 偷偷要91色婷婷| 97精品视频在线观看自产线路二| 91精品午夜视频| 亚洲一区日韩精品中文字幕| 国产99精品在线观看| 91精品国产综合久久福利| 亚洲国产高清在线| 国产成人精品午夜视频免费| 欧美岛国在线观看| 麻豆成人在线观看| 欧美精品v国产精品v日韩精品| 亚洲制服欧美中文字幕中文字幕| 粉嫩蜜臀av国产精品网站| 中文字幕综合网| 99re视频这里只有精品| 亚洲欧美在线高清| 91麻豆精品视频| 亚洲人成精品久久久久久| 91在线丨porny丨国产| 中文字幕亚洲成人| 成人性色生活片| 91精品国产综合久久久久| 日韩av中文在线观看| 精品国产乱码久久久久久久 | 国产精品亚洲一区二区三区在线| 精品99久久久久久| 99精品久久久久久| 亚欧色一区w666天堂| 精品福利一区二区三区免费视频| 国产精品自在在线| 一区二区三区在线影院| 欧美精品色综合| 蜜桃91丨九色丨蝌蚪91桃色| 中文字幕av免费专区久久| 欧美日韩精品免费观看视频| 国产一区二区视频在线| 国产亚洲精品免费| 欧美性受xxxx黑人xyx性爽| 麻豆视频一区二区| 一区二区在线免费| 337p日本欧洲亚洲大胆精品| 色婷婷久久久综合中文字幕| 久久精品99国产精品| 亚洲柠檬福利资源导航| 欧美xxx久久| 欧美性一区二区| 成人福利视频在线| 免费成人小视频| 亚洲一区二区三区不卡国产欧美| 欧美精品一区二区三区蜜桃| 欧美精品久久一区| 国产成人免费视频一区| 精品中文av资源站在线观看| 日韩在线一区二区三区| 亚洲同性同志一二三专区| 久久久久久久久久久电影| 欧美一区欧美二区| 精品视频999| 欧美日本在线视频| 91视视频在线观看入口直接观看www| 麻豆国产91在线播放| 美女视频一区二区三区| 亚洲成人av一区二区三区| 亚洲图片欧美色图| 亚洲国产精品久久一线不卡| 日韩伦理av电影| 亚洲综合免费观看高清完整版在线| 国产欧美一区在线| 丁香五精品蜜臀久久久久99网站| 国产成人午夜精品影院观看视频| 国产一区二区三区久久久| 国产麻豆精品久久一二三| 国产精品一色哟哟哟| 国产高清不卡二三区| 丁香婷婷深情五月亚洲| 91在线视频免费观看| 欧美精品久久久久久久久老牛影院| 精品视频一区二区三区免费| 日韩一区二区三| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 成人sese在线| 欧美日韩中文字幕一区| 7777精品伊人久久久大香线蕉超级流畅 | 久久蜜臀中文字幕| 亚洲婷婷综合色高清在线| 亚洲欧美日韩系列| 亚洲成人精品影院| 国产乱码精品一区二区三| 91极品美女在线| 欧美大度的电影原声| 中文字幕一区二区三区视频| 亚洲精品国产成人久久av盗摄| 男人的天堂亚洲一区| 99久久精品99国产精品| 欧美电视剧免费观看| 国产精品久久网站| 国产一区二区免费看| 欧美三级日韩三级| 国产偷国产偷亚洲高清人白洁| 一区二区三区波多野结衣在线观看| 免费人成精品欧美精品| 一本高清dvd不卡在线观看| 2021国产精品久久精品| 亚洲国产视频一区| 99国产精品久久久久| 日韩精品最新网址| 麻豆专区一区二区三区四区五区| 日本韩国欧美一区二区三区| 国产亚洲美州欧州综合国| 麻豆精品新av中文字幕| 日本福利一区二区| 亚洲免费观看在线视频| 国产91精品一区二区麻豆亚洲| 欧美电视剧在线观看完整版| 亚洲激情自拍视频| 极品美女销魂一区二区三区| 日韩精品资源二区在线| 日韩精品一卡二卡三卡四卡无卡| 欧美日韩国产综合视频在线观看| 一级精品视频在线观看宜春院| 色综合久久久久网| 一区二区不卡在线播放| 欧美日韩免费在线视频| 免费成人美女在线观看.| 欧美久久久久久久久久| 免费看日韩精品| 久久精品在线免费观看|