home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1997 #2 / amigaacscoverdisc / amigascene / diskmagazines / izviestia / izviestia_10.lha / Izviestia_10 / BonusStuff / XPK / Pack / Pack.c < prev   
C/C++ Source or Header  |  1996-08-12  |  1KB  |  75 lines

  1. #include <proto/exec.h>
  2. #include <proto/dos.h>
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. #include <libraries/xpk.h>
  8.  
  9. struct Library *XpkBase;
  10.  
  11. BPTR lock;
  12. char errbuf[300];
  13.  
  14. void end(int kod);
  15.  
  16. void main(int argc, char *argv[])
  17. {
  18.    XFIB xfib;
  19.  
  20.    if(argc != 4)
  21.    {
  22.       printf("XPK file-packer. Usage:\n%s in_file out_file method\n", argv[0]);
  23.       end(100);
  24.    }
  25.  
  26.    if(!(XpkBase = OpenLibrary(XPKNAME, 0)))
  27.    {
  28.       printf("Cannot open "XPKNAME"\n");
  29.       end(10);
  30.    }
  31.  
  32.    if(!(lock = Lock(argv[1], ACCESS_READ)))
  33.    {
  34.       printf("Error %ld reading '%s'\n", IoErr(), argv[1]);
  35.       end(20);
  36.    }
  37.  
  38.    if(XpkExamineTags(&xfib, XPK_InName, argv[1], TAG_DONE))
  39.    {
  40.       printf("Error examining '%s'\n", argv[1]);
  41.       end(40);
  42.    }
  43.  
  44.    if(xfib.Type != XPKTYPE_UNPACKED)
  45.    {
  46.       printf("Skipping (already packed) '%s'\n", argv[1]);
  47.       end(50);
  48.    }
  49.  
  50.    /* pakowanie file-2-file */
  51.    if(XpkPackTags(XPK_InName,     argv[1],
  52.                   XPK_OutName,    argv[2],
  53.                   XPK_FindMethod, argv[3],
  54.                   XPK_GetError,   errbuf,
  55.                   TAG_DONE))
  56.    {
  57.       printf("Pack error: '%s'\n", errbuf);
  58.       end(60);
  59.    }
  60.  
  61.    printf("File '%s' packed to file '%s'.\n", argv[1], argv[2]);
  62.    end(0);
  63. }
  64.  
  65. void end(int kod)
  66. {
  67.    if(lock)
  68.       UnLock(lock);
  69.  
  70.    if(XpkBase)
  71.       CloseLibrary(XpkBase);
  72.  
  73.    exit(kod);
  74. }
  75.