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

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

?? qdos.c

?? zip壓縮
?? C
?? 第 1 頁 / 共 3 頁
字號:
                /* Some (non-Info-ZIP) implementations of Zip for Unix and                   VMS (and probably others ??) leave 0 in the upper 16-bit                   part of the external_file_attributes field. Instead, they                   store file permission attributes in some extra field.                   As a work-around, we search for the presence of one of                   these extra fields and fall back to the MSDOS compatible                   part of external_file_attributes if one of the known                   e.f. types has been detected.                   Later, we might implement extraction of the permission                   bits from the VMS extra field. But for now, the work-around                   should be sufficient to provide "readable" extracted files.                   (For ASI Unix e.f., an experimental remap of the e.f.                   mode value IS already provided!)                 */                ush ebID;                unsigned ebLen;                uch *ef = G.extra_field;                unsigned ef_len = G.crec.extra_field_length;                int r = FALSE;                while (!r && ef_len >= EB_HEADSIZE) {                    ebID = makeword(ef);                    ebLen = (unsigned)makeword(ef+EB_LEN);                    if (ebLen > (ef_len - EB_HEADSIZE))                        /* discoverd some e.f. inconsistency! */                        break;                    switch (ebID) {                      case EF_ASIUNIX:                        if (ebLen >= (EB_ASI_MODE+2)) {                            G.pInfo->file_attr =                              (unsigned)makeword(ef+(EB_HEADSIZE+EB_ASI_MODE));                            /* force stop of loop: */                            ef_len = (ebLen + EB_HEADSIZE);                            break;                        }                        /* else: fall through! */                      case EF_PKVMS:                        /* "found nondecypherable e.f. with perm. attr" */                        r = TRUE;                      default:                        break;                    }                    ef_len -= (ebLen + EB_HEADSIZE);                    ef += (ebLen + EB_HEADSIZE);                }                if (!r)                    return 0;            }            /* fall through! */        /* all remaining cases:  expand MSDOS read-only bit into write perms */        case FS_FAT_:            /* PKWARE's PKZip for Unix marks entries as FS_FAT_, but stores the             * Unix attributes in the upper 16 bits of the external attributes             * field, just like Info-ZIP's Zip for Unix.  We try to use that             * value, after a check for consistency with the MSDOS attribute             * bits (see below).             */            G.pInfo->file_attr = (unsigned)(tmp >> 16);            /* fall through! */        case FS_HPFS_:        case FS_NTFS_:        case MAC_:        case TOPS20_:        default:            /* Ensure that DOS subdir bit is set when the entry's name ends             * in a '/'.  Some third-party Zip programs fail to set the subdir             * bit for directory entries.             */            if ((tmp & 0x10) == 0) {                extent fnlen = strlen(G.filename);                if (fnlen > 0 && G.filename[fnlen-1] == '/')                    tmp |= 0x10;            }            /* read-only bit --> write perms; subdir bit --> dir exec bit */            tmp = !(tmp & 1) << 1  |  (tmp & 0x10) >> 4;            if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6))                /* keep previous G.pInfo->file_attr setting, when its "owner"                 * part appears to be consistent with DOS attribute flags!                 */                return 0;            G.pInfo->file_attr = (unsigned)(0444 | tmp<<6 | tmp<<3 | tmp);            break;    } /* end switch (host-OS-created-by) */    /* for originating systems with no concept of "group," "other," "system": */    umask( (int)(tmp=umask(0)) );    /* apply mask to expanded r/w(/x) perms */    G.pInfo->file_attr &= ~tmp;    return 0;} /* end function mapattr() *//************************//*  Function mapname()  *//************************/int mapname(__G__ renamed)    __GDEF    int renamed;/* * returns: *  MPN_OK          - no problem detected *  MPN_INF_TRUNC   - caution (truncated filename) *  MPN_INF_SKIP    - info "skip entry" (dir doesn't exist) *  MPN_ERR_SKIP    - error -> skip entry *  MPN_ERR_TOOLONG - error -> path is too long *  MPN_NOMEM       - error (memory allocation failed) -> skip entry *  [also MPN_VOL_LABEL, MPN_CREATED_DIR] */{    char pathcomp[FILNAMSIZ];      /* path-component buffer */    char *pp, *cp=(char *)NULL;    /* character pointers */    char *lastsemi=(char *)NULL;   /* pointer to last semi-colon in pathcomp */    int quote = FALSE;             /* flags */    int killed_ddot = FALSE;       /* is set when skipping "../" pathcomp */    int error = MPN_OK;    register unsigned workch;      /* hold the character being tested *//*---------------------------------------------------------------------------    Initialize various pointers and counters and stuff.  ---------------------------------------------------------------------------*/    if (G.pInfo->vollabel)        return MPN_VOL_LABEL;   /* can't set disk volume labels in SMS/QDOS */    /* can create path as long as not just freshening, or if user told us */    G.create_dirs = (!uO.fflag || renamed);    created_dir = FALSE;        /* not yet */    /* user gave full pathname:  don't prepend rootpath */    renamed_fullpath = (renamed && (*G.filename == '/'));    if (checkdir(__G__ (char *)NULL, INIT) == MPN_NOMEM)        return MPN_NOMEM;       /* initialize path buffer, unless no memory */    *pathcomp = '\0';           /* initialize translation buffer */    pp = pathcomp;              /* point to translation buffer */    if (uO.jflag)               /* junking directories */        cp = (char *)strrchr(G.filename, '/');    if (cp == (char *)NULL)     /* no '/' or not junking dirs */        cp = G.filename;        /* point to internal zipfile-member pathname */    else        ++cp;                   /* point to start of last component of path *//*---------------------------------------------------------------------------    Begin main loop through characters in filename.  ---------------------------------------------------------------------------*/    while ((workch = (uch)*cp++) != 0) {        if (quote) {                 /* if character quoted, */            *pp++ = (char)workch;    /*  include it literally */            quote = FALSE;        } else            switch (workch) {            case '/':             /* can assume -j flag not given */                *pp = '\0';                if (((error = checkdir(__G__ pathcomp, APPEND_DIR)) & MPN_MASK)                     > MPN_INF_TRUNC)                    return error;                pp = pathcomp;    /* reset conversion buffer for next piece */                lastsemi = (char *)NULL; /* leave directory semi-colons alone */                break;            case '.':                if (pp == pathcomp) {   /* nothing appended yet... */                    if (*cp == '/') {   /* don't bother appending "./" to */                        ++cp;           /*  the path: skip behind the '/' */                        break;                    } else if (!uO.ddotflag && *cp == '.' && cp[1] == '/') {                        /* "../" dir traversal detected */                        cp += 2;        /*  skip over behind the '/' */                        killed_ddot = TRUE; /*  set "show message" flag */                        break;                    }                }                *pp++ = (((qlflag & 1) == 0) ? '_' : '.');                break;            case ';':             /* VMS version (or DEC-20 attrib?) */                lastsemi = pp;                *pp++ = ';';      /* keep for now; remove VMS ";##" */                break;            /*  later, if requested */            case '\026':          /* control-V quote for special chars */                quote = TRUE;     /* set flag for next character */                break;            default:                /* allow European characters in filenames: */                if (isprint(workch) || (128 <= workch && workch <= 254))                    *pp++ = (char)workch;            } /* end switch */    } /* end while loop */    /* Show warning when stripping insecure "parent dir" path components */    if (killed_ddot && QCOND2) {        Info(slide, 0, ((char *)slide,          "warning:  skipped \"../\" path component(s) in %s\n",          FnFilter1(G.filename)));        if (!(error & ~MPN_MASK))            error = (error & MPN_MASK) | PK_WARN;    }/*---------------------------------------------------------------------------    Report if directory was created (and no file to create:  filename ended    in '/'), check name to be sure it exists, and combine path and name be-    fore exiting.  ---------------------------------------------------------------------------*/    if (G.filename[strlen(G.filename) - 1] == '/') {        G.filename[strlen(G.filename) - 1] = '_';        checkdir(__G__ G.filename, GETPATH);        if (created_dir) {            if (QCOND2) {                Info(slide, 0, ((char *)slide, "   creating: %s\n",                  FnFilter1(G.filename)));            }            /* set dir time (note trailing '/') */            return (error & ~MPN_MASK) | MPN_CREATED_DIR;        }        /* dir existed already; don't look for data to extract */        return (error & ~MPN_MASK) | MPN_INF_SKIP;    }    *pp = '\0';                   /* done with pathcomp:  terminate it */    /* if not saving them, remove VMS version numbers (appended ";###") */    if (!uO.V_flag && lastsemi) {        pp = lastsemi + 1;        while (isdigit((uch)(*pp)))            ++pp;        if (*pp == '\0')          /* only digits between ';' and end:  nuke */            *lastsemi = '\0';    }    if (*pathcomp == '\0') {        Info(slide, 1, ((char *)slide, "mapname:  conversion of %s failed\n",          FnFilter1(G.filename)));        return (error & ~MPN_MASK) | MPN_ERR_SKIP;    }    checkdir(__G__ pathcomp, APPEND_NAME);  /* returns 1 if truncated: care? */    checkdir(__G__ G.filename, GETPATH);    return error;} /* end function mapname() *//***********************//* Function checkdir() *//***********************/int checkdir(__G__ pathcomp, flag)    __GDEF    char *pathcomp;    int flag;/* * returns: *  MPN_OK          - no problem detected *  MPN_INF_TRUNC   - (on APPEND_NAME) truncated filename *  MPN_INF_SKIP    - path doesn't exist, not allowed to create *  MPN_ERR_SKIP    - path doesn't exist, tried to create and failed; or path *                    exists and is not a directory, but is supposed to be *  MPN_ERR_TOOLONG - path is too long *  MPN_NOMEM       - can't allocate memory for filename buffers */{    static int rootlen = 0;   /* length of rootpath */    static char *rootpath;    /* user's "extract-to" directory */    static char *buildpath;   /* full path (so far) to extracted file */    static char *end;         /* pointer to end of buildpath ('\0') */#   define FN_MASK   7#   define FUNCTION  (flag & FN_MASK)/*---------------------------------------------------------------------------    APPEND_DIR:  append the path component to the path being built and check    for its existence.  If doesn't exist and we are creating directories, do    so for this one; else signal success or error as appropriate.  ---------------------------------------------------------------------------*/    if (FUNCTION == APPEND_DIR) {        int too_long = FALSE;#ifdef SHORT_NAMES        char *old_end = end;#endif        Trace((stderr, "appending dir segment [%s]\n", FnFilter1(pathcomp)));        while ((*end = *pathcomp++) != '\0')            ++end;#ifdef SHORT_NAMES   /* path components restricted to 14 chars, typically */        if ((end-old_end) > FILENAME_MAX)  /* GRR:  proper constant? */            *(end = old_end + FILENAME_MAX) = '\0';#endif        /* GRR:  could do better check, see if overrunning buffer as we go:         * check end-buildpath after each append, set warning variable if         * within 20 of FILNAMSIZ; then if var set, do careful check when         * appending.  Clear variable when begin new path. */        if ((end-buildpath) > FILNAMSIZ-2)  /* need '/', one-char name, '\0' */            too_long = TRUE;                /* check if extracting directory? */        if (stat(buildpath, &G.statbuf)) {  /* path doesn't exist */            if (!G.create_dirs) { /* told not to create (freshening) */                free(buildpath);                return MPN_INF_SKIP;    /* path doesn't exist: nothing to do */            }            if (too_long) {                Info(slide, 1, ((char *)slide,                  "checkdir error:  path too long: %s\n",                  FnFilter1(buildpath)));                free(buildpath);                /* no room for filenames:  fatal */                return MPN_ERR_TOOLONG;            }            if (mkdir(buildpath, 0777) == -1) {   /* create the directory */                Info(slide, 1, ((char *)slide,                  "checkdir error:  cannot create %s\n\                 unable to process %s.\n",                  FnFilter2(buildpath), FnFilter1(G.filename)));                free(buildpath);                /* path didn't exist, tried to create, failed */                return MPN_ERR_SKIP;            }            created_dir = TRUE;        } else if (!S_ISDIR(G.statbuf.st_mode)) {            Info(slide, 1, ((char *)slide,              "checkdir error:  %s exists but is not directory\n\                 unable to process %s.\n",              FnFilter2(buildpath), FnFilter1(G.filename)));            free(buildpath);            /* path existed but wasn't dir */            return MPN_ERR_SKIP;        }        if (too_long) {            Info(slide, 1, ((char *)slide,              "checkdir error:  path too long: %s\n", FnFilter1(buildpath)));            free(buildpath);            /* no room for filenames:  fatal */            return MPN_ERR_TOOLONG;        }        *end++ = '_';        *end = '\0';        Trace((stderr, "buildpath now = [%s]\n", FnFilter1(buildpath)));        return MPN_OK;    } /* end if (FUNCTION == APPEND_DIR) *//*---------------------------------------------------------------------------    GETPATH:  copy full path to the string pointed at by pathcomp, and free    buildpath.  ---------------------------------------------------------------------------*/    if (FUNCTION == GETPATH) {        strcpy(pathcomp, buildpath);        Trace((stderr, "getting and freeing path [%s]\n",          FnFilter1(pathcomp)));        free(buildpath);        buildpath = end = (char *)NULL;        return MPN_OK;    }/*---------------------------------------------------------------------------    APPEND_NAME:  assume the path component is the filename; append it and    return without checking for existence.  ---------------------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩极品在线观看一区| 日韩一区日韩二区| 51精品国自产在线| 在线亚洲欧美专区二区| av福利精品导航| 成人av网址在线| 波多野结衣亚洲一区| 成人av高清在线| www.亚洲人| 欧美成人vr18sexvr| 日韩一卡二卡三卡国产欧美| 欧美一区二区三区免费视频| 91麻豆精品国产| 日韩视频一区二区| 精品国产91九色蝌蚪| 久久精品欧美一区二区三区麻豆| 久久久久久久综合色一本| 2022国产精品视频| 国产欧美日韩在线观看| 国产精品不卡一区二区三区| 亚洲私人影院在线观看| 一区二区三区国产| 亚洲第一福利一区| 男女激情视频一区| 国产一区二区三区免费| 成人激情动漫在线观看| 91亚洲精品久久久蜜桃| 欧美视频你懂的| 欧美一级理论片| 久久亚洲综合色一区二区三区| 国产亚洲一区二区三区四区| 日韩一区有码在线| 亚洲福利视频三区| 蜜桃视频第一区免费观看| 国产麻豆精品久久一二三| 波多野结衣在线一区| 欧美性色黄大片手机版| 精品久久久久久久久久久院品网| 国产欧美日韩三区| 一区二区欧美视频| 免费的成人av| 99精品视频一区二区| 欧美精品久久久久久久多人混战 | 久久99精品久久久| 国产69精品久久777的优势| 一道本成人在线| 日韩欧美资源站| 国产精品黄色在线观看| 午夜伊人狠狠久久| 国产精品一二三区在线| 91久久线看在观草草青青| 日韩三级.com| 亚洲欧美激情一区二区| 日本vs亚洲vs韩国一区三区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产精品一区二区果冻传媒| 99在线热播精品免费| 91精品国产aⅴ一区二区| 国产精品视频免费| 日韩在线一二三区| www.亚洲在线| 精品国产精品一区二区夜夜嗨| 中文字幕中文在线不卡住| 日韩 欧美一区二区三区| 91同城在线观看| 日韩女同互慰一区二区| 亚洲激情男女视频| 欧美精品亚洲二区| 中文字幕第一区| 另类小说色综合网站| 在线观看视频一区二区| 国产欧美一区二区精品婷婷| 视频一区二区不卡| 91丨porny丨国产| 国产色综合一区| 免费高清不卡av| 欧美日精品一区视频| 国产精品国产精品国产专区不蜜 | 国产精品女主播av| 麻豆精品视频在线| 欧美日韩三级一区二区| 亚洲少妇中出一区| 大美女一区二区三区| 精品国产免费一区二区三区四区| 亚洲国产色一区| 日本道色综合久久| 国产精品久久三| 国产成人精品免费在线| 欧美精品一区二区在线播放| 日韩电影在线观看电影| 欧美日韩亚洲综合一区 | 久久精品国产精品亚洲综合| 精品视频一区三区九区| 亚洲人成精品久久久久久| 国产成人小视频| 久久久99精品免费观看不卡| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲国产一区视频| 99久久国产综合精品色伊| 中文字幕免费观看一区| 国产精品一区免费在线观看| 欧美成人三级在线| 日本不卡的三区四区五区| 欧美精品一级二级| 婷婷开心激情综合| 欧美日本精品一区二区三区| 亚洲小少妇裸体bbw| 色系网站成人免费| 一区二区高清视频在线观看| 在线观看一区二区视频| 亚洲精品视频一区二区| 欧美午夜精品一区| 一区二区三区不卡视频 | 国产日韩亚洲欧美综合| 国产一区美女在线| 久久精品一区二区| 国产高清精品网站| 国产精品色呦呦| 99精品视频在线免费观看| 亚洲精品中文字幕乱码三区| 在线观看av一区二区| 午夜精品成人在线| 91精品欧美一区二区三区综合在| 毛片av中文字幕一区二区| 精品国产91亚洲一区二区三区婷婷| 国产精品一区二区在线观看不卡| 国产无遮挡一区二区三区毛片日本| 国产成人免费在线观看| 成人欧美一区二区三区小说| 精品久久久久久久久久久院品网| 国产乱码精品一区二区三区忘忧草| 国产女人18毛片水真多成人如厕| 本田岬高潮一区二区三区| 亚洲激情一二三区| 欧美一区二区免费视频| 国产永久精品大片wwwapp| 中文字幕色av一区二区三区| 欧洲亚洲精品在线| 免费观看在线综合| 久久久精品人体av艺术| 91麻豆免费观看| 日日摸夜夜添夜夜添亚洲女人| 精品美女一区二区三区| 成人深夜视频在线观看| 亚洲福利一二三区| 精品久久久久av影院| 成人高清在线视频| 午夜欧美电影在线观看| 精品国偷自产国产一区| 成人avav影音| 日韩不卡一二三区| 中文字幕欧美国产| 欧美精品亚洲一区二区在线播放| 国产剧情av麻豆香蕉精品| 亚洲男人的天堂一区二区| 欧美一三区三区四区免费在线看| 丰满放荡岳乱妇91ww| 亚洲一区二区三区视频在线播放| 日韩精品一区二| 色哦色哦哦色天天综合| 韩国一区二区视频| 亚洲精品成人天堂一二三| 日韩精品影音先锋| 色综合久久综合网欧美综合网| 玖玖九九国产精品| 又紧又大又爽精品一区二区| 日韩精品一区二区三区swag| 色播五月激情综合网| 国产一区二区看久久| 亚洲国产成人va在线观看天堂| 久久女同性恋中文字幕| 在线观看中文字幕不卡| 国产成人免费在线观看不卡| 日本欧美加勒比视频| 亚洲三级在线看| 久久嫩草精品久久久久| 欧美肥妇bbw| 91浏览器打开| 国产一区二区三区在线观看免费 | 在线免费观看日本欧美| 国产乱码精品一区二区三区av| 午夜精品福利一区二区三区av| 国产精品久线在线观看| 精品福利一二区| 欧美日韩国产在线观看| 91小视频在线免费看| 国产福利视频一区二区三区| 免费成人av在线| 亚洲国产综合在线| 亚洲欧美日韩人成在线播放| 久久精品欧美一区二区三区麻豆| 日韩一级黄色片| 欧美猛男超大videosgay| 91色综合久久久久婷婷| 成人自拍视频在线观看| 国内不卡的二区三区中文字幕| 日韩精品免费视频人成| 亚洲成人免费在线| 一区二区成人在线视频| 亚洲美女电影在线|