home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / hogfile / hogfile.c next >
Text File  |  1998-06-08  |  3KB  |  136 lines

  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
  12. */
  13. #include <dos.h>
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. #include <io.h>
  18.  
  19. FILE * HogFile;
  20.  
  21. void hog_add_file( char * filename )
  22. {
  23.     FILE * fp;
  24.     int length;
  25.     char *data;
  26.     int i;
  27.  
  28.     fp = fopen( filename, "rb" );
  29.     if ( fp == NULL )    {
  30.         printf( "Error opening '%s'... not added!\n", filename );
  31.         fclose( HogFile );    
  32.         exit(1);
  33.     }    
  34.     length = filelength(fileno(fp));
  35.     data = malloc( length );
  36.     if ( data == NULL )    {
  37.         printf( "Error mallocing '%s'... not added!\n", filename );
  38.         fclose(fp);
  39.         fclose( HogFile );    
  40.         exit(1);
  41.     }    
  42.     i = fread( data, length, 1, fp );
  43.     if ( i != 1 )    {
  44.         printf( "Error reading '%s'... not added!\n", filename );
  45.         fclose(fp);
  46.         free(data);
  47.         fclose( HogFile );    
  48.         exit(1);
  49.     }
  50.     fclose(fp);
  51.  
  52.     if (fwrite( filename, 13, 1, HogFile )!=1 )    {
  53.         printf("Error writing hogfile\n" );
  54.         fclose( HogFile );    
  55.         exit(1);
  56.     }
  57.     if (fwrite( &length, 4, 1, HogFile)!=1 )    {
  58.         printf("Error writing hogfile\n" );
  59.         fclose( HogFile );    
  60.         exit(1);
  61.     }
  62.     if (fwrite( data, length, 1, HogFile)!=1 )    {
  63.         printf("Error writing hogfile\n" );
  64.         fclose( HogFile );    
  65.         exit(1);
  66.     }
  67.  
  68. }
  69.  
  70.  
  71. #define REMOVE_EOL(s)        remove_char((s),'\n')
  72. #define REMOVE_COMMENTS(s)    remove_char((s),';')
  73. #define REMOVE_DOTS(s)      remove_char((s),'.')
  74.  
  75. void remove_char( char * s, char c )
  76. {
  77.     char *p;
  78.     p = strchr(s,c);
  79.     if (p) *p = '\0';
  80. }
  81.  
  82. int main(int argc, char * argv[] )    
  83. {
  84.     char * id = "DHF";
  85.     char    inputline[160+1];
  86.     char filename[80];
  87.     FILE * fp;
  88.  
  89.     if ( argc < 3 )    {
  90.         printf( "Usage: hogfile inputfile outputfile\n" );
  91.         exit(1);
  92.     }
  93.     
  94.     fp = fopen( argv[1], "rt" );
  95.     if ( fp == NULL )    {
  96.         printf( "Error opening '%s'\n", argv[1] );
  97.         exit(1);
  98.     }
  99.  
  100.     HogFile = fopen( argv[2], "wb" );
  101.     if ( HogFile == NULL )        {
  102.         printf( "Error opening '%s'\n", argv[2] );
  103.         fclose(fp);
  104.         exit(1);
  105.     }
  106.     if (fwrite( id, 3, 1, HogFile )!=1)    {
  107.         printf("Error writing hogfile\n" );
  108.         fclose( HogFile );    
  109.         exit(1);
  110.     }
  111.         
  112.     while (fgets(inputline, 160, fp )) {
  113.         REMOVE_EOL(inputline);
  114.         REMOVE_COMMENTS(inputline);
  115.         
  116.         sscanf( inputline, " %s ", filename );
  117.             
  118.         if ( strlen( inputline ) > 0 )    {
  119.             //printf( "Adding '%s'...", filename );
  120.             hog_add_file( filename );
  121.             //printf( "\n" );
  122.         }
  123.     }
  124.  
  125.     fclose(fp);
  126.     fclose( HogFile );    
  127.  
  128.     return 0;
  129. }
  130.  
  131.  
  132.  
  133.  
  134.  
  135. 
  136.