| CODE |
void readfactory( void ) { char *wordy; /* The temporary string */ int number; /* Temporary number */ FACTORY_DATA *factory; FILE *fid = NULL; fid = fopen( "../system/factory.dat", "r" ); if( !fid ) { /* * send_to_char("Didnt open. \n\r",ch); */ return; } int i; int q; for( i = 1; !feof( fid ); i++ ) { CREATE( factory, FACTORY_DATA, 1 ); LINK( factory, first_factory, last_factory, next, prev ); wordy = fread_word( fid ); wordy = fread_word( fid ); factory->name = STRALLOC(wordy); wordy = fread_word( fid ); wordy = fread_word( fid ); factory->manager = STRALLOC(wordy); wordy = fread_word( fid ); number = fread_number( fid ); factory->level = number; wordy = fread_word( fid ); number = fread_number( fid ); factory->value = number; wordy = fread_word( fid ); number = fread_number( fid ); factory->contractvalue = number; wordy = fread_word( fid ); number = fread_number( fid ); factory->pccontract = number; wordy = fread_word( fid ); number = fread_number( fid ); factory->wage = number; wordy = fread_word( fid ); number = fread_number( fid ); factory->vnum = number; for( q = 0; q < NUM_RAW; q++ ) { wordy = fread_word( fid ); number = fread_number( fid ); factory->rawmaterial[q] = number; } for( q = 0; q < NUM_RAW; q++ ) { wordy = fread_word( fid ); number = fread_number( fid ); factory->maxraw[q] = number; } wordy = fread_word( fid); number = fread_number (fid); factory->stock = number; wordy = fread_word( fid ); number = fread_number( fid ); factory->state = number; wordy = fread_word( fid ); /* To read the END entry */ } fclose( fid ); } |
| CODE |
| wordy = fread_word( fid ); if (feof(fid)) { /* Something bad happened abort. */ break; } |
| CODE |
char *fread_word( FILE * fp ) { static char word[MAX_INPUT_LENGTH]; char *pword; char cEnd; do { if( feof( fp ) ) { bug( "fread_word: EOF encountered on read.\n\r" ); if( fBootDb ) exit( 1 ); word[0] = '\0'; return word; } cEnd = getc( fp ); } while( isspace( cEnd ) ); if( cEnd == '\'' || cEnd == '"' ) { pword = word; } else { word[0] = cEnd; pword = word + 1; cEnd = ' '; } for(; pword < word + MAX_INPUT_LENGTH; pword++ ) { if( feof( fp ) ) { bug( "fread_word: EOF encountered on read.\n\r" ); if( fBootDb ) exit( 1 ); *pword = '\0'; return word; } *pword = getc( fp ); if( cEnd == ' ' ? isspace( *pword ) : *pword == cEnd ) { if( cEnd == ' ' ) ungetc( *pword, fp ); *pword = '\0'; return word; } } bug( "Fread_word: word too long" ); exit( 1 ); return NULL; } |
| QUOTE (feldmarschall @ Dec 5 2006, 03:23 PM) |
| What do you mean isnt in the format I expected? |
| QUOTE (feldmarschall @ Dec 5 2006, 03:23 PM) |
| I added a $ to the end of the file, and added an if statement to break the loop if it finds $. The same thing occured. So as far as I can tell that isnt the problem. |
| QUOTE (feldmarschall @ Dec 5 2006, 03:23 PM) |
| When it reads the info into the game its just random data. So nothing is getting read at all as far as I can tell. |
| QUOTE (feldmarschall @ Dec 5 2006, 03:23 PM) |
| Here is the code to fread_word |
| QUOTE (feldmarschall @ Dec 5 2006, 03:23 PM) |
| Clearly it is hitting the end of the file..but the file has stuff in it to read..its bizarre. |