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

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

?? zip.c

?? 嵌入式環(huán)境下的GUI
?? C
?? 第 1 頁 / 共 3 頁
字號:
        goto zip_load_entry_puked;        /* seek to the start of the next entry in the central directory... */    if (!__PHYSFS_platformSeek(in, si64 + extralen + commentlen))        goto zip_load_entry_puked;    return(1);  /* success. */zip_load_entry_puked:    free(entry->name);    return(0);  /* failure. */} /* zip_load_entry */static int zip_entry_cmp(void *_a, PHYSFS_uint32 one, PHYSFS_uint32 two){    ZIPentry *a = (ZIPentry *) _a;    return(strcmp(a[one].name, a[two].name));} /* zip_entry_cmp */static void zip_entry_swap(void *_a, PHYSFS_uint32 one, PHYSFS_uint32 two){    ZIPentry tmp;    ZIPentry *first = &(((ZIPentry *) _a)[one]);    ZIPentry *second = &(((ZIPentry *) _a)[two]);    memcpy(&tmp, first, sizeof (ZIPentry));    memcpy(first, second, sizeof (ZIPentry));    memcpy(second, &tmp, sizeof (ZIPentry));} /* zip_entry_swap */static int zip_load_entries(void *in, DirHandle *dirh,                            PHYSFS_uint32 data_ofs, PHYSFS_uint32 central_ofs){    ZIPinfo *info = (ZIPinfo *) dirh->opaque;    PHYSFS_uint32 max = info->entryCount;    PHYSFS_uint32 i;    BAIL_IF_MACRO(!__PHYSFS_platformSeek(in, central_ofs), NULL, 0);    info->entries = (ZIPentry *) malloc(sizeof (ZIPentry) * max);    BAIL_IF_MACRO(info->entries == NULL, ERR_OUT_OF_MEMORY, 0);    for (i = 0; i < max; i++)    {        if (!zip_load_entry(in, &info->entries[i], data_ofs))        {            zip_free_entries(info->entries, i);            return(0);        } /* if */    } /* for */    __PHYSFS_sort(info->entries, max, zip_entry_cmp, zip_entry_swap);    return(1);} /* zip_load_entries */static int zip_parse_end_of_central_dir(void *in, DirHandle *dirh,                                        PHYSFS_uint32 *data_start,                                        PHYSFS_uint32 *central_dir_ofs){    ZIPinfo *zipinfo = (ZIPinfo *) dirh->opaque;    PHYSFS_uint32 ui32;    PHYSFS_uint16 ui16;    PHYSFS_sint64 len;    PHYSFS_sint64 pos;    /* find the end-of-central-dir record, and seek to it. */    pos = zip_find_end_of_central_dir(in, &len);    BAIL_IF_MACRO(pos == -1, NULL, 0);    BAIL_IF_MACRO(!__PHYSFS_platformSeek(in, pos), NULL, 0);    /* check signature again, just in case. */    BAIL_IF_MACRO(!readui32(in, &ui32), NULL, 0);    BAIL_IF_MACRO(ui32 != ZIP_END_OF_CENTRAL_DIR_SIG, ERR_NOT_AN_ARCHIVE, 0);    /* number of this disk */    BAIL_IF_MACRO(!readui16(in, &ui16), NULL, 0);    BAIL_IF_MACRO(ui16 != 0, ERR_UNSUPPORTED_ARCHIVE, 0);    /* number of the disk with the start of the central directory */    BAIL_IF_MACRO(!readui16(in, &ui16), NULL, 0);    BAIL_IF_MACRO(ui16 != 0, ERR_UNSUPPORTED_ARCHIVE, 0);    /* total number of entries in the central dir on this disk */    BAIL_IF_MACRO(!readui16(in, &ui16), NULL, 0);    /* total number of entries in the central dir */    BAIL_IF_MACRO(!readui16(in, &zipinfo->entryCount), NULL, 0);    BAIL_IF_MACRO(ui16 != zipinfo->entryCount, ERR_UNSUPPORTED_ARCHIVE, 0);    /* size of the central directory */    BAIL_IF_MACRO(!readui32(in, &ui32), NULL, 0);    /* offset of central directory */    BAIL_IF_MACRO(!readui32(in, central_dir_ofs), NULL, 0);    BAIL_IF_MACRO(pos < *central_dir_ofs + ui32, ERR_UNSUPPORTED_ARCHIVE, 0);    /*     * For self-extracting archives, etc, there's crapola in the file     *  before the zipfile records; we calculate how much data there is     *  prepended by determining how far the central directory offset is     *  from where it is supposed to be (start of end-of-central-dir minus     *  sizeof central dir)...the difference in bytes is how much arbitrary     *  data is at the start of the physical file.     */    *data_start = (PHYSFS_uint32) (pos - (*central_dir_ofs + ui32));    /* Now that we know the difference, fix up the central dir offset... */    *central_dir_ofs += *data_start;    /* zipfile comment length */    BAIL_IF_MACRO(!readui16(in, &ui16), NULL, 0);    /*     * Make sure that the comment length matches to the end of file...     *  If it doesn't, we're either in the wrong part of the file, or the     *  file is corrupted, but we give up either way.     */    BAIL_IF_MACRO((pos + 22 + ui16) != len, ERR_UNSUPPORTED_ARCHIVE, 0);    return(1);  /* made it. */} /* zip_parse_end_of_central_dir */static DirHandle *zip_allocate_dirhandle(const char *name){    char *ptr;    ZIPinfo *info;    DirHandle *retval = malloc(sizeof (DirHandle));    BAIL_IF_MACRO(retval == NULL, ERR_OUT_OF_MEMORY, NULL);    memset(retval, '\0', sizeof (DirHandle));    info = (ZIPinfo *) malloc(sizeof (ZIPinfo));    if (info == NULL)    {        free(retval);        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);    } /* if */    memset(info, '\0', sizeof (ZIPinfo));    ptr = (char *) malloc(strlen(name) + 1);    if (ptr == NULL)    {        free(info);        free(retval);        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);    } /* if */    info->archiveName = ptr;    strcpy(info->archiveName, name);    retval->opaque = info;    retval->funcs = &__PHYSFS_DirFunctions_ZIP;    return(retval);} /* zip_allocate_dirhandle */static DirHandle *ZIP_openArchive(const char *name, int forWriting){    DirHandle *retval = NULL;    void *in = NULL;    PHYSFS_uint32 data_start;    PHYSFS_uint32 cent_dir_ofs;    int success = 0;    BAIL_IF_MACRO(forWriting, ERR_ARC_IS_READ_ONLY, NULL);    if ((in = __PHYSFS_platformOpenRead(name)) == NULL)        goto zip_openarchive_end;        if ((retval = zip_allocate_dirhandle(name)) == NULL)        goto zip_openarchive_end;    if (!zip_parse_end_of_central_dir(in, retval, &data_start, &cent_dir_ofs))        goto zip_openarchive_end;    if (!zip_load_entries(in, retval, data_start, cent_dir_ofs))        goto zip_openarchive_end;    success = 1;  /* ...and we're good to go.  :)  */zip_openarchive_end:    if (!success)  /* clean up for failures. */    {        if (retval != NULL)        {            if (retval->opaque != NULL)            {                if (((ZIPinfo *) (retval->opaque))->archiveName != NULL)                    free(((ZIPinfo *) (retval->opaque))->archiveName);                free(retval->opaque);            } /* if */            free(retval);            retval = NULL;        } /* if */    } /* if */    if (in != NULL)        __PHYSFS_platformClose(in);  /* Close this even with success. */    return(retval);} /* ZIP_openArchive */static PHYSFS_sint32 zip_find_start_of_dir(ZIPinfo *info, const char *path,                                            int stop_on_first_find){    PHYSFS_sint32 lo = 0;    PHYSFS_sint32 hi = (PHYSFS_sint32) info->entryCount;    PHYSFS_sint32 middle;    PHYSFS_uint32 dlen = strlen(path);    PHYSFS_sint32 retval = -1;    const char *name;    int rc;    if (*path == '\0')  /* root dir? */        return(0);    if ((dlen > 0) && (path[dlen - 1] == '/')) /* ignore trailing slash. */        dlen--;    while (lo <= hi)    {        middle = lo + ((hi - lo) / 2);        name = info->entries[middle].name;        rc = strncmp(path, name, dlen);        if (rc == 0)        {            char ch = name[dlen];            if (ch < '/') /* make sure this isn't just a substr match. */                rc = -1;            else if (ch > '/')                rc = 1;            else             {                if (stop_on_first_find) /* Just checking dir's existance? */                    return(middle);                if (name[dlen + 1] == '\0') /* Skip initial dir entry. */                    return(middle + 1);                /* there might be more entries earlier in the list. */                retval = middle;                hi = middle - 1;            } /* else */        } /* if */        if (rc > 0)            lo = middle + 1;        else            hi = middle - 1;    } /* while */    return(retval);} /* zip_find_start_of_dir */static LinkedStringList *ZIP_enumerateFiles(DirHandle *h,                                            const char *dirname,                                            int omitSymLinks){    ZIPinfo *info = ((ZIPinfo *) h->opaque);    LinkedStringList *retval = NULL, *p = NULL;    PHYSFS_sint32 dlen, dlen_inc, max, i;    i = zip_find_start_of_dir(info, dirname, 0);    BAIL_IF_MACRO(i == -1, ERR_NO_SUCH_FILE, NULL);    dlen = strlen(dirname);    if ((dlen > 0) && (dirname[dlen - 1] == '/')) /* ignore trailing slash. */        dlen--;    dlen_inc = ((dlen > 0) ? 1 : 0) + dlen;    max = (PHYSFS_sint32) info->entryCount;    while (i < max)    {        char *e = info->entries[i].name;        if ((dlen) && ((strncmp(e, dirname, dlen) != 0) || (e[dlen] != '/')))            break;  /* past end of this dir; we're done. */        if ((omitSymLinks) && (zip_entry_is_symlink(&info->entries[i])))            i++;        else        {            char *add = e + dlen_inc;            char *ptr = strchr(add, '/');            PHYSFS_sint32 ln = (PHYSFS_sint32) ((ptr) ? ptr-add : strlen(add));            retval = __PHYSFS_addToLinkedStringList(retval, &p, add, ln);            ln += dlen_inc;  /* point past entry to children... */            /* increment counter and skip children of subdirs... */            while ((++i < max) && (ptr != NULL))            {                char *e_new = info->entries[i].name;                if ((strncmp(e, e_new, ln) != 0) || (e_new[ln] != '/'))                    break;            } /* while */        } /* else */    } /* while */    return(retval);} /* ZIP_enumerateFiles */static int ZIP_exists(DirHandle *h, const char *name){    int isDir;        ZIPinfo *info = (ZIPinfo *) h->opaque;    ZIPentry *entry = zip_find_entry(info, name, &isDir);    return((entry != NULL) || (isDir));} /* ZIP_exists */static PHYSFS_sint64 ZIP_getLastModTime(DirHandle *h,                                        const char *name,                                        int *fileExists){    int isDir;    ZIPinfo *info = (ZIPinfo *) h->opaque;    ZIPentry *entry = zip_find_entry(info, name, &isDir);    *fileExists = ((isDir) || (entry != NULL));    if (isDir)        return(1);  /* Best I can do for a dir... */    BAIL_IF_MACRO(entry == NULL, NULL, -1);    return(entry->last_mod_time);} /* ZIP_getLastModTime */static int ZIP_isDirectory(DirHandle *h, const char *name, int *fileExists){    ZIPinfo *info = (ZIPinfo *) h->opaque;    int isDir;    ZIPentry *entry = zip_find_entry(info, name, &isDir);    *fileExists = ((isDir) || (entry != NULL));    if (isDir)        return(1); /* definitely a dir. */    /* Follow symlinks. This means we might need to resolve entries. */    BAIL_IF_MACRO(entry == NULL, ERR_NO_SUCH_FILE, 0);    if (entry->resolved == ZIP_UNRESOLVED_SYMLINK) /* gotta resolve it. */    {        int rc;        void *in = __PHYSFS_platformOpenRead(info->archiveName);        BAIL_IF_MACRO(in == NULL, NULL, 0);        rc = zip_resolve(in, info, entry);        __PHYSFS_platformClose(in);        if (!rc)            return(0);    } /* if */    BAIL_IF_MACRO(entry->resolved == ZIP_BROKEN_SYMLINK, NULL, 0);    BAIL_IF_MACRO(entry->symlink == NULL, ERR_NOT_A_DIR, 0);    return(zip_find_start_of_dir(info, entry->symlink->name, 1) >= 0);} /* ZIP_isDirectory */static int ZIP_isSymLink(DirHandle *h, const char *name, int *fileExists){    int isDir;    ZIPentry *entry = zip_find_entry((ZIPinfo *) h->opaque, name, &isDir);    *fileExists = ((isDir) || (entry != NULL));    BAIL_IF_MACRO(entry == NULL, NULL, 0);    return(zip_entry_is_symlink(entry));} /* ZIP_isSymLink */static void *zip_get_file_handle(const char *fn, ZIPinfo *inf, ZIPentry *entry){    int success;    void *retval = __PHYSFS_platformOpenRead(fn);    BAIL_IF_MACRO(retval == NULL, NULL, NULL);    success = zip_resolve(retval, inf, entry);    if (success)    {        PHYSFS_sint64 offset;        offset = ((entry->symlink) ? entry->symlink->offset : entry->offset);        success = __PHYSFS_platformSeek(retval, offset);    } /* if */    if (!success)    {        __PHYSFS_platformClose(retval);        retval = NULL;    } /* if */    return(retval);} /* zip_get_file_handle */static FileHandle *ZIP_openRead(DirHandle *h, const char *fnm, int *fileExists){    ZIPinfo *info = (ZIPinfo *) h->opaque;    ZIPentry *entry = zip_find_entry(info, fnm, NULL);    FileHandle *retval = NULL;    ZIPfileinfo *finfo = NULL;    void *in;    *fileExists = (entry != NULL);    BAIL_IF_MACRO(entry == NULL, NULL, NULL);    in = zip_get_file_handle(info->archiveName, info, entry);    BAIL_IF_MACRO(in == NULL, NULL, NULL);    if ( ((retval = (FileHandle *) malloc(sizeof (FileHandle))) == NULL) ||         ((finfo = (ZIPfileinfo *) malloc(sizeof (ZIPfileinfo))) == NULL) )    {        if (retval)            free(retval);        __PHYSFS_platformClose(in);        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);    } /* if */    retval->opaque = (void *) finfo;    retval->funcs = &__PHYSFS_FileFunctions_ZIP;    retval->dirHandle = h;    memset(finfo, '\0', sizeof (ZIPfileinfo));    finfo->handle = in;    finfo->entry = ((entry->symlink != NULL) ? entry->symlink : entry);    if (finfo->entry->compression_method != COMPMETH_NONE)    {        if (zlib_err(inflateInit2(&finfo->stream, -MAX_WBITS)) != Z_OK)        {            ZIP_fileClose(retval);            return(NULL);        } /* if */        finfo->buffer = (PHYSFS_uint8 *) malloc(ZIP_READBUFSIZE);        if (finfo->buffer == NULL)        {            ZIP_fileClose(retval);            BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);        } /* if */    } /* if */    return(retval);} /* ZIP_openRead */static FileHandle *ZIP_openWrite(DirHandle *h, const char *filename){    BAIL_MACRO(ERR_NOT_SUPPORTED, NULL);} /* ZIP_openWrite */static FileHandle *ZIP_openAppend(DirHandle *h, const char *filename){    BAIL_MACRO(ERR_NOT_SUPPORTED, NULL);} /* ZIP_openAppend */static void ZIP_dirClose(DirHandle *h){    ZIPinfo *zi = (ZIPinfo *) (h->opaque);    zip_free_entries(zi->entries, zi->entryCount);    free(zi->archiveName);    free(zi);    free(h);} /* ZIP_dirClose */static int ZIP_remove(DirHandle *h, const char *name){    BAIL_MACRO(ERR_NOT_SUPPORTED, 0);} /* ZIP_remove */static int ZIP_mkdir(DirHandle *h, const char *name){    BAIL_MACRO(ERR_NOT_SUPPORTED, 0);} /* ZIP_mkdir */#endif  /* defined PHYSFS_SUPPORTS_ZIP *//* end of zip.c ... */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费美女视频| 9191成人精品久久| 中文av字幕一区| 成人综合婷婷国产精品久久蜜臀| 国产日韩欧美精品电影三级在线| 国产一区 二区 三区一级| 久久久精品国产免费观看同学| 国产麻豆成人传媒免费观看| 欧美国产在线观看| 91麻豆免费观看| 天堂影院一区二区| 久久久久久亚洲综合影院红桃| 国产成人久久精品77777最新版本| 国产精品美女久久久久久久久久久| 成人sese在线| 日日夜夜一区二区| 国产三级精品三级| 91高清视频在线| 蜜臀va亚洲va欧美va天堂| 欧美激情一区三区| 欧美日韩激情一区二区| 国产综合久久久久久鬼色| 国产精品国产精品国产专区不片| 色欧美日韩亚洲| 国内精品伊人久久久久影院对白| 亚洲欧洲成人自拍| 在线不卡免费av| 成人免费的视频| 日韩精品成人一区二区在线| 欧美激情一区二区三区| 欧美日韩一区 二区 三区 久久精品| 精品一区二区三区香蕉蜜桃| 亚洲黄色片在线观看| 欧美精品一区二区三区一线天视频| 91色porny在线视频| 蜜臀久久久久久久| 亚洲视频香蕉人妖| 精品久久久久久久人人人人传媒| 99国产一区二区三精品乱码| 美女网站在线免费欧美精品| 亚洲激情图片一区| 中文字幕国产一区| 精品国产免费人成电影在线观看四季| 91影院在线免费观看| 国产专区综合网| 天天综合天天做天天综合| 中文字幕在线免费不卡| 欧美不卡激情三级在线观看| 欧美主播一区二区三区美女| 国产成人福利片| 精品一区二区三区在线视频| 亚洲观看高清完整版在线观看| 欧美国产国产综合| 精品国产乱码91久久久久久网站| 欧美日韩电影一区| 色8久久精品久久久久久蜜| 国产 日韩 欧美大片| 麻豆精品视频在线| 亚洲高清免费一级二级三级| 18成人在线视频| 国产欧美精品一区二区色综合 | 亚洲超碰精品一区二区| 国产精品国产三级国产aⅴ无密码| 日韩美女视频一区二区在线观看| 欧美日韩一区在线| 色综合久久九月婷婷色综合| 成人黄色免费短视频| 国产成人精品免费| 国产精品一区二区三区99| 国产在线精品一区在线观看麻豆| 丝袜美腿亚洲一区二区图片| 亚洲亚洲人成综合网络| 亚洲综合激情网| 亚洲成人激情综合网| 亚洲国产成人va在线观看天堂| 一区二区三区视频在线观看| 亚洲欧美国产三级| 一区二区三区日韩精品| 一级日本不卡的影视| 一区二区三区中文字幕| 亚洲一区二区三区视频在线播放| 亚洲一区二区欧美| 亚洲成a天堂v人片| 日韩国产欧美一区二区三区| 日本中文字幕不卡| 美女视频黄 久久| 免费av成人在线| 国产精品一区在线| 9色porny自拍视频一区二区| 色综合久久久久久久久久久| 欧美视频精品在线| 7777精品伊人久久久大香线蕉的 | 中文字幕欧美一| 亚洲精品五月天| 午夜精品福利视频网站| 麻豆91在线观看| 国产美女精品在线| 99国产欧美另类久久久精品| 欧美日韩一区精品| 精品三级av在线| 中文字幕一区二区三区色视频| 玉米视频成人免费看| 蜜臀av亚洲一区中文字幕| 国产精品一区二区在线观看不卡| 99久久国产综合色|国产精品| 欧美天堂亚洲电影院在线播放| 欧美日韩国产首页在线观看| 亚洲精品一区二区三区蜜桃下载 | 粉嫩在线一区二区三区视频| 91麻豆免费观看| 日韩视频一区二区三区在线播放 | a级精品国产片在线观看| 在线一区二区视频| 精品久久五月天| 亚洲男人天堂一区| 久久精品国产精品青草| 91麻豆免费观看| 欧美成人欧美edvon| 亚洲视频一区二区免费在线观看| 强制捆绑调教一区二区| 不卡av在线免费观看| 欧美嫩在线观看| 国产精品欧美一区二区三区| 午夜伦欧美伦电影理论片| 国产99一区视频免费| 欧美理论电影在线| 国产精品国产三级国产三级人妇| 日韩av一级片| 91丨九色丨蝌蚪丨老版| 久久综合九色综合97婷婷女人 | 日韩1区2区3区| 成人h动漫精品一区二区| 日韩欧美一级精品久久| 136国产福利精品导航| 激情成人午夜视频| 欧美在线观看禁18| 国产精品久久网站| 国产在线观看一区二区| 欧美久久久久久久久久| 中文字幕一区二区视频| 久久精品国产77777蜜臀| 欧美日韩在线精品一区二区三区激情| 欧美国产欧美综合| 国产一区二区三区四区在线观看| 欧美日韩小视频| 中文字幕中文字幕在线一区| 国产精品一区二区三区乱码| 日韩免费高清视频| 免费精品视频最新在线| 欧美日韩高清一区| 亚洲一级二级三级在线免费观看| 99v久久综合狠狠综合久久| 久久久久久久免费视频了| 美女一区二区视频| 在线91免费看| 三级在线观看一区二区 | 7777精品伊人久久久大香线蕉的| 日韩美女视频一区二区 | 日本一区二区三区久久久久久久久不 | 91在线免费播放| 中文字幕乱码日本亚洲一区二区| 国产精品一区在线观看乱码| 欧美大片一区二区三区| 日韩电影一区二区三区| 538prom精品视频线放| 亚洲aⅴ怡春院| 91精品国产色综合久久不卡蜜臀 | 免费观看在线综合| 在线播放视频一区| 免费三级欧美电影| 日韩片之四级片| 美女被吸乳得到大胸91| 精品国产伦一区二区三区观看方式| 奇米综合一区二区三区精品视频| 欧美一区二区成人6969| 久久国产尿小便嘘嘘| 精品久久久久久久一区二区蜜臀| 蜜乳av一区二区| 久久久久久久综合狠狠综合| 成人av在线资源| 一区二区在线免费| 欧美高清dvd| 韩国三级在线一区| 国产精品免费看片| 色老汉一区二区三区| 亚洲成国产人片在线观看| 欧美一区二区视频网站| 久久av资源站| 国产精品久久久久三级| 一本一道综合狠狠老| 五月开心婷婷久久| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 在线不卡的av| 国产在线一区观看| 亚洲人成网站在线| 91精品国产品国语在线不卡| 国产盗摄视频一区二区三区| 中文字幕一区在线观看视频| 欧美日韩国产一级片| 国产一区在线精品|