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

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

?? os2.c

?? zip壓縮
?? C
?? 第 1 頁 / 共 5 頁
字號:
 *  [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 */#ifdef ACORN_FTYPE_NFS    char *lastcomma=(char *)NULL;  /* pointer to last comma in pathcomp */    RO_extra_block *ef_spark;      /* pointer Acorn FTYPE ef block */#endif    int quote = FALSE;             /* flag:  next char is literal */    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.  ---------------------------------------------------------------------------*/    /* can create path as long as not just freshening, or if user told us */    G.create_dirs = (!uO.fflag || renamed);    G.os2.created_dir = FALSE;  /* not yet */    G.os2.renamed_fullpath = FALSE;    G.os2.fnlen = strlen(G.filename);/* GRR:  for VMS, convert to internal format now or later? or never? */    if (renamed) {        cp = G.filename - 1;    /* point to beginning of renamed name... */        while (*++cp)            if (*cp == '\\')    /* convert backslashes to forward */                *cp = '/';        cp = G.filename;        /* use temporary rootpath if user gave full pathname */        if (G.filename[0] == '/') {            G.os2.renamed_fullpath = TRUE;            pathcomp[0] = '/';  /* copy the '/' and terminate */            pathcomp[1] = '\0';            ++cp;        } else if (isalpha((uch)G.filename[0]) && G.filename[1] == ':') {            G.os2.renamed_fullpath = TRUE;            pp = pathcomp;            *pp++ = *cp++;      /* copy the "d:" (+ '/', possibly) */            *pp++ = *cp++;            if (*cp == '/')                *pp++ = *cp++;  /* otherwise add "./"? */            *pp = '\0';        }    }    /* pathcomp is ignored unless renamed_fullpath is TRUE: */    if ((error = checkdir(__G__ pathcomp, INIT)) != 0)    /* init path buffer */        return error;           /* ...unless no mem or vol label on hard disk */    *pathcomp = '\0';           /* initialize translation buffer */    pp = pathcomp;              /* point to translation buffer */    if (!renamed) {             /* cp already set if renamed */        if (uO.jflag)           /* junking directories *//* GRR:  watch out for VMS version... */            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++ = '.';                break;            case ':':                *pp++ = '_';      /* drive names not stored in zipfile, */                break;            /*  so no colons allowed */            case ';':             /* start of VMS version? */                lastsemi = pp;    /* remove VMS version later... */                *pp++ = ';';      /*  but keep semicolon for now */                break;#ifdef ACORN_FTYPE_NFS            case ',':             /* NFS filetype extension */                lastcomma = pp;                *pp++ = ',';      /* keep for now; may need to remove */                break;            /*  later, if requested */#endif            case '\026':          /* control-V quote for special chars */                quote = TRUE;     /* set flag for next character */                break;            case ' ':             /* keep spaces unless specifically */                if (uO.sflag)     /*  requested to change to underscore */                    *pp++ = '_';                else                    *pp++ = ' ';                break;            default:                /* allow ASCII 255 and European characters in filenames: */                if (isprint(workch) || workch >= 127)                    *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, LoadFarString(WarnDirTraversSkip),          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[G.os2.fnlen-1] == '/') {        checkdir(__G__ G.filename, GETPATH);        if (G.os2.created_dir) {            if (QCOND2)                Info(slide, 0, ((char *)slide, LoadFarString(Creating),                  FnFilter1(G.filename)));            if (G.extra_field) { /* zipfile extra field has extended attribs */                int err = EvalExtraFields(__G__ G.filename, G.extra_field,                                          G.lrec.extra_field_length);                if (err == IZ_EF_TRUNC) {                    if (uO.qflag)                        Info(slide, 1, ((char *)slide, "%-22s ",                          FnFilter1(G.filename)));                    Info(slide, 1, ((char *)slide, LoadFarString(TruncEAs),                      makeword(G.extra_field+2)-10, "\n"));                } else if (!uO.qflag)                    (*G.message)((zvoid *)&G, (uch *)"\n", 1L, 0);            } else if (!uO.qflag)                (*G.message)((zvoid *)&G, (uch *)"\n", 1L, 0);            /* set date/time stamps */            SetPathAttrTimes(__G__ G.pInfo->file_attr & ~A_ARCHIVE, 1);            /* dir time already set */            return (error & ~MPN_MASK) | MPN_CREATED_DIR;        } else if (G.extra_field && IS_OVERWRT_ALL) {            /* overwrite EAs of existing directory since user requested it */            int err = EvalExtraFields(__G__ G.filename, G.extra_field,                                      G.lrec.extra_field_length);            if (err == IZ_EF_TRUNC) {                Info(slide, 0x421, ((char *)slide, "%-22s ",                  FnFilter1(G.filename)));                Info(slide, 0x401, ((char *)slide, LoadFarString(TruncEAs),                  makeword(G.extra_field+2)-10, "\n"));            }            /* set date/time stamps (dirs only have creation times) */            SetPathAttrTimes(__G__ G.pInfo->file_attr & ~A_ARCHIVE, 1);        }        /* 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;        /* semi-colon was kept:  expect #s after */        while (isdigit((uch)(*pp)))            ++pp;        if (*pp == '\0')          /* only digits between ';' and end:  nuke */            *lastsemi = '\0';    }#ifdef ACORN_FTYPE_NFS    /* translate Acorn filetype information if asked to do so */    if (uO.acorn_nfs_ext &&        (ef_spark = (RO_extra_block *)                    getRISCOSexfield(G.extra_field, G.lrec.extra_field_length))        != (RO_extra_block *)NULL)    {        /* file *must* have a RISC OS extra field */        long ft = (long)makelong((ef_spark->loadaddr);        /*32-bit*/        if (lastcomma) {            pp = lastcomma + 1;            while (isxdigit((uch)(*pp))) ++pp;            if (pp == lastcomma+4 && *pp == '\0') *lastcomma='\0'; /* nuke */        }        if ((ft & 1<<31)==0) ft=0x000FFD00;        sprintf(pathcomp+strlen(pathcomp), ",%03x", (int)(ft>>8) & 0xFFF);    }#endif /* ACORN_FTYPE_NFS */    if (*pathcomp == '\0') {        Info(slide, 1, ((char *)slide, LoadFarString(ConversionFailed),          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);    Trace((stderr, "mapname returns with filename = [%s] (error = %d)\n\n",      FnFilter1(G.filename), error));    if (G.pInfo->vollabel) {    /* set the volume label now */        VOLUMELABEL FSInfoBuf;/* GRR:  "VOLUMELABEL" defined for IBM C and emx, but haven't checked MSC... */        strcpy(FSInfoBuf.szVolLabel, G.filename);        FSInfoBuf.cch = (BYTE)strlen(FSInfoBuf.szVolLabel);        if (!uO.qflag)            Info(slide, 0, ((char *)slide, LoadFarString(Labelling),              (char)(G.os2.nLabelDrive + 'a' - 1), FnFilter1(G.filename)));        if (DosSetFSInfo(G.os2.nLabelDrive, FSIL_VOLSER, (PBYTE)&FSInfoBuf,                         sizeof(VOLUMELABEL)))        {            Info(slide, 1, ((char *)slide, LoadFarString(ErrSetVolLabel)));            return (error & ~MPN_MASK) | MPN_ERR_SKIP;        }        /* success:  skip the "extraction" quietly */        return (error & ~MPN_MASK) | MPN_INF_SKIP;    }    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 */{  /* moved to os2data.h so they can be global */#if 0    static int rootlen = 0;      /* length of rootpath */    static char *rootpath;       /* user's "extract-to" directory */    static char *buildpathHPFS;  /* full path (so far) to extracted file, */    static char *buildpathFAT;   /*  both HPFS/EA (main) and FAT versions */    static char *endHPFS;        /* corresponding pointers to end of */    static char *endFAT;         /*  buildpath ('\0') */#endif#   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) {        char *p = pathcomp;        int longdirEA, too_long=FALSE;        Trace((stderr, "appending dir segment [%s]\n", FnFilter1(pathcomp)));        while ((*G.os2.endHPFS = *p++) != '\0')     /* copy to HPFS filename */            ++G.os2.endHPFS;        if (IsFileNameValid(G.os2.buildpathHPFS)) {            longdirEA = FALSE;            p = pathcomp;            while ((*G.os2.endFAT = *p++) != '\0')  /* copy to FAT filename, too */                ++G.os2.endFAT;        } else {            longdirEA = TRUE;/* GRR:  check error return? */            map2fat(pathcomp, &G.os2.endFAT);  /* map, put in FAT fn, update endFAT */        }        /* GRR:  could do better check, see if overrunning buffer as we go:         * check endHPFS-G.os2.buildpathHPFS 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. */        /* next check:  need to append '/', at least one-char name, '\0' */        if ((G.os2.endHPFS-G.os2.buildpathHPFS) > FILNAMSIZ-3)            too_long = TRUE;                 /* check if extracting dir? */#ifdef MSC /* MSC 6.00 bug:  stat(non-existent-dir) == 0 [exists!] */        if (GetFileTime(G.os2.buildpathFAT) == -1 || stat(G.os2.buildpathFAT, &G.statbuf))#else        if (stat(G.os2.buildpathFAT, &G.statbuf))    /* path doesn't exist */#endif        {            if (!G.create_dirs) { /* told not to create (freshening) */                free(G.os2.buildpathHPFS);                free(G.os2.buildpathFAT);                /* path doesn't exist:  nothing to do */                return MPN_INF_SKIP;            }            if (too_long) {   /* GRR:  should allow FAT extraction w/o EAs */                Info(slide, 1, ((char *)slide, LoadFarString(PathTooLong),                  FnFilter1(G.os2.buildpathHPFS)));                free(G.os2.buildpathHPFS);                free(G.os2.buildpathFAT);                /* no room for filenames:  fatal */                return MPN_ERR_TOOLONG;            }            if (MKDIR(G.os2.buildpathFAT, 0777) == -1) {   /* create the directory */                Info(slide, 1, ((char *)slide, LoadFarString(CantCreateDir),                  FnFilter2(G.os2.buildpathFAT), FnFilter1(G.filename)));                free(G.os2.buildpathHPFS);                free(G.os2.buildpathFAT);                /* path didn't exist, tried to create, failed */                return MPN_ERR_SKIP;            }            G.os2.created_dir = TRUE;            /* only set EA if creating directory *//* GRR:  need trailing '/' before function call? */            if (longdirEA) {#ifdef DEBUG                int e =#endif                  SetLongNameEA(G.os2.buildpathFAT, pathcomp);                Trace((stderr, "APPEND_DIR:  SetLongNameEA() returns %d\n", e));            }        } else if (!S_ISDIR(G.statbuf.st_mode)) {            Info(slide, 1, ((char *)slide, LoadFarString(DirIsntDirectory),              FnFilter2(G.os2.buildpathFAT), FnFilter1(G.filename)));            free(G.os2.buildpathHPFS);            free(G.os2.buildpathFAT);            /* path existed but wasn't dir */            return MPN_ERR_SKIP;        }        if (too_long) {            Info(slide, 1, ((char *)slide, LoadFarString(PathTooLong),              FnFilter1(G.os2.buildpathHPFS)));            free(G.os2.buildpathHPFS);            free(G.os2.buildpathFAT);            /* no room for filenames:  fatal */            return MPN_ERR_TOOLONG;        }        *G.os2.endHPFS++ = '/';        *G.os2.endFAT++ = '/';        *G.os2.endHPFS = *G.os2.endFAT = '\0';        Trace((stderr, "buildpathHPFS now = [%s]\n",          FnFilter1(G.os2.buildpathHPFS)));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女免费视频一区二区| 国产露脸91国语对白| 樱桃国产成人精品视频| 国产精品日产欧美久久久久| 欧美sm美女调教| 精品国产污网站| 精品av久久707| 久久影音资源网| 国产精品萝li| 中文字幕一区在线观看视频| 国产精品卡一卡二| 亚洲欧洲在线观看av| 最新高清无码专区| 一区二区三区日韩精品视频| 亚洲一区二区高清| 日本亚洲一区二区| 久久成人免费电影| 国产资源精品在线观看| 国产一区二区久久| av一区二区久久| 一本大道久久a久久精品综合| 在线观看视频欧美| 欧美精品第一页| 欧美成人在线直播| 国产精品免费av| 亚洲黄网站在线观看| 日韩av一级片| 国产精品123区| 色综合天天视频在线观看| 欧美视频一区二区| wwwwww.欧美系列| 日韩理论电影院| 免费在线欧美视频| 盗摄精品av一区二区三区| 91黄视频在线| 日韩精品中午字幕| 国产精品五月天| 午夜精品爽啪视频| 国产精品资源在线观看| 色综合 综合色| 欧美成人三级在线| 亚洲欧美日韩在线不卡| 日本aⅴ亚洲精品中文乱码| 国产一区二区导航在线播放| 91免费国产视频网站| 69堂精品视频| 国产无一区二区| 天天做天天摸天天爽国产一区 | 亚洲第一在线综合网站| 国产综合色视频| 在线观看网站黄不卡| 久久综合久久综合久久| 亚洲综合丁香婷婷六月香| 国产美女视频91| 欧美三级日韩三级| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 波波电影院一区二区三区| 欧美日韩精品是欧美日韩精品| 精品国产亚洲在线| 亚洲综合图片区| 顶级嫩模精品视频在线看| 91精品国产丝袜白色高跟鞋| 中文字幕一区二| 精品一区二区在线观看| 在线观看国产精品网站| 欧美国产日韩a欧美在线观看| 亚洲成年人网站在线观看| 成人高清免费在线播放| 日韩欧美成人午夜| 亚洲国产一二三| av高清久久久| 久久亚洲综合av| 午夜私人影院久久久久| 99久久精品一区| 久久久久久久综合色一本| 日欧美一区二区| 在线观看日韩一区| 国产精品入口麻豆九色| 国产一区福利在线| 欧美一区二区三区公司| 亚洲最新视频在线观看| www.66久久| 欧美极品少妇xxxxⅹ高跟鞋| 久久国产精品露脸对白| 91精品国产综合久久香蕉麻豆| 亚洲美女视频在线观看| 高清久久久久久| 欧美精品一区二区久久婷婷| 性做久久久久久久免费看| 色悠悠久久综合| 亚洲欧美激情小说另类| av一区二区三区四区| 国产精品热久久久久夜色精品三区| 国模大尺度一区二区三区| 91精品国产黑色紧身裤美女| 午夜在线成人av| 欧美色窝79yyyycom| 亚洲激情自拍视频| 99久久夜色精品国产网站| 国产精品视频一二| 成人午夜碰碰视频| 国产精品女上位| 成人免费毛片app| 国产精品久久精品日日| 春色校园综合激情亚洲| 国产日本欧美一区二区| 国产福利91精品一区二区三区| 久久蜜桃一区二区| 国产一区二区伦理片| 亚洲午夜日本在线观看| 欧洲国内综合视频| 亚洲精品美国一| 欧美日韩国产综合久久| 三级在线观看一区二区| 91麻豆精品国产综合久久久久久 | 99久久精品国产观看| 亚洲色图.com| 欧美在线观看视频在线| 婷婷综合另类小说色区| 欧美精品久久99| 奇米色777欧美一区二区| 精品剧情v国产在线观看在线| 激情成人综合网| 日本一区二区不卡视频| 色综合中文字幕| 亚洲成人av一区二区| 日韩欧美一区二区久久婷婷| 国产在线不卡视频| 亚洲人成网站精品片在线观看 | 一区二区三区自拍| 欧美久久免费观看| 国内外成人在线| 国产精品不卡在线| 欧美日韩在线一区二区| 麻豆91在线看| 国产精品久久久久久亚洲毛片| 91免费版pro下载短视频| 天堂va蜜桃一区二区三区漫画版| 精品毛片乱码1区2区3区| 国产成人综合精品三级| 亚洲精品视频观看| 日韩精品一区二区三区视频在线观看 | 日韩欧美你懂的| 大胆亚洲人体视频| 婷婷中文字幕一区三区| 久久久久国产精品厨房| 色88888久久久久久影院野外| 免费成人在线影院| 国产精品动漫网站| 欧美成人性战久久| 欧洲精品在线观看| 国产一区在线看| 亚洲国产wwwccc36天堂| 久久亚洲私人国产精品va媚药| 色综合天天在线| 久久精品99久久久| 亚洲黄色小说网站| 久久久久久久久久久久久女国产乱| 91福利视频在线| 国产高清精品在线| 天堂va蜜桃一区二区三区漫画版| 国产精品网曝门| 日韩女优制服丝袜电影| 欧美私人免费视频| 成人在线一区二区三区| 日本麻豆一区二区三区视频| 亚洲欧美日韩小说| 久久久久久久久久久黄色| 欧美裸体bbwbbwbbw| eeuss鲁片一区二区三区在线看| 日韩电影一区二区三区四区| 欧美国产日韩a欧美在线观看 | 亚洲一区二区精品视频| 国产精品毛片大码女人| 久久在线免费观看| 91精品国产综合久久久久久久 | 欧美电影在哪看比较好| 91色.com| 国产成人免费视频一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 一区二区三区91| 18欧美亚洲精品| 国产精品美女一区二区| 精品福利在线导航| 91精品国产综合久久久久久漫画| 在线视频综合导航| 99久久婷婷国产综合精品电影| 国产精品自拍网站| 国产在线播精品第三| 久久99久久久久久久久久久| 天堂成人免费av电影一区| 国产成人亚洲综合a∨婷婷图片| 视频在线观看91| 亚洲精品国产第一综合99久久 | 一区2区3区在线看| 中文天堂在线一区| 国产精品五月天| 国产精品久久久久一区| 国产亚洲一区二区在线观看| 精品国产免费视频|