home *** CD-ROM | disk | FTP | other *** search
/ Quake 'em / QUAKEEM.BIN / quake / programs / qbspedit / makebsp.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-17  |  1.2 KB  |  67 lines

  1. #include "stdio.h"
  2.  
  3. typedef struct
  4. {
  5.     long  offset;
  6.     long  size;
  7. } dentry_t;
  8.  
  9. int main()
  10. {
  11.     FILE * lmp;
  12.     FILE * bsp;
  13.     char entfile[64];
  14.     dentry_t entry[14];
  15.     long i, j;
  16.     unsigned char data;
  17.     long ver;
  18.     printf("\n");
  19.     printf("Quake BSP File Rebuilder\n");
  20.     printf("Version 1.0\n");
  21.     printf("Copyright (C) 1996 Richard Felker, aka Dalias");
  22.     printf("\n");
  23.     bsp = fopen("tmp.bsp", "wb");
  24.     ver = 0x17;
  25.     fwrite(&ver, 4, 1, bsp);
  26.     fwrite(entry, sizeof(dentry_t) * 14, 1, bsp);
  27.     for (i = 0; i < 14; i++)
  28.     {
  29.         sprintf(entfile, "ENTRY%02hd.LMP", i);
  30.         lmp = fopen(entfile, "rb");
  31.         entry[i].offset = ftell(bsp);
  32.         entry[i].size = 0;
  33.         printf("File: %s  ", entfile);
  34.         printf("Offset %ld  ", entry[i].offset);
  35.         if (lmp == 0) printf("Not found.  ");
  36.         else printf("Found  ");
  37.         j = 0;
  38.         while (lmp && !feof(lmp))
  39.         {
  40.             fread(&data, 1, 1, lmp);
  41.             if (feof(lmp)) break;
  42.             fwrite(&data, 1, 1, bsp);
  43.             j++;
  44.         }
  45.         fclose(lmp);
  46.         entry[i].size = j;
  47.         printf("%ld bytes.\n", entry[i].size);
  48.     }
  49.     fseek(bsp, SEEK_SET, 0);
  50.     ver = 0x17;
  51.     fwrite(&ver, 4, 1, bsp);
  52.     fwrite(entry, sizeof(dentry_t) * 14, 1, bsp);
  53.     fclose(bsp);
  54.     printf("\n");
  55.     return 0;
  56. }
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.