home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 January / VPR0101A.BIN / OLS / TAR32053 / tar32053.exe / MINITAR / MINITAR.C next >
C/C++ Source or Header  |  1999-05-23  |  2KB  |  92 lines

  1. /*
  2.     minitar
  3.     tar32.dll test program
  4.     by Yoshioka Tsuneo(QWF00133@nifty.ne.jp)
  5.     Copy,Edit,Re-distribute FREE!
  6. */
  7. #include <windows.h>
  8. #include <stdio.h>
  9.  
  10. #define FNAME_MAX32        512
  11. typedef struct {
  12.     DWORD             dwOriginalSize;
  13.     DWORD             dwCompressedSize;
  14.     DWORD            dwCRC;
  15.     UINT            uFlag;
  16.     UINT            uOSType;
  17.     WORD            wRatio;
  18.     WORD            wDate;
  19.     WORD             wTime;
  20.     char            szFileName[FNAME_MAX32 + 1];
  21.     char            dummy1[3];
  22.     char            szAttribute[8];
  23.     char            szMode[8];
  24. }    INDIVIDUALINFO;
  25.  
  26. int (WINAPI *Tar)(HWND hwnd,char *cmd,char *buff,int buflen);
  27. int (WINAPI *TarCheckArchive)(char *fname,int mode);
  28. HANDLE (WINAPI *TarOpenArchive)(HANDLE hwnd,char *fname,int mode);
  29. int    (WINAPI *TarCloseArchive)(HANDLE harc);
  30. int (WINAPI *TarFindFirst)(HANDLE hwnd,char *fname,INDIVIDUALINFO *pinfo);
  31. int (WINAPI *TarFindNext)(HANDLE hwnd,INDIVIDUALINFO *pinfo);
  32.  
  33. int (WINAPI *TarGetFileCount)(LPCSTR _szArcFile);
  34.  
  35. int main(int argc,char *argv[])
  36. {
  37.     char cmd[1000] = "";
  38.     int i;
  39.     char buff[1001];
  40.     int ret;
  41.     HANDLE hLib;
  42.  
  43.     for(i=1;i<argc;i++){
  44.         strcat(cmd,argv[i]);
  45.         strcat(cmd," ");
  46.     }
  47.     hLib = LoadLibrary("tar32.dll");
  48.  
  49.     if(argc==3 && (strcmp(argv[1],"check")==0 || strcmp(argv[1],"find")==0)){
  50.         TarCheckArchive = GetProcAddress(hLib,"TarCheckArchive");
  51.         ret = TarCheckArchive(argv[2],0);
  52.     }
  53.     
  54.     if(argc>=3 && strcmp(argv[1],"find")==0){
  55.         HANDLE harc;
  56.         INDIVIDUALINFO info;
  57.         char *wildname="";
  58.  
  59.         TarFindFirst = GetProcAddress(hLib,"TarFindFirst");
  60.         TarFindNext = GetProcAddress(hLib,"TarFindNext");
  61.         TarOpenArchive = GetProcAddress(hLib,"TarOpenArchive");
  62.         TarCloseArchive = GetProcAddress(hLib,"TarCloseArchive");
  63.         
  64.         if((harc = TarOpenArchive(NULL,argv[2],0))==NULL){
  65.             exit(1);
  66.         }
  67.         if(argc>=4){wildname=argv[3];}
  68.         ret = TarFindFirst(harc,wildname,&info);
  69.         while(ret!=-1){
  70.             ret = TarFindNext(harc,&info);
  71.         }
  72.         ret = TarCloseArchive(harc);
  73.     }
  74.     if(0){
  75.         /* system("command.com"); */
  76.         TarGetFileCount = GetProcAddress(hLib,"TarGetFileCount");
  77.         ret = TarGetFileCount("c:\\dostool\\utool\\uxtl305.tgz");
  78.         ret = TarGetFileCount("c:\\dostool\\utool\\uxtl305.tar.bz2");
  79. /*        ret = TarGetFileCount("c:\\dostool\\utool\\uxtl305.tgz");
  80.         ret = TarGetFileCount("c:\\dostool\\utool\\uxtl305.tgz");*/
  81.         //ret = TarGetFileCount("aiu.tgz");
  82.     }
  83.     {
  84.         Tar = GetProcAddress(hLib,"Tar");
  85.         ret = Tar(NULL,cmd,buff,1000);
  86.     }
  87.     FreeLibrary(hLib);
  88.     puts(buff);
  89.     return 0;
  90. }
  91.  
  92.