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

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

?? extract_chmlib.c

?? 解壓縮chm格式文件的源代碼
?? C
字號:
/* $Id: extract_chmLib.c,v 1.4 2002/10/10 03:24:51 jedwin Exp $ *//*************************************************************************** *          extract_chmLib.c - CHM archive extractor                       * *                           -------------------                           * *                                                                         * *  author:     Jed Wing <jedwin@ugcs.caltech.edu>                         * *  notes:      This is a quick-and-dirty chm archive extractor.           * ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU Lesser General Public License as        * *   published by the Free Software Foundation; either version 2.1 of the  * *   License, or (at your option) any later version.                       * *                                                                         * ***************************************************************************/#include "chm_lib.h"
#include <stdio.h>#include <stdlib.h>#ifdef WIN32#include <windows.h>#include <direct.h>#include <string.h>#define mkdir(X, Y) _mkdir(X)#define snprintf _snprintf#define rindex strrchr#else#if __i386__#include <string.h>#else#include <strings.h>#endif#include <unistd.h>#include <sys/stat.h>#include <sys/types.h>#endifstruct extract_context{    const char *base_path;};static int dir_exists(const char *path){#ifdef WIN32        /* why doesn't this work?!? */        HANDLE hFile;        hFile = CreateFileA(path,                        FILE_LIST_DIRECTORY,                        0,                        NULL,                        OPEN_EXISTING,                        FILE_ATTRIBUTE_NORMAL,                        NULL);        if (hFile != INVALID_HANDLE_VALUE)        {        CloseHandle(hFile);        return 1;        }        else        return 0;#else        struct stat statbuf;        if (stat(path, &statbuf) != -1)                return 1;        else                return 0;#endif}static int rmkdir(char *path){    /*     * strip off trailing components unless we can stat the directory, or we     * have run out of components     */    char *i = rindex(path, '/');    if(path[0] == '\0'  ||  dir_exists(path))        return 0;    if (i != NULL)    {        *i = '\0';        rmkdir(path);        *i = '/';        mkdir(path, 0777);    }#ifdef WIN32        return 0;#else    if (dir_exists(path))        return 0;    else        return -1;#endif}/* * callback function for enumerate API */int _extract_callback(struct chmFile *h,              struct chmUnitInfo *ui,              void *context){    unsigned char buffer[32768];    struct extract_context *ctx = (struct extract_context *)context;    char *i;    if (ui->path[0] != '/')        return CHM_ENUMERATOR_CONTINUE;    if (snprintf(buffer, sizeof(buffer), "%s%s", ctx->base_path, ui->path) > 1024)        return CHM_ENUMERATOR_FAILURE;    if (ui->length != 0)    {        FILE *fout;        LONGINT64 len, remain=ui->length;        LONGUINT64 offset = 0;        printf("--> %s\n", ui->path);        if ((fout = fopen(buffer, "wb")) == NULL)	{	    /* make sure that it isn't just a missing directory before we abort */ 	    unsigned char newbuf[32768];	    strcpy(newbuf, buffer);	    i = rindex(newbuf, '/');	    *i = '\0';	    rmkdir(newbuf);	    if ((fout = fopen(buffer, "wb")) == NULL)              return CHM_ENUMERATOR_FAILURE;	}        while (remain != 0)        {            len = chm_retrieve_object(h, ui, buffer, offset, 32768);            if (len > 0)            {                fwrite(buffer, 1, (size_t)len, fout);                offset += len;                remain -= len;            }            else            {                fprintf(stderr, "incomplete file: %s\n", ui->path);                break;            }        }        fclose(fout);    }    else    {        if (rmkdir(buffer) == -1)            return CHM_ENUMERATOR_FAILURE;    }    return CHM_ENUMERATOR_CONTINUE;}int main(int c, char **v){    struct chmFile *h;    struct extract_context ec;

    if (c < 3)    {        fprintf(stderr, "usage: %s <chmfile> <outdir>\n", v[0]);        exit(1);    }    h = chm_open(v[1]);    if (h == NULL)    {        fprintf(stderr, "failed to open %s\n", v[1]);        exit(1);    }    printf("%s:\n", v[1]);    ec.base_path = v[2];    if (! chm_enumerate(h,                        CHM_ENUMERATE_ALL,                        _extract_callback,                        (void *)&ec))        printf("   *** ERROR ***\n");    chm_close(h);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人啪午夜精品网站男同| 亚洲午夜精品网| 国产一区二区成人久久免费影院 | 欧美另类一区二区三区| 五月天亚洲精品| 欧美精品精品一区| 久久超碰97中文字幕| 亚洲国产精品成人综合| 在线看不卡av| 日韩一区精品视频| www激情久久| 波多野结衣精品在线| 亚洲影院在线观看| 欧美一区二区三区白人| 国产精品资源网站| 亚洲天堂网中文字| 制服丝袜一区二区三区| 国产美女娇喘av呻吟久久| 国产精品美女一区二区在线观看| 91久久精品国产91性色tv| 日日噜噜夜夜狠狠视频欧美人| 欧美不卡在线视频| 不卡欧美aaaaa| 日本成人在线看| 国产亚洲精品精华液| 在线日韩国产精品| 国内精品久久久久影院一蜜桃| 石原莉奈一区二区三区在线观看| 精品国产一二三区| 99re热视频精品| 奇米一区二区三区av| 国产精品区一区二区三区| 欧美日本一区二区三区四区| 国产精品123| 香蕉加勒比综合久久| 久久久久久久久久久久电影| 精品视频在线免费观看| 国产99久久久国产精品潘金| 婷婷综合另类小说色区| 欧美激情综合网| 日韩欧美国产高清| 色欧美乱欧美15图片| 国产一区二区三区免费观看| 亚洲一区电影777| 国产精品看片你懂得| 在线电影欧美成精品| 一本大道久久a久久精二百| 久久精品99国产精品日本| 一区二区三区国产精华| 国产清纯白嫩初高生在线观看91| 欧美麻豆精品久久久久久| www.欧美.com| 国产激情一区二区三区四区 | 91免费观看国产| 精品一区二区在线视频| 亚洲bdsm女犯bdsm网站| 亚洲人午夜精品天堂一二香蕉| 欧美精品一区二区三区久久久| 欧美日韩在线播放一区| 日本韩国欧美一区| www.一区二区| 国产91精品欧美| 国产成人在线看| 国产一级精品在线| 韩国毛片一区二区三区| 美女在线一区二区| 午夜日韩在线电影| 伊人色综合久久天天人手人婷| 中文字幕巨乱亚洲| 国产人伦精品一区二区| 久久精品一级爱片| 久久久国产精品麻豆| 久久蜜桃av一区精品变态类天堂 | 成人免费看的视频| 国产成人丝袜美腿| 国产成人鲁色资源国产91色综| 久久精品免费看| 精品一区二区av| 色偷偷一区二区三区| 国产成人免费高清| 另类人妖一区二区av| 九色综合国产一区二区三区| 久久99精品久久久久久国产越南| 热久久免费视频| 麻豆国产一区二区| 国产精品99久久久久久宅男| 麻豆91免费观看| 狠狠色狠狠色综合日日91app| 精品一区二区三区视频| 国产精品综合在线视频| 国产成人免费视频精品含羞草妖精| 国产资源精品在线观看| 国产99精品国产| 色综合视频在线观看| 在线观看视频一区| 7777精品伊人久久久大香线蕉经典版下载| 欧美色精品在线视频| 日韩欧美在线影院| 久久这里只有精品6| 国产亚洲人成网站| 一区二区三区在线免费观看| 香港成人在线视频| 国产一区美女在线| 97精品久久久午夜一区二区三区 | 欧美一级专区免费大片| 精品国产乱码久久久久久夜甘婷婷| 精品国产91久久久久久久妲己| 国产日本亚洲高清| 亚洲福利一区二区| 国产一区在线观看麻豆| 99视频有精品| 在线播放/欧美激情| 精品999久久久| 亚洲欧美色图小说| 免费日本视频一区| 波多野结衣精品在线| 欧美电影在线免费观看| 亚洲精品在线一区二区| 一区二区理论电影在线观看| 秋霞影院一区二区| 不卡av在线网| 欧美一区二区福利在线| 中文字幕日韩一区二区| 免费久久99精品国产| 91丨porny丨国产入口| 日韩视频永久免费| 亚洲男人都懂的| 国内外成人在线| 欧美日韩国产一区二区三区地区| 久久久久久9999| 午夜私人影院久久久久| 成人高清免费观看| 欧美一区二区三区四区高清 | 亚洲亚洲人成综合网络| 国产激情视频一区二区在线观看| 欧美视频在线观看一区| 欧美国产一区在线| 裸体在线国模精品偷拍| 色狠狠综合天天综合综合| 久久久久综合网| 免费成人在线观看| 欧美午夜片在线看| 国产精品短视频| 国产精品一区2区| 欧美一区二区三区在线观看视频 | 欧美理论电影在线| 日韩美女视频一区二区| 国产美女在线精品| 精品国产欧美一区二区| 日韩精品一区第一页| 欧美色男人天堂| 亚洲精品国产无套在线观| 制服丝袜亚洲色图| 亚洲人成网站影音先锋播放| 国产91在线看| 国产午夜精品一区二区三区嫩草| 蜜桃久久久久久久| 欧美一二三四在线| 日韩中文字幕区一区有砖一区| 在线亚洲高清视频| 亚洲天天做日日做天天谢日日欢| 大白屁股一区二区视频| 久久婷婷一区二区三区| 精品一区二区三区视频| 精品国产不卡一区二区三区| 久久国内精品视频| 日韩视频在线永久播放| 美女免费视频一区| 欧美一级免费观看| 另类小说欧美激情| 久久伊99综合婷婷久久伊| 久久se这里有精品| 久久久久久免费| 岛国精品在线播放| 国产精品欧美一级免费| 99久久久免费精品国产一区二区| 国产精品欧美一区喷水| 不卡视频在线看| 亚洲免费观看视频| 欧美色视频在线观看| 日本不卡的三区四区五区| 欧美大胆一级视频| 国产精品亚洲а∨天堂免在线| 国产亚洲一本大道中文在线| 成人性色生活片免费看爆迷你毛片| 国产精品你懂的在线欣赏| jlzzjlzz亚洲女人18| 一区二区国产视频| 91精品在线观看入口| 加勒比av一区二区| 国产精品美女久久久久久久久 | 欧美大胆人体bbbb| 国产成人在线免费| 亚洲激情自拍视频| 欧美一级欧美三级| 成人sese在线| 婷婷中文字幕综合| 国产亚洲欧美日韩日本| 日本高清视频一区二区| 美女视频网站久久|