home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Amiga / Workbench / Archivers / ppunpackPPC.lha / PPUnpack / ppunpack.c < prev    next >
C/C++ Source or Header  |  1998-02-25  |  1KB  |  68 lines

  1. /* ppunpack.c */
  2.   
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include "depack.h"
  6.  
  7. #define VERSION "1.0"
  8.  
  9. int main(argc, argv)
  10. int argc;
  11. char **argv;
  12.     {
  13.     FILE *file;
  14.     ulong plen, unplen;
  15.  
  16.     ubyte *packed, *unpacked;
  17.  
  18.     if (argc != 3)
  19.         {
  20.         printf("ppunpack %s\nUsage: %s infile outfile\n", VERSION, argv[0]);
  21.         exit(1);
  22.         }
  23.  
  24.     file = fopen(argv[1],"rb");
  25.     if (!file)
  26.         {
  27.         fprintf(stderr, "%s: can't open input file\n", argv[0]);
  28.         exit(10);
  29.         }
  30.     fseek(file, 0, SEEK_END);
  31.     plen = ftell(file);
  32.     rewind(file);
  33.     packed = (ubyte *)malloc(plen);
  34.     if (!packed)
  35.         {
  36.         fprintf(stderr, "%s: can't allocate source memory\n", argv[0]);
  37.         exit(10);
  38.         }
  39.  
  40.     fread(packed, 1, plen, file);
  41.     fclose(file);
  42.  
  43.     unplen = depackedlen(packed, plen);
  44.     if (!unplen)
  45.         {
  46.         fprintf(stderr, "%s: not a powerpacked file\n", argv[0]);
  47.         exit(10);
  48.         }
  49.     unpacked = (ubyte *)malloc(unplen);
  50.     if (!unpacked)
  51.         {
  52.         fprintf(stderr, "%s: can't allocate destination memory\n", argv[0]);
  53.         exit(10);
  54.         }
  55.  
  56.     ppdepack(packed, unpacked, plen, unplen);
  57.  
  58.     file = fopen(argv[2],"wb");
  59.     if (!file)
  60.         {
  61.         fprintf(stderr, "%s: can't write unpacked file\n", argv[0]);
  62.         exit(10);
  63.         }
  64.  
  65.     fwrite(unpacked, 1, unplen, file);
  66.     fclose(file);
  67.     }
  68.