home *** CD-ROM | disk | FTP | other *** search
/ Superpower (Alt) / SUPERPOWER.iso / q / util / mbq319 / pakpatch.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-01  |  1.4 KB  |  82 lines

  1. // pakpatch.c
  2.  
  3. // THIS IS NOT A FUNCTIONAL PROGRAM YET
  4.  
  5. #include "cmdlib.h"
  6.  
  7. typedef struct
  8. {
  9.     char    name[56];
  10.     int        filepos, filelen;
  11. } packfile_t;
  12.  
  13. typedef struct
  14. {
  15.     char    id[4];
  16.     int        dirofs;
  17.     int        dirlen;
  18. } packheader_t;
  19.  
  20.  
  21. typedef struct
  22. {
  23.     int                file;
  24.     packheader_t    header;
  25.     int                numfiles;
  26.     packfile_t        *lumps;
  27. } apack_t;
  28.  
  29. apack_t    *orig, *patch;
  30.  
  31. apack_t *OpenPackfile (char    *name)
  32. {
  33.     apack_t    *p;
  34.     char    fname[1024];
  35.     int        i;
  36.  
  37.     p = malloc(sizeof(*p));
  38.     strcpy (fname, name);
  39.     DefaultExtension (fname, "pak");
  40.     
  41.     p->file = SafeOpenRead (fname);
  42.     SafeRead (p->file, &p->header, sizeof(p->header));
  43.     p->header.dirofs = LittleLong (p->header.dirofs);
  44.     p->header.dirlen = LittleLong (p->header.dirlen);
  45.  
  46.     p->lumps = malloc(p->header.dirlen);
  47.  
  48.     lseek (p->file, SEEK_SET, p->header.dirofs);
  49.     SafeRead (p->file, p->lumps, p->header.dirlen);
  50.     
  51.     p->numfiles = p->header.dirlen / sizeof(packfile_t);
  52.     
  53.     for (i=0 ; i<p->numfiles ; i++)
  54.     {
  55.         p->lumps[i].filepos = LittleLong ( p->lumps[i].filepos );
  56.         p->lumps[i].filelen = LittleLong ( p->lumps[i].filelen );
  57.     }
  58.     
  59.     printf ("%i files in %s\n",p->numfiles, fname);
  60.  
  61.     return p;
  62. }
  63.  
  64.  
  65. void OpenNew (void)
  66. {
  67. }
  68.  
  69. void main (int argc, char **argv)
  70. {
  71.     int        i, j;
  72.  
  73.     if (argc < 3)
  74.         Error ("usage: pakpatch <original> <patch>");
  75.  
  76.     orig = OpenPackfile (argv[1]);
  77.     patch = OpenPackfile (argv[2]);
  78.         
  79.     OpenNew ();
  80.     
  81. }
  82.