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

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

?? acvtool.c

?? 勁舞團ACV源碼
?? C
字號:
#include "zlib.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "windows.h"
#include "tchar.h"
#include <locale.h>

char basedir[MAX_PATH] = "decompress";
int basedirlen = 0;
FILE *facv = NULL;
FILE *fp = NULL;
unsigned long dwFileCount = 0;
unsigned long ptr = 0;
unsigned long curid = 0;
BOOL unicode = FALSE;
unsigned int start_ptr = 8;
unsigned int each_block_size = 180;

BOOL FolderExist(char *strPath)
{
    WIN32_FIND_DATA  wfd;
    BOOL rValue = FALSE;
    char szPath[MAX_PATH] = {0};
    HANDLE hFind = NULL;
    FILE *tmp = NULL;

    strcpy(szPath,strPath);
    if (strlen(szPath) == 3 && ((szPath[0] >= 'A' && szPath[0] <= 'Z') || (szPath[0] >= 'a' && szPath[0] <= 'z')) && szPath[1] == ':')
    {
        return TRUE;
    }else{
        strcat(szPath,".");
    }

    hFind = FindFirstFile(szPath, &wfd);
    if ((hFind != INVALID_HANDLE_VALUE) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
    {
       rValue = TRUE;   
    }
    FindClose(hFind);
    return rValue;
}

BOOL FileExist(char *strFileName)
{
    WIN32_FIND_DATA  wfd;
    return FindFirstFile(strFileName, &wfd) != INVALID_HANDLE_VALUE;
}

BOOL CreateFolder(char *strPath)
{
    SECURITY_ATTRIBUTES attrib;
    attrib.bInheritHandle = FALSE;
    attrib.lpSecurityDescriptor = NULL;
    attrib.nLength = sizeof(SECURITY_ATTRIBUTES);
    //é????¨ò?μ?ê?D??éò?ê????£ ?±?óreturn ::CreateDirectory( path, NULL); ?′?é
     return CreateDirectory( strPath, &attrib);
}

void saveFile(char *fullpath,char *filename)
{
    int l = 0;
    int n = 0;
    char *buf;
    char *dbuf;
    unsigned long flag = 0x64D8FE02;

    printf("add file: %s     ",filename);
    fp = fopen(fullpath,"rb");
    if (fp == NULL)
    {
        printf("Open file error!\n");
        ExitProcess(0);
    }
    fseek(fp,0,SEEK_END);
    l = ftell(fp);
    fseek(fp,0,SEEK_SET);
    n = compressBound(l);
    buf = (char *)malloc(l);
    if (buf == NULL)
    {
        printf("Allocate memroy error!\n");
        ExitProcess(0);
    }
    dbuf = (char *)malloc(n);
    if (dbuf == NULL)
    {
        printf("Allocate memroy error!\n");
        free(buf);
        ExitProcess(0);
    }
    fread(buf,l,sizeof(char),fp);
    compress(dbuf,&n,buf,l);

    fseek(facv,start_ptr+(curid++)*each_block_size,SEEK_SET);
    fwrite(filename,160,sizeof(char),facv);
    fwrite(&flag,sizeof(flag),1,facv);
    fwrite(&n,sizeof(n),1,facv);
    fwrite(&l,sizeof(l),1,facv);
    fwrite(&ptr,sizeof(ptr),1,facv);

    fseek(facv,start_ptr+each_block_size*dwFileCount+ptr,SEEK_SET);
    fwrite(dbuf,n,sizeof(char),facv);
    printf("compress len: %d\n",n);
    ptr+=n;
    free(buf);
    free(dbuf);
    fclose(fp);

    //ExitProcess(0);
}

void saveFileW(wchar_t *wfullpath,wchar_t *wfilename)
{
    int l = 0;
    int n = 0;
    char *buf;
    char *dbuf;
    unsigned long flag = 0x64D8FE02;
    char filename[MAX_PATH];
    HANDLE hFile;
    DWORD dwlen;

    ZeroMemory(filename,sizeof(filename));
    WideCharToMultiByte(949, 0, wfilename, -1, filename, sizeof(filename), NULL, FALSE);

    printf("add file: %s     ",filename);
   
    hFile = CreateFileW(wfullpath, GENERIC_READ, FILE_SHARE_DELETE | FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile == NULL)
    {
        printf("Open file error!\n");
        ExitProcess(0);
    }
    l = GetFileSize(hFile, NULL);
    n = compressBound(l);
    buf = (char *)malloc(l);
    if (buf == NULL)
    {
        printf("Allocate memroy error!\n");
        ExitProcess(0);
    }
    dbuf = (char *)malloc(n);
    if (dbuf == NULL)
    {
        printf("Allocate memroy error!\n");
        free(buf);
        ExitProcess(0);
    }
    ReadFile(hFile,buf,l,&dwlen,NULL);
    compress(dbuf,&n,buf,l);

    fseek(facv,start_ptr+(curid++)*each_block_size,SEEK_SET);
    fwrite(filename,160,sizeof(char),facv);
    fwrite(&flag,sizeof(flag),1,facv);
    fwrite(&n,sizeof(n),1,facv);
    fwrite(&l,sizeof(l),1,facv);
    fwrite(&ptr,sizeof(ptr),1,facv);

    fseek(facv,start_ptr+each_block_size*dwFileCount+ptr,SEEK_SET);
    fwrite(dbuf,n,sizeof(char),facv);
    printf("compress len: %d\n",n);
    ptr+=n;
    free(buf);
    free(dbuf);
    CloseHandle(hFile);
}

void EnumFile(char *strPath)
{
    WIN32_FIND_DATA  wfd;
    char szPath[MAX_PATH] = {0};
    char szTmpPath[MAX_PATH] = {0};
    HANDLE hFind = NULL;
    FILE *tmp = NULL;

    strcpy(szPath,strPath);
    strcat(szPath,"*");

    hFind = FindFirstFile(szPath, &wfd);
    if ((hFind != INVALID_HANDLE_VALUE))
    {
        if (strlen(wfd.cFileName) && *wfd.cFileName == '.')
        {
            FindNextFile(hFind,&wfd);
            while (FindNextFile(hFind,&wfd))
            {
                ZeroMemory(szTmpPath,MAX_PATH);
                strcpy(szTmpPath,strPath);
                strcat(szTmpPath,wfd.cFileName);
                if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
                {
                    strcat(szTmpPath,"\\");
                    EnumFile(szTmpPath);
                }else
                {
                    saveFile(szTmpPath,szTmpPath+basedirlen);
                }
            }
        }
       
    }
    FindClose(hFind);
}

void EnumFileW(wchar_t *strPath)
{
    WIN32_FIND_DATAW  wfd;
    wchar_t szPath[MAX_PATH] = {0};
    wchar_t szTmpPath[MAX_PATH] = {0};
    HANDLE hFind = NULL;
    FILE *tmp = NULL;

    wcscpy(szPath,strPath);
    wcscat(szPath,L"*");

    hFind = FindFirstFileW(szPath, &wfd);
    if ((hFind != INVALID_HANDLE_VALUE))
    {
        if (wcslen(wfd.cFileName) && *wfd.cFileName == _TEXT('.'))
        {
            FindNextFileW(hFind,&wfd);
            while (FindNextFileW(hFind,&wfd))
            {
                ZeroMemory(szTmpPath,MAX_PATH);
                wcscpy(szTmpPath,strPath);
                wcscat(szTmpPath,wfd.cFileName);
                if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
                {
                    wcscat(szTmpPath,L"\\");
                    EnumFileW(szTmpPath);
                }else
                {
                    saveFileW(szTmpPath,szTmpPath+basedirlen);
                }
            }
        }
       
    }
    FindClose(hFind);
}

int EnumFileCount(char *strPath)
{
    WIN32_FIND_DATA  wfd;
    char szPath[MAX_PATH] = {0};
    char szTmpPath[MAX_PATH] = {0};
    HANDLE hFind = NULL;
    FILE *tmp = NULL;
    DWORD fileCount=0;

    strcpy(szPath,strPath);
    strcat(szPath,"*");

    hFind = FindFirstFile(szPath, &wfd);
    if ((hFind != INVALID_HANDLE_VALUE))
    {
        if (strlen(wfd.cFileName) && *wfd.cFileName == '.')
        {
            FindNextFile(hFind,&wfd);
            while (FindNextFile(hFind,&wfd))
            {
                strcpy(szTmpPath,strPath);
                strcat(szTmpPath,wfd.cFileName);
                if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
                {
                    strcat(szTmpPath,"\\");
                    fileCount+=EnumFileCount(szTmpPath);
                }else
                {
                    fileCount++;
                }
            }
        }
       
    }
    FindClose(hFind);
    return fileCount;
}

void gendir(char *file)
{
    char dir[MAX_PATH];
    int i,l;

    l=strlen(file);
    for (i=0;i<l;i++)
    {
        if (file[i] == '\\')
        {
            memset(dir,0,MAX_PATH);
            strcpy(dir,basedir);
            memcpy(dir+basedirlen,file,i);
            if (!FolderExist(dir))
            {
                printf("generate folder: %s...",dir);
                if (CreateFolder(dir))
                {
                    printf("OK.\n");
                }else
                {
                    printf("Failure.\nThe program break.\n");
                    ExitProcess(0);
                }
            }
        }
    }
}

int main(int argc, char* argv[])
{
    long file_num = 0;
    char filename[180];
    char szfile[MAX_PATH];
    unsigned long compress_len,filelen,ptr;
    long i=0;
    char *compdata = NULL;
    char *buf = NULL;
    DWORD startTime = GetTickCount();
    BOOL listmode = FALSE;
    BOOL packmode = FALSE;
    char c = 0;
    int k=0;
    char acv_file[MAX_PATH] = {0};
    BOOL baseupdated = FALSE;
    wchar_t szUniBuf[MAX_PATH];
    HANDLE hFile = NULL;
    DWORD dwlen = 0;
    DWORD flag = 0;
    DWORD tmp_flag = 0;
    int xi;
    unsigned char detFlag[4] = {0};

    printf("ACV tool 5.2\n");
    printf("瘋神: wangmingzhangfj@163.com  2009.2.14@ China\n");
    printf("QQ:61918534\n");

    if (argc > 1)
    {
        for (i=1;i<argc;i++)
        {
            if (argv[i][0] == '-')
            {
                switch (argv[i][1])
                {
                    case 'l': listmode=TRUE; break;
                    case 'c': packmode=TRUE; break;
                    case 'u': unicode=TRUE; break;
                }
            }else
            {
                switch (k++)
                {
                    case 0: strcpy(acv_file,argv[i]); break;
                    case 1: strcpy(basedir,argv[i]); baseupdated = TRUE; break;
                }
            }
        }
    }

    if (argc == 1 || strlen(acv_file) == 0 || (packmode && !baseupdated))
    {
        printf("usage: acv_tool avcfilename [basedir] [option]\n");
        printf("option:\n");
        printf("-l        list file only.\n");
        printf("-c        compress mode.\n");
        printf("-u        unicode mode.\n");
        printf("\nexample:\n");
        printf("acv_tool 001.acv dec        decompress 001.acv to dec folder.\n");
        printf("acv_tool 001.acv dec -c        compress dec folder to 001.acv.\n");
        printf("acv_tool 001.acv -l        get the file list for 001.acv.\n");
        return 0;
    }

    if (basedir[strlen(basedir)-1] != '\\'){
        strcat(basedir,"\\");
    }
    basedirlen = strlen(basedir);

    if (packmode)
    {
        if (!FolderExist(basedir))
        {
            printf("base directory not exists!\n");
            return 0;
        }
        if (FileExist(acv_file))
        {
            printf("File exists! Replace the acv file? [Y/n]");
            c = getch();
            printf("\n");
            if (c != 'y' && c != 'Y' && c != 13)
            {
                return 1;
            }
        }
        dwFileCount = EnumFileCount(basedir);
        facv = fopen(acv_file,"wb");
        if (facv == NULL)
        {
            printf("Save file error!\n");
            return 0;
        }
        fwrite(&dwFileCount,sizeof(dwFileCount),1,facv);
        if (unicode)
        {
            MultiByteToWideChar(949, 0, basedir, -1, szUniBuf, sizeof(szUniBuf));
            EnumFileW(szUniBuf);
        }else
        {
            EnumFile(basedir);
        }
        fclose(facv);
    }else
    {
        if (!FolderExist(basedir))
        {
            printf("base directory not exists! automatic create a new folder...");
            if (CreateFolder(basedir))
            {
                printf("OK.\n");
            }else
            {
                printf("Failure.\nThe program break.");
                return 0;
            }
        }
       
        facv = fopen(acv_file,"rb");
        if (facv == NULL)
        {
            printf("read file error!\n");
            return 0;
        }
        printf("File version: ");
        fread(detFlag,sizeof(char),4,facv);
        if (detFlag[2] == 0x01 && detFlag[3] == 0xFF)
        {
            start_ptr = 8;
            each_block_size = 180;
            printf("1.1\n");
        }else
        {
            printf("1.0\n");
        }
        printf("ptr: %d each_block_size:%d\n",start_ptr,each_block_size);
        fseek(facv,start_ptr-4,SEEK_SET);
        fread(&file_num,sizeof(long),1,facv);
        printf("file num: %u\n",file_num);
        for (i=0;i<file_num;i++)
        {
            fseek(facv,start_ptr+i*each_block_size,SEEK_SET);
            fread(filename,sizeof(char),each_block_size,facv);

            memcpy(&flag,filename+160,4);
            memcpy(&compress_len,filename+164,4);
            memcpy(&filelen,filename+168,4);
            memcpy(&ptr,filename+172,4);
            if (each_block_size == 180) memcpy(&tmp_flag,filename+176,4);
            //printf("flag: %x\n",tmp_flag);    // same as the file first
            if (!listmode)
            {
                compdata = (char *)malloc(compress_len+1);
                if (compdata == NULL)
                {
                    printf("allocate memroy error!\n");
                    break;
                }
                buf = (char *)malloc(filelen);
                if (buf == NULL)
                {
                    printf("allocate memroy error!\n");
                    free(compdata);
                    break;
                }
                fseek(facv,start_ptr+file_num*each_block_size+ptr,SEEK_SET);
                //compdata[0]=0x78;
                //compdata[1] = 0x9C;
                fread(compdata,compress_len,sizeof(char),facv);

                if (uncompress(buf,&filelen,compdata,compress_len) != 0)
                {
                    printf("decompress Error!\n");
                    return 0;
                }

                gendir(filename);
               
                memcpy(szfile,basedir,basedirlen+1);
                strcat(szfile,filename);

                if (unicode)
                {
                    MultiByteToWideChar(949, 0, szfile, -1, szUniBuf, sizeof(szUniBuf));
                    hFile = CreateFileW(szUniBuf, GENERIC_WRITE, FILE_SHARE_DELETE, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
                    WriteFile(hFile, buf, filelen, &dwlen, NULL);
                    CloseHandle(hFile);
                }else
                {
                    fp = fopen(szfile,"wb");
                    if (fp != NULL)
                    {
                        fwrite(buf, filelen, sizeof(char), fp);
                        //fwrite(compdata, compress_len, sizeof(char), fp);
                        fclose(fp);
                    }else
                    {
                        printf("Write file: %s failure.\n");
                        free(buf);
                        break;
                    }
                }
                free(compdata);
                free(buf);
                //if (i==2) break;
            }
           
            printf("file: %s\tc_len:%u   flag: %u  size:%u  pt: %u\n",filename,compress_len,flag,filelen,ptr);
            //WideCharToMultiByte(949, 0, szUniBuf, -1, filename, sizeof(filename), NULL, FALSE);
        }
        fclose(facv);
    } // PACK MDOE
    printf("Process in %d ms.\n",GetTickCount()-startTime);
    return 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区二区在线观看| 亚洲成人免费看| 亚洲一区日韩精品中文字幕| 五月婷婷激情综合网| 精品中文字幕一区二区| 91美女精品福利| 日韩免费看的电影| 亚洲欧洲制服丝袜| 蜜桃视频一区二区三区| 97精品电影院| 精品美女在线观看| 一区二区三区四区视频精品免费 | 成人美女视频在线观看18| 91在线视频播放地址| 5566中文字幕一区二区电影| 国产欧美视频在线观看| 亚洲一区二区av在线| 国内精品国产成人国产三级粉色 | 亚洲在线中文字幕| 国产精品一区在线观看你懂的| 波多野结衣一区二区三区 | 久久99国产精品成人| 不卡的av网站| 亚洲精品一区二区三区影院| 最新成人av在线| 国产一区在线精品| 欧美日韩三级在线| 综合网在线视频| 精品中文字幕一区二区小辣椒| 91福利视频久久久久| 国产亚洲自拍一区| 日韩av中文在线观看| av在线这里只有精品| 精品三级在线看| 亚洲高清在线视频| 成人av在线一区二区三区| 日韩精品一区二| 亚洲成av人在线观看| 91免费国产在线| 久久久久久久久久久久久夜| 亚洲成av人片一区二区梦乃| 99久久婷婷国产综合精品| 久久久久国产精品麻豆| 奇米精品一区二区三区四区 | 日韩和欧美一区二区| 一本大道久久a久久精品综合| 久久久久久久久久看片| 另类人妖一区二区av| 欧美久久婷婷综合色| 一个色在线综合| va亚洲va日韩不卡在线观看| 亚洲国产精品国自产拍av| 久久av资源网| 日韩一二在线观看| 五月天亚洲婷婷| 欧美视频中文一区二区三区在线观看| 国产精品国产三级国产aⅴ入口 | 国产欧美一区二区在线观看| 日本一道高清亚洲日美韩| 欧美日韩一级二级| 亚洲二区在线视频| 欧美三区在线观看| 亚洲成人一区二区| 欧美日韩色综合| 亚洲成在人线免费| 91精品综合久久久久久| 婷婷久久综合九色国产成人 | 久久99热国产| 欧美电影免费观看高清完整版在线 | 韩国在线一区二区| 日韩免费在线观看| 精品一区二区三区视频| 2020国产精品自拍| 国产成人在线观看免费网站| 国产亚洲欧美一级| 成人黄色一级视频| 亚洲欧美一区二区三区国产精品| 91小宝寻花一区二区三区| 一区二区三区在线视频观看| 在线视频你懂得一区二区三区| 一区二区日韩av| 欧美日韩国产一区二区三区地区| 亚洲高清免费观看高清完整版在线观看| 在线观看视频91| 日日噜噜夜夜狠狠视频欧美人 | 久久99精品久久只有精品| 久久看人人爽人人| 成人精品视频网站| 亚洲欧美激情小说另类| 欧美午夜精品久久久久久超碰 | 日韩欧美一区在线| 国产一区欧美日韩| 国产精品久久久久永久免费观看| 91原创在线视频| 午夜精品福利在线| 精品日韩av一区二区| 成人av资源在线| 亚洲一区二区成人在线观看| 4438成人网| 国产精品69毛片高清亚洲| 中文字幕亚洲成人| 欧美酷刑日本凌虐凌虐| 韩国欧美国产1区| 国产精品成人一区二区三区夜夜夜| 色吊一区二区三区| 久久精品国产99久久6| 国产欧美一区二区精品婷婷| 在线观看一区不卡| 黑人精品欧美一区二区蜜桃| 中文字幕一区二区三区色视频| 欧美日韩一区二区在线观看视频| 美女视频一区二区三区| 国产精品久久毛片a| 欧美猛男gaygay网站| 国产精品小仙女| 亚洲高清不卡在线观看| 久久亚洲精品小早川怜子| 日本精品一区二区三区高清| 青娱乐精品在线视频| 亚洲欧美自拍偷拍| 日韩精品一区国产麻豆| eeuss影院一区二区三区| 日韩国产精品久久久| 欧美国产乱子伦 | 乱中年女人伦av一区二区| 亚洲欧洲一区二区在线播放| 日韩一区二区三区视频在线观看| 成人手机在线视频| 日日摸夜夜添夜夜添国产精品| 中文字幕乱码一区二区免费| 欧美日韩精品一区二区三区| 成人自拍视频在线| 日本亚洲欧美天堂免费| 专区另类欧美日韩| 日韩欧美综合一区| 欧美亚洲高清一区二区三区不卡| 国产福利91精品一区| 日韩激情视频网站| 一二三区精品视频| 国产欧美日韩在线观看| 91麻豆精品国产91久久久资源速度 | 日韩久久久精品| 欧美无砖砖区免费| 成人av资源网站| 国产在线国偷精品免费看| 天天综合天天做天天综合| 亚洲日本va午夜在线影院| 2020日本不卡一区二区视频| 91.麻豆视频| 欧美在线三级电影| 成人激情动漫在线观看| 国产又粗又猛又爽又黄91精品| 午夜不卡av在线| 亚洲一区二区三区激情| 亚洲欧洲性图库| 中文一区在线播放 | 国产.欧美.日韩| 久久国产剧场电影| 日韩成人伦理电影在线观看| 亚洲午夜久久久久久久久电影院| 国产精品日日摸夜夜摸av| 久久久国产一区二区三区四区小说 | 一区二区三区色| 亚洲欧美偷拍三级| 国产精品美女一区二区| 久久精品视频免费观看| 久久免费精品国产久精品久久久久| 日韩一区二区三区观看| 欧美一区二区三区日韩视频| 欧美日韩大陆一区二区| 欧美日韩久久一区| 欧美日韩一区视频| 欧美日韩国产一区二区三区地区| 91国产视频在线观看| 欧美中文字幕亚洲一区二区va在线 | 国产亚洲欧美一区在线观看| 久久亚洲精精品中文字幕早川悠里 | 亚洲国产乱码最新视频 | 欧美一卡2卡3卡4卡| 在线播放欧美女士性生活| 欧美日韩一区三区| 欧美精选一区二区| 欧美一区二区三级| 欧美一级高清片| 欧美v国产在线一区二区三区| 日韩欧美在线综合网| 日韩精品资源二区在线| 337p粉嫩大胆噜噜噜噜噜91av| 26uuu亚洲综合色| 国产精品免费丝袜| 亚洲三级视频在线观看| 一区二区三区在线免费观看| 亚洲一区二区三区四区在线| 亚洲va中文字幕| 男男gaygay亚洲| 国产精品1区2区| 99国产欧美另类久久久精品| 色噜噜偷拍精品综合在线| 欧美图片一区二区三区| 日韩女优制服丝袜电影|