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

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

?? qpak.c

?? 嵌入式環(huán)境下的GUI
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Quake PAK support routines for PhysicsFS. * * This driver handles id Software Quake PAK files. * * Please see the file LICENSE in the source's root directory. * *  This file written by Ed Sinjiashvili. */#if HAVE_CONFIG_H#  include <config.h>#endif#if (defined PHYSFS_SUPPORTS_QPAK)#include <stdio.h>#include <stdlib.h>#include <string.h>#include "physfs.h"#define __PHYSICSFS_INTERNAL__#include "physfs_internal.h"#define QPAK_MAXDIRLEN 60typedef struct{    char          name[56];    PHYSFS_uint32 offset;    PHYSFS_uint32 size;} QPAKentry;typedef struct tagQPAKdirentry{    char                   *name;    QPAKentry              *entry;    struct tagQPAKdirentry *next;} QPAKdirentry;typedef struct QPAKDirectory{    char name[QPAK_MAXDIRLEN];    struct QPAKDirectory *dirs, *next;    QPAKdirentry *files;} QPAKdirectory;typedef struct{    void               *handle;    char               *filename;    PHYSFS_uint32       dirOffset;    PHYSFS_uint32       totalEntries;    QPAKentry          *entries;    QPAKdirectory      *root;} QPAKinfo;typedef struct{    void         *handle;    QPAKentry    *entry;    PHYSFS_sint64 curPos;} QPAKfileinfo;static int           QPAK_isArchive(const char *filename, int forWriting);static DirHandle    *QPAK_openArchive(const char *name, int forWriting);static void          QPAK_dirClose(DirHandle *h);static LinkedStringList *QPAK_enumerateFiles(DirHandle *h, const char *dirname,                                             int omitSymLinks);static int           QPAK_exists(DirHandle *h, const char *name);static int           QPAK_isDirectory(DirHandle *h, const char *name, int *e);static int           QPAK_isSymLink(DirHandle *h, const char *name, int *e);static PHYSFS_sint64 QPAK_getLastModTime(DirHandle *h, const char *n, int *e);static FileHandle   *QPAK_openRead(DirHandle *h, const char *name, int *e);static FileHandle   *QPAK_openWrite(DirHandle *h, const char *name);static FileHandle   *QPAK_openAppend(DirHandle *h, const char *name);static PHYSFS_sint64 QPAK_read(FileHandle *handle, void *buffer,                               PHYSFS_uint32 objSize, PHYSFS_uint32 objCount);static PHYSFS_sint64 QPAK_write(FileHandle *handle, const void *buffer,                                PHYSFS_uint32 objSize, PHYSFS_uint32 objCount);static int           QPAK_eof(FileHandle *handle);static PHYSFS_sint64 QPAK_tell(FileHandle *handle);static int           QPAK_seek(FileHandle *handle, PHYSFS_uint64 offset);static PHYSFS_sint64 QPAK_fileLength(FileHandle *handle);static int           QPAK_fileClose(FileHandle *handle);static int           QPAK_remove(DirHandle *h, const char *name);static int           QPAK_mkdir(DirHandle *h, const char *name);const PHYSFS_ArchiveInfo __PHYSFS_ArchiveInfo_QPAK ={    "PAK",    "Quake PAK file format",    "Ed Sinjiashvili <slimb@swes.saren.ru>",    "http://icculus.org/physfs/",};static const FileFunctions __PHYSFS_FileFunctions_QPAK ={    QPAK_read,               /* read() method       */    QPAK_write,              /* write() method      */    QPAK_eof,                /* eof() method        */    QPAK_tell,               /* tell() method       */    QPAK_seek,               /* seek() method       */    QPAK_fileLength,         /* fileLength() method */    QPAK_fileClose           /* fileClose() method  */};const DirFunctions __PHYSFS_DirFunctions_QPAK ={    &__PHYSFS_ArchiveInfo_QPAK,    QPAK_isArchive,          /* isArchive() method      */    QPAK_openArchive,        /* openArchive() method    */    QPAK_enumerateFiles,     /* enumerateFiles() method */    QPAK_exists,             /* exists() method         */    QPAK_isDirectory,        /* isDirectory() method    */    QPAK_isSymLink,          /* isSymLink() method      */    QPAK_getLastModTime,     /* getLastModTime() method */    QPAK_openRead,           /* openRead() method       */    QPAK_openWrite,          /* openWrite() method      */    QPAK_openAppend,         /* openAppend() method     */    QPAK_remove,             /* remove() method         */    QPAK_mkdir,              /* mkdir() method          */    QPAK_dirClose            /* dirClose() method       */};#define QPAK_MAGIC 0x4B434150  /* look like "PACK" in ascii. *//* * Read an unsigned 32-bit int and swap to native byte order. */static int readui32(void *in, PHYSFS_uint32 *val){    PHYSFS_uint32 v;    BAIL_IF_MACRO(__PHYSFS_platformRead(in, &v, sizeof (v), 1) != 1, NULL, 0);    *val = PHYSFS_swapULE32(v);    return(1);} /* readui32 */static int openQPak(const char *filename, int forWriting, void **fileHandle){    PHYSFS_uint32 sig;    *fileHandle = NULL;    BAIL_IF_MACRO(forWriting, ERR_ARC_IS_READ_ONLY, 0);    *fileHandle = __PHYSFS_platformOpenRead(filename);    BAIL_IF_MACRO(*fileHandle == NULL, NULL, 0);        if (!readui32(*fileHandle, &sig))        goto openPak_failed;        if (sig != QPAK_MAGIC)    {        __PHYSFS_setError(ERR_UNSUPPORTED_ARCHIVE);        goto openPak_failed;    } /* if */    return(1);openPak_failed:    if (*fileHandle != NULL)        __PHYSFS_platformClose(*fileHandle);    *fileHandle = NULL;    return(0);} /* openQPak */static int QPAK_isArchive(const char *filename, int forWriting){    void *fileHandle;    int retval = openQPak(filename, forWriting, &fileHandle);    if (fileHandle != NULL)        __PHYSFS_platformClose(fileHandle);    return(retval);} /* QPAK_isArchive */static int qpak_loadEntries(void *fh, int dirOffset, int numEntries,                            QPAKentry *entries){    PHYSFS_sint32 i;    BAIL_IF_MACRO(__PHYSFS_platformSeek(fh, dirOffset) == 0, NULL, 0);    for (i = 0; i < numEntries; i++, entries++)    {        PHYSFS_sint64 r = __PHYSFS_platformRead(fh, entries->name, 56, 1);        BAIL_IF_MACRO(r == 0, NULL, 0);        BAIL_IF_MACRO(!readui32(fh, &entries->offset), NULL, 0);        BAIL_IF_MACRO(!readui32(fh, &entries->size), NULL, 0);    } /* for */    return(1);} /* qpak_loadEntries */static QPAKdirentry *qpak_newDirentry(char *name, QPAKentry *entry){    QPAKdirentry *retval = (QPAKdirentry *) malloc(sizeof (QPAKdirentry));    BAIL_IF_MACRO(retval == NULL, ERR_OUT_OF_MEMORY, 0);    retval->name  = name;    retval->entry = entry;    retval->next  = NULL;    return(retval);} /* qpak_newDirentry */static void qpak_deleteDirentry(QPAKdirentry *e){    while (e != NULL)    {        QPAKdirentry *next = e->next;        free(e);        e = next;    } /* while */} /* qpak_deleteDirentry */static QPAKdirectory *qpak_newDirectory(char *name){    QPAKdirectory *dir = (QPAKdirectory *) malloc(sizeof (QPAKdirectory));    BAIL_IF_MACRO(dir == NULL, ERR_OUT_OF_MEMORY, 0);    strcpy(dir->name, name);    dir->dirs = NULL;    dir->next = NULL;    dir->files = NULL;    return dir;} /* qpak_newDirectory */static void qpak_deleteDirectory(QPAKdirectory *d){    while (d != NULL)    {        QPAKdirectory *next = d->next;        qpak_deleteDirentry(d->files);        qpak_deleteDirectory(d->dirs);        free(d);        d = next;    } /* while */} /* qpak_deleteDirectory */static int qpak_addFile(QPAKdirectory *dir, char *name, QPAKentry *entry){    QPAKdirentry *file = qpak_newDirentry(name, entry);    if (file == NULL)        return(0);    /* !!! FIXME: Traversing a linkedlist gets slower with each added file. */    if (dir->files == NULL)    {        dir->files = file;    } /* if */    else    {        QPAKdirentry *tail = dir->files;        while (tail->next != NULL)            tail = tail->next;        tail->next = file;    } /* else */    return(1);} /* qpak_addFile */static QPAKdirectory *qpak_findDirectory(QPAKdirectory *root, const char *name){    char *p = strchr(name, '/');    if (p == NULL)    {        QPAKdirectory *thisDir = root->dirs;        while (thisDir != NULL)        {            if (__PHYSFS_platformStricmp(thisDir->name, name) == 0)                return(thisDir);            thisDir = thisDir->next;        } /* while */    } /* if */    else    {        char temp[QPAK_MAXDIRLEN];        QPAKdirectory *thisDir = root->dirs;        strncpy (temp, name, p - name);        temp[p - name] = '\0';        while (thisDir != NULL)        {            if (__PHYSFS_platformStricmp(thisDir->name, temp) == 0)                return(qpak_findDirectory(thisDir, p + 1));            thisDir = thisDir->next;        } /* while */    } /* else */    BAIL_MACRO(ERR_NO_SUCH_PATH, 0);} /* qpak_findDirectory */static QPAKdirectory *qpak_addDir(QPAKdirectory *dir, char *name){    QPAKdirectory *newDir = qpak_findDirectory(dir, name);    if (newDir != 0)        return(newDir);    newDir = qpak_newDirectory(name);    if (newDir == 0)        return 0;    if (dir->dirs == NULL)    {        dir->dirs = newDir;    } /* if */    else    {        QPAKdirectory *tail = dir->dirs;        while (tail->next != NULL)            tail = tail->next;        tail->next = newDir;    } /* else */    return(newDir);} /* qpak_addDir */static int qpak_addEntry(QPAKdirectory *dir, char *name, QPAKentry *entry){    char tempName[QPAK_MAXDIRLEN];    QPAKdirectory *child;    char *p = strchr(name, '/');    if (p == NULL)        return(qpak_addFile(dir, name, entry));    strncpy(tempName, name, p - name);    tempName[p - name] = '\0';    child = qpak_addDir(dir, tempName);    return(qpak_addEntry(child, p + 1, entry));} /* qpak_addEntry */static QPAKentry *qpak_findEntry(QPAKdirectory *root, const char *name){    QPAKdirectory *dir = NULL;    QPAKdirentry *thisFile = NULL;    const char *t = strrchr(name, '/');    if (t == NULL)    {        dir = root;        t = name;    } /* if */    else    {        char temp[QPAK_MAXDIRLEN];        strncpy(temp, name, t - name);        temp[t - name] = '\0';        dir = qpak_findDirectory(root, temp);        t++;    } /* else */    if (dir == NULL)        return(0);    thisFile = dir->files;    while (thisFile != NULL)    {        if (__PHYSFS_platformStricmp(thisFile->name, t) == 0)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视频精品含羞草妖精| 国产精品综合一区二区三区| 欧美三级在线播放| 亚洲mv大片欧洲mv大片精品| 欧美日韩一本到| 免费在线成人网| 国产一区二区三区免费播放| xfplay精品久久| 不卡欧美aaaaa| 夜夜精品视频一区二区| 欧美日韩三级一区| 久久99国产精品久久99| 国产欧美一区视频| 色八戒一区二区三区| 首页综合国产亚洲丝袜| 亚洲精品一区二区在线观看| 成人黄色大片在线观看| 一区二区三区精品视频在线| 91精品国产一区二区| 国产美女一区二区三区| 1024亚洲合集| 3d动漫精品啪啪一区二区竹菊| 黄网站免费久久| 中文字幕一区在线| 欧美另类高清zo欧美| 国模冰冰炮一区二区| 18成人在线观看| 欧美一区二区三区免费大片| 国产福利一区在线观看| 一区二区免费在线播放| 欧美电影精品一区二区| av中文字幕不卡| 日韩国产成人精品| 中文字幕成人在线观看| 欧美日本国产视频| 国产盗摄视频一区二区三区| 亚洲一区二区三区四区在线 | 欧美一区二区三区免费观看视频| 国产精品自拍av| 亚洲一区二区在线免费看| 精品国产乱码久久久久久免费| 97se亚洲国产综合自在线观| 青娱乐精品视频| 中文字幕欧美一| 日韩欧美在线观看一区二区三区| eeuss鲁一区二区三区| 日韩美女视频在线| www.欧美日韩| 久久精品噜噜噜成人88aⅴ| 亚洲欧洲制服丝袜| 精品国产免费人成在线观看| 日本电影欧美片| 国产盗摄一区二区| 日韩精品亚洲专区| 亚洲视频图片小说| 久久久亚洲国产美女国产盗摄 | 日本一区二区三区四区 | 欧美在线免费观看亚洲| 国产精品影音先锋| 日本不卡在线视频| 一区二区三区免费网站| 中文字幕不卡在线| 精品欧美一区二区三区精品久久| 色婷婷综合久久久中文字幕| 国产一区二区三区免费看| 爽好多水快深点欧美视频| 亚洲美女精品一区| 中文字幕不卡在线| 久久亚洲春色中文字幕久久久| 欧美日韩精品一区二区三区| 91在线视频播放| 国产成人av影院| 精品综合久久久久久8888| 午夜欧美电影在线观看| 亚洲免费在线视频| 中文欧美字幕免费| 精品福利一二区| 91精品一区二区三区在线观看| 一道本成人在线| 97国产精品videossex| 大陆成人av片| 国产麻豆一精品一av一免费| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美人伦禁忌dvd放荡欲情| 国产精品一区二区在线播放| 青青草97国产精品免费观看 | 亚洲午夜久久久久| 亚洲老妇xxxxxx| 中文字幕一区免费在线观看| 国产亚洲自拍一区| 久久午夜国产精品| 精品88久久久久88久久久| 日韩一级大片在线观看| 91麻豆精品91久久久久同性| 欧美无乱码久久久免费午夜一区| 一本到高清视频免费精品| 99精品欧美一区| 99久久婷婷国产综合精品| 暴力调教一区二区三区| 成人激情午夜影院| 波多野结衣在线aⅴ中文字幕不卡| 国产成人av影院| 国产v综合v亚洲欧| 国产成人丝袜美腿| 国产成人自拍网| 国产91高潮流白浆在线麻豆| 国产91色综合久久免费分享| 国产呦萝稀缺另类资源| 国产一区二区美女| 国产成人在线色| 风间由美一区二区三区在线观看 | 一区二区在线观看不卡| 一区二区日韩av| 午夜精品久久一牛影视| 视频一区二区国产| 免费观看一级欧美片| 狠狠色丁香九九婷婷综合五月| 激情文学综合网| 国产福利精品一区| av资源网一区| 欧美性大战久久久| 9191成人精品久久| 精品久久久久av影院| 久久网站最新地址| 国产精品久久久久影院色老大| 亚洲手机成人高清视频| 亚洲一区欧美一区| 免费三级欧美电影| 国产欧美一区二区精品性色| 欧美国产一区视频在线观看| 自拍偷在线精品自拍偷无码专区| 亚洲自拍与偷拍| 日韩精品欧美精品| 激情久久久久久久久久久久久久久久| 国产一区二区主播在线| 丁香网亚洲国际| 日本精品一区二区三区高清 | 亚洲一级二级三级在线免费观看| 亚洲高清三级视频| 美女一区二区久久| 国产91丝袜在线播放0| 色偷偷88欧美精品久久久| 7777精品伊人久久久大香线蕉最新版| 精品国产三级电影在线观看| 欧美国产激情二区三区| 一区二区视频在线| 蜜桃视频在线观看一区| 懂色av一区二区在线播放| 在线亚洲一区观看| 日韩欧美亚洲国产精品字幕久久久 | 欧美日韩成人在线| 精品免费国产二区三区| 国产精品久久影院| 午夜电影网亚洲视频| 国产一区二区免费在线| 色综合久久综合网| 日韩视频在线你懂得| 国产精品毛片高清在线完整版| 亚洲五月六月丁香激情| 国产自产v一区二区三区c| 一本大道久久a久久综合婷婷| 4hu四虎永久在线影院成人| 国产日韩精品一区| 亚洲777理论| 丰满少妇在线播放bd日韩电影| 在线观看欧美精品| 久久久久九九视频| 亚洲一二三级电影| 国产精品资源在线看| 欧美日韩精品电影| 中文字幕欧美激情| 蜜桃一区二区三区在线| 91网站最新地址| 久久综合久久99| 亚洲高清免费视频| 成人美女视频在线观看| 日韩一区二区免费在线观看| 99在线精品视频| 日韩免费视频一区| 一区二区三区在线视频免费观看| 国产综合色在线| 欧美日韩午夜影院| 国产精品精品国产色婷婷| 美腿丝袜在线亚洲一区| 色系网站成人免费| 久久久久久久久蜜桃| 石原莉奈一区二区三区在线观看| 成人视屏免费看| 精品久久久久久久久久久久包黑料 | 欧美日韩视频一区二区| 中文字幕av在线一区二区三区| 日韩电影一二三区| 在线观看日韩一区| 国产精品美女久久久久久久| 久久国产视频网| 欧美日韩高清一区二区| 亚洲人成影院在线观看| 国产99久久久国产精品免费看| 日韩欧美在线观看一区二区三区|