//Specify the name of the hogfile. Returns 1 if hogfile found & had files int cfile_init(char *hogname) { #ifdef MACINTOSH char mac_path[255]; macify_dospath(hogname, mac_path); #endif Assert(Hogfile_initialized == 0); #ifndef MACINTOSH if (cfile_init_hogfile(hogname, HogFiles, &Num_hogfiles )) { strcpy( HogFilename, hogname ); #else if (cfile_init_hogfile(mac_path, HogFiles, &Num_hogfiles )) { strcpy( HogFilename, mac_path ); #endif Hogfile_initialized = 1; return 1; } else return 0; //not loaded! } FILE * cfile_find_libfile(char * name, int * length) { FILE * fp; int i; if ( AltHogfile_initialized ) { for (i=0; i<AltNum_hogfiles; i++ ) { if ( !stricmp( AltHogFiles[i].name, name )) { fp = cfile_get_filehandle( AltHogFilename, "rb" ); if ( fp == NULL ) return NULL; fseek( fp, AltHogFiles[i].offset, SEEK_SET ); *length = AltHogFiles[i].length; return fp; } } } if ( !Hogfile_initialized ) { //@@cfile_init_hogfile( "DESCENT2.HOG", HogFiles, &Num_hogfiles ); //@@Hogfile_initialized = 1; //Int3(); //hogfile ought to be initialized } for (i=0; i<Num_hogfiles; i++ ) { if ( !stricmp( HogFiles[i].name, name )) { fp = cfile_get_filehandle( HogFilename, "rb" ); if ( fp == NULL ) return NULL; fseek( fp, HogFiles[i].offset, SEEK_SET ); *length = HogFiles[i].length; return fp; } } return NULL; }
FILE * cfile_find_libfile(char * name, int * length) { FILE * fp; int i; if ( AltHogfile_initialized ) { for (i=0; i<AltNum_hogfiles; i++ ) { if ( !strcasecmp( AltHogFiles[i].name, name )) { fp = cfile_get_filehandle( AltHogFilename, "rb" ); if ( fp == NULL ) return NULL; fseek( fp, AltHogFiles[i].offset, SEEK_SET ); *length = AltHogFiles[i].length; return fp; } } } if ( !Hogfile_initialized ) { cfile_init_hogfile( "DESCENT.HOG", HogFiles, &Num_hogfiles ); Hogfile_initialized = 1; } for (i=0; i<Num_hogfiles; i++ ) { if ( !strcasecmp( HogFiles[i].name, name )) { fp = cfile_get_filehandle( "DESCENT.HOG", "rb" ); if ( fp == NULL ) return NULL; fseek( fp, HogFiles[i].offset, SEEK_SET ); *length = HogFiles[i].length; return fp; } } return NULL; }
void cfile_use_alternate_hogfile( char * name ) { if ( name ) { strcpy( AltHogFilename, name ); cfile_init_hogfile( AltHogFilename, AltHogFiles, &AltNum_hogfiles ); AltHogfile_initialized = 1; } else { AltHogfile_initialized = 0; } }
//Specify the name of the hogfile. Returns 1 if hogfile found & had files int cfile_init(char *hogname) { #ifdef MACINTOSH char mac_path[255]; macify_dospath(hogname, mac_path); #endif Assert(Hogfile_initialized == 0); #ifndef MACINTOSH if (cfile_init_hogfile(hogname, HogFiles, &Num_hogfiles )) { strcpy( HogFilename, hogname ); #else if (cfile_init_hogfile(mac_path, HogFiles, &Num_hogfiles )) { strcpy( HogFilename, mac_path ); #endif Hogfile_initialized = 1; return 1; } else return 0; //not loaded! } int cfile_size(char *hogname) { CFILE *fp; struct stat statbuf; fp = cfopen(hogname, "rb"); if (fp == NULL) return -1; fstat(fileno(fp->file), &statbuf); cfclose(fp); return statbuf.st_size; }
int cfile_use_descent1_hogfile( char * name ) { if (name) { #ifdef MACINTOSH char mac_path[255]; macify_dospath(name, mac_path); strcpy(D1HogFilename, mac_path); #else strcpy(D1HogFilename, name); #endif cfile_init_hogfile(D1HogFilename, D1HogFiles, &D1Num_hogfiles); D1Hogfile_initialized = 1; return (D1Num_hogfiles > 0); } else { D1Hogfile_initialized = 0; return 1; } }
int cfile_use_alternate_hogfile( char * name ) { if ( name ) { #ifdef MACINTOSH char mac_path[255]; macify_dospath(name, mac_path); strcpy( AltHogFilename, mac_path); #else strcpy( AltHogFilename, name ); #endif cfile_init_hogfile( AltHogFilename, AltHogFiles, &AltNum_hogfiles ); AltHogfile_initialized = 1; return (AltNum_hogfiles > 0); } else { AltHogfile_initialized = 0; return 1; } }