void fread_id_handler( ID_HANDLER *handler, FILE *fp ) { char *word; bool found, done = FALSE; word = ( feof( fp ) ? "#END" : fread_word( fp ) ); while( !done ) { found = FALSE; switch( word[0] ) { case '#': if( !strcasecmp( word, "#END" ) ) { done = TRUE; found = TRUE; break; } case 'T': IREAD( "TopID", handler->top_id ); break; } if( !found ) { bug( "%s: bad file format %s.", __FUNCTION__, word ); return; } if( !done ) word = ( feof( fp ) ? "#END" : fread_word( fp ) ); } return; }
void load_bans(void) { FILE *fp; BAN_DATA *ban_last; if ( ( fp = fopen( BAN_FILE, "r" ) ) == NULL ) return; ban_last = NULL; for ( ; ; ) { BAN_DATA *pban; if ( feof(fp) ) { fclose( fp ); return; } pban = new_ban(); pban->user = str_dup( fread_word(fp) ); pban->host = str_dup( fread_word(fp) ); pban->level = fread_number( fp ); pban->ban_flags = fread_flag( fp ); fread_to_eol( fp ); if (ban_list == NULL) ban_list = pban; else ban_last->next = pban; ban_last = pban; } }
void load_materials(void) { bool fMatch; closeReserve(); FILE *fp = fopen(MATERIAL_FILE, "r"); if(!fp) return; // no materials to load. while(true) { const char *word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; if(!str_cmp(word, "End")) { break; } if(!str_cmp(word, "MAT")) { MAT_TYPE *mat = new_mat(); while(true) { word = feof( fp ) ? "End" : fread_word(fp); if(!str_cmp(word, "End")) { bug(Format("Prematurely reached end of materials data file; data corrupted!"), 0); fclose(fp); openReserve(); return; } bool finished = false; switch ( UPPER(word[0]) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case 'E': if(!str_cmp(word, "ENDMAT")) { mat->next = mat_list; mat_list = mat; matValue++; finished = true; break; } case 'V': KEY("VAL", mat->assignedValue, fread_number(fp) ); break; case 'N': KEYS( "NAME", mat->name, fread_string(fp) ); break; } if(finished) break; } } } fclose(fp); openReserve(); }
bool load_id_handler( ID_HANDLER *handler ) { FILE *fp; I_ID *id; char *word; char location[MAX_BUFFER]; bool found, done = FALSE; mud_printf( location, "../handlers/%s.handler", id_handler_names[handler->type] ); if( ( fp = fopen( location, "r" ) ) == NULL ) { bug( "%s: unable to open file to read: %s", __FUNCTION__, location ); return FALSE; } word = ( feof( fp ) ? FILE_TERMINATOR : fread_word( fp ) ); if( strcmp( word, "#IDHANDLER" ) ) { bug( "%s: %s not started with proper tag.", __FUNCTION__, location ); return FALSE; } while( !done ) { found = FALSE; switch( word[1] ) { case 'O': if( !strcasecmp( word, "EOF" ) ) {done = TRUE; found = TRUE; break; } break; case 'I': if( !strcmp( word, "#IDHANDLER" ) ) { found = TRUE; fread_id_handler( handler, fp ); break; } if( !strcmp( word, "#I_ID" ) ) { found = TRUE; id = fread_i_id( fp ); AttachToList( id, handler->free_ids ); break; } break; } if( !found ) { bug( "%s: word key not known, %s", __FUNCTION__, word ); return FALSE; } if( !done ) word = ( feof( fp ) ? FILE_TERMINATOR : fread_word( fp ) ); } fclose( fp ); return TRUE; }
void fread_comment( CHAR_DATA * ch, FILE * fp ) { NOTE_DATA *pnote; for( ;; ) { char letter; do { letter = getc( fp ); if( feof( fp ) ) { fclose( fp ); return; } } while( isspace( letter ) ); ungetc( letter, fp ); CREATE( pnote, NOTE_DATA, 1 ); if( str_cmp( fread_word( fp ), "sender" ) ) break; pnote->sender = fread_string( fp ); if( str_cmp( fread_word( fp ), "date" ) ) break; pnote->date = fread_string( fp ); if( str_cmp( fread_word( fp ), "to" ) ) break; pnote->to_list = fread_string( fp ); if( str_cmp( fread_word( fp ), "subject" ) ) break; pnote->subject = fread_string( fp ); if( str_cmp( fread_word( fp ), "text" ) ) break; pnote->text = fread_string( fp ); pnote->next = ch->comments; pnote->prev = NULL; ch->comments = pnote; return; } bug( "fread_comment: bad key word. strap in!", 0 ); /* * exit( 1 ); */ }
void load_bans( void ) { FILE * fp; BAN_DATA *ban_last; char * site; if ( ( fp = fopen( BAN_FILE, "r" ) ) == NULL ) return ; ban_last = NULL; for ( ; ; ) { BAN_DATA *pban; if ( feof( fp ) ) { fclose( fp ); return ; } pban = new_ban(); site = fread_word( fp ); if ( !str_cmp( site, "#" ) ) { fclose( fp ); return ; } pban->site = str_dup( site ); pban->ban_flags = fread_flag( fp ); pban->person = str_dup( fread_word( fp ) ); pban->date_stamp = fread_long_number( fp ); pban->period = fread_number( fp ); pban->reason = fread_string_eol( fp ); if ( pban->period > 0 && pban->date_stamp + ( pban->period * 24 * 3600 ) <= current_time ) { free_ban( pban ); continue; } if ( ban_list == NULL ) ban_list = pban; else ban_last->next = pban; ban_last = pban; } }
void load_illegal() { FILE *fp; ILLEGAL_DATA *p; char kar; illegal_first = NULL; fclose(fpReserve); fp = fopen(NAME_FILE, "r"); if (!fp) return; do { kar = fread_letter(fp); if (kar == EOF) break; if (kar == '#' || kar == '$' || kar == '@') { p = alloc_mem(sizeof(ILLEGAL_DATA)); p->mode = kar; p->word = str_dup(fread_word(fp)); p->next = illegal_first; illegal_first = p; } } while (kar != EOF); fclose(fp); fpReserve = fopen(NULL_FILE, "r"); }
void read_race_info (void) { FILE *fp; int i = 0; char wrd[256]; if ((fp = fopen ("races.dat", "r")) == NULL) { fprintf (stderr, "Races.dat could not be opened!!\n"); exit (7); } for (;;) { strcpy (wrd, fread_word (fp)); if (!str_cmp ("END", wrd)) break; if (!str_prefix ("#", wrd)) { fread_to_eol (fp); continue; } strcpy (race_info[i].name, wrd); race_info[i].bonus[0] = fread_number (fp); race_info[i].bonus[1] = fread_number (fp); race_info[i].bonus[2] = fread_number (fp); race_info[i].bonus[3] = fread_number (fp); race_info[i].bonus[4] = fread_number (fp); race_info[i].limits[0] = fread_number (fp); race_info[i].limits[1] = fread_number (fp); race_info[i].limits[2] = fread_number (fp); race_info[i].limits[3] = fread_number (fp); race_info[i].limits[4] = fread_number (fp); race_info[i].start_room = fread_number (fp); race_info[i].max_skills = fread_number (fp); race_info[i].max_spells = fread_number (fp); race_info[i].max_profs = fread_number (fp); race_info[i].height_min = fread_number (fp); race_info[i].height_max = fread_number (fp); race_info[i].affect_bits = fread_number (fp); race_info[i].affect_bits2 = fread_number (fp); race_info[i].nat_augments = fread_number (fp); race_info[i].natarmor = fread_number (fp); race_info[i].regen_hit_percent = fread_number (fp); race_info[i].regen_move_percent = fread_number (fp); race_info[i].switch_aligns = fread_number (fp); race_info[i].attack_spell_percent = fread_number (fp); race_info[i].combat_damage_bonus = fread_number (fp); race_info[i].backstab_percent = fread_number (fp); race_info[i].heal_percent = fread_number (fp); race_info[i].hps_bonus = fread_number (fp); race_info[i].mana_percent = fread_number (fp); race_info[i].nat_skills[0] = fread_number(fp); race_info[i].nat_skills[1] = fread_number(fp); race_info[i].nat_skills[2] = fread_number(fp); race_info[i].remort_race = fread_number (fp); i++; } fclose (fp); return; }
void load_wizlist(void) { FILE *fp; WIZ_DATA *wiz_last; if ( ( fp = fopen( WIZ_FILE, "r" ) ) == NULL ) { return; } wiz_last = NULL; for ( ; ; ) { WIZ_DATA *pwiz; if ( feof(fp) ) { fclose( fp ); return; } pwiz = new_wiz(); pwiz->name = str_dup(fread_word(fp)); pwiz->level = fread_number(fp); fread_to_eol(fp); if (wiz_list == NULL) wiz_list = pwiz; else wiz_last->next = pwiz; wiz_last = pwiz; } }
NOTE_DATA * read_log( FILE *fp ) { NOTE_DATA * log; char * word; log = alloc_mem( sizeof( NOTE_DATA ) ); for ( ; ; ) { word = fread_word( fp ); if ( !str_cmp( word, "Sender" ) ) log->sender = fread_string( fp ); else if ( !str_cmp( word, "Date" ) ) log->date = fread_string( fp ); else if ( !str_cmp( word, "Subject" ) ) log->subject = fread_string( fp ); else if ( !str_cmp( word, "Text" ) ) log->text = fread_string( fp ); else if ( !str_cmp( word, "Endlog" ) ) { fread_to_eol( fp ); log->next = NULL; return log; } else { free_mem( log, sizeof( NOTE_DATA ) ); bug( "read_log: bad key word.", 0 ); return NULL; } } }
/* Reads the actual time file from disk - Samson 1-21-99 */ void fread_timedata( FILE * fp ) { char *word = NULL; bool fMatch = FALSE; for( ;; ) { word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case 'E': if( !str_cmp( word, "End" ) ) return; break; case 'P': KEY( "Purgetime", new_pfile_time_t, fread_number( fp ) ); break; } if( !fMatch ) { bug( "Fread_timedata: no match: %s", word ); fread_to_eol( fp ); } } }
/* * Load in all the realm files. */ void load_realms( void ) { FILE *fpList; const char *filename; char realmlistfile[256]; realmlist.clear( ); log_string( "Loading realms..." ); snprintf( realmlistfile, 256, "%s%s", REALM_DIR, REALM_LIST ); if( !( fpList = fopen( realmlistfile, "r" ) ) ) { perror( realmlistfile ); exit( 1 ); } for( ;; ) { filename = feof( fpList ) ? "$" : fread_word( fpList ); log_string( filename ); if( filename[0] == '$' ) break; if( !load_realm_file( filename ) ) bug( "%s: Cannot load realm file: %s", __func__, filename ); } FCLOSE( fpList ); verify_realms( ); /* Check against pfiles to see if realms should still exist */ log_string( "Done realms" ); }
/* * Snarf spec proc declarations. */ void load_specials( FILE *fp ) { for ( ; ; ) { MOB_INDEX_DATA *pMobIndex; char letter; switch ( letter = fread_letter( fp ) ) { default: bug( "Load_specials: letter '%c' not *MS.", letter ); exit( 1 ); case 'S': return; case '*': break; case 'M': pMobIndex = get_mob_index ( fread_number ( fp ) ); pMobIndex->spec_fun = spec_lookup ( fread_word ( fp ) ); if ( pMobIndex->spec_fun == 0 ) { bug( "Load_specials: 'M': vnum %d.", pMobIndex->vnum ); exit( 1 ); } break; } fread_to_eol( fp ); } }
/* * Load a realm file */ bool load_realm_file( const char *realmfile ) { char filename[256]; realm_data *realm; FILE *fp; bool found; realm = new realm_data; clean_realm( realm ); /* Default settings so we don't get wierd ass stuff */ found = false; snprintf( filename, 256, "%s%s", REALM_DIR, realmfile ); if( ( fp = fopen( filename, "r" ) ) != nullptr ) { found = true; for( ;; ) { char letter; char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "%s: # not found.", __func__ ); break; } word = fread_word( fp ); if( !str_cmp( word, "REALM" ) ) fread_realm( realm, fp ); else if( !str_cmp( word, "ROSTER" ) ) fread_realm_memberlist( realm, fp ); else if( !str_cmp( word, "END" ) ) break; else { bug( "%s: bad section: %s.", __func__, word ); break; } } FCLOSE( fp ); } if( found ) realmlist.push_back( realm ); else deleteptr( realm ); return found; }
/* Snarf a MOBprogram section from the area file. */ bool load_mobprogs( FILE *fp ) { MOB_INDEX_DATA *iMob; MPROG_DATA *original; MPROG_DATA *working; char letter; int value; int stat; bool koniec = FALSE; while ( !koniec ) { letter = fread_letter( fp ); switch ( letter ) { default: cbug( "Load_mobprogs: bad command '%c'.", letter ); return TRUE; case 'S': case 's': fread_to_eol( fp ); koniec = TRUE; break; case '*': fread_to_eol( fp ); break; case 'M': case 'm': value = fread_number( fp, &stat ); if ( ( iMob = get_mob_index( value ) ) == NULL ) { cbug( "Load_mobprogs: vnum %d doesnt exist", value ); return TRUE; } /* Go to the end of the prog command list if other commands exist */ if ( ( original = iMob->mobprogs ) ) for ( ; original->next != NULL; original = original->next ) ; working = new_mprog( ); if ( original ) original->next = working; else iMob->mobprogs = working; working = mprog_file_read( fread_word( fp, &stat, TRUE ), working, iMob, 0 ); if ( !working ) return TRUE; working->next = NULL; fread_to_eol( fp ); break; } } return FALSE; }
void read_trivia(void) { FILE *fp; TRIVIA *strivia = 0; HINT *hint; char *word; if((fp = fopen(TRIVIA_FILE, "r")) == 0) { bug("read_trivia: unable to open file ro reading!", 0); return; } while(1) { word = fread_word(fp); if(!str_cmp(word, "end")) break; if(!str_cmp(word, "trivia")) { strivia = alloc_perm(sizeof(*strivia)); strivia->question = fread_string(fp); strivia->answer = fread_string(fp); strivia->character = fread_string(fp); strivia->winner = fread_string(fp); strivia->guesses = fread_number(fp); strivia->time = fread_number(fp); strivia->timeleft = fread_number(fp); strivia->reward = fread_number(fp); strivia->next = trivia_list; trivia_list = strivia; continue; } if(!str_cmp(word, "hint")) { if(!strivia) { bug("read_trivia: hint read before trivia laoded!", 0); exit(1); } hint = alloc_perm(sizeof(*hint)); hint->hint = fread_string(fp); hint->next = strivia->hints; strivia->hints = hint; continue; } bug("read_trivia: wrong word!", 0); break; } return; }
/* * Funzione di lettura delle liste, cioè dei file *.lst. */ void fread_list( const char *list_file, const char *section, FREAD_FUN *freadfun, bool unique ) { MUD_FILE *fp; fp = mud_fopen( "", list_file, "r", TRUE ); if ( !fp ) { if ( fBootDb ) exit( EXIT_FAILURE ); return; } for ( ; ; ) { char *filename; if ( feof(fp->file) ) { send_log( fp, LOG_FREAD, "fread_: fine del file prematuro nella lettura" ); if ( fBootDb ) exit( EXIT_FAILURE ); } filename = fread_word( fp ); if ( filename[0] == '*' ) /* Salta i commenti */ { fread_to_eol( fp ); continue; } /* Se arrivato alla fine esce */ if ( !str_cmp(filename, "End") ) break; /* Legge l'area se si tratta di una sezione file di area */ if ( !str_cmp(section, "AREA_FILE") && freadfun == NULL ) { MUD_FILE *fp_area; fp_area = mud_fopen( "", filename, "r", TRUE ); if ( !fp_area ) { if ( fBootDb ) exit( EXIT_FAILURE ); return; } load_area_file( NULL, fp_area ); } else fread_section( filename, section, freadfun, unique ); /* Legge la sezione relativa al file ricavato dalla lista */ } MUD_FCLOSE( fp ); }
/* * This function reads one immortal host to a file. * Shaddai July 27, 1997 */ int fread_imm_host( FILE * fp, IMMORTAL_HOST * data ) { const char *word; bool fMatch; int temp; for( ;; ) { word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case 'E': if( !str_cmp( word, "End" ) ) return rNONE; case 'H': KEY( "Host", data->host, fread_string_nohash( fp ) ); break; case 'N': KEY( "Name", data->name, fread_string_nohash( fp ) ); break; case 'P': if( !str_cmp( word, "Prefix" ) ) { temp = fread_number( fp ); if( temp ) data->prefix = TRUE; else data->prefix = FALSE; fMatch = TRUE; } break; case 'S': if( !str_cmp( word, "Suffix" ) ) { temp = fread_number( fp ); if( temp ) data->suffix = TRUE; else data->suffix = FALSE; fMatch = TRUE; } break; } if( !fMatch ) { bug( "%s: no match: %s", __func__, word ); fread_to_eol( fp ); } } }
void load_socials( void ) { FILE *fp; int stat; char strsave [ MAX_INPUT_LENGTH ]; fclose( fpReserve ); sprintf( strsave, "%s%s", SYSTEM_DIR, SOCIAL_FILE ); if ( !( fp = fopen( strsave, "r" ) ) ) { bug( "Cannot open SOCIALS.TXT", 0 ); exit( 0 ); } for ( ; ; ) { int letter; char *word; letter = fread_letter( fp ); if ( letter == '*' ) { fread_to_eol( fp ); continue; } if ( letter != '#' ) { bug( "Load_socials: # not found.", 0 ); break; } word = fread_word( fp, &stat ); if ( !str_cmp( word, "SOCIAL" ) ) { fread_social( fp ); continue; } else if ( !str_cmp( word, "END" ) ) break; else { bug( "Load_socials: bad section.", 0 ); continue; } } fclose( fp ); fpReserve = fopen( NULL_FILE, "r" ); return; }
int fread_imm_host ( FILE *fp , IMMORTAL_HOST *data ) { char buf[MAX_STRING_LENGTH]; char *word; bool fMatch; int temp; for ( ; ; ) { word = feof (fp) ? "End" : fread_word (fp); fMatch = FALSE; switch ( UPPER ( word[0] ) ) { case 'E': if ( !str_cmp( word, "End" ) ) return rNONE; case 'H': KEY ("Host", data->host, fread_string_nohash (fp) ); break; case 'N': KEY ("Name", data->name, fread_string_nohash ( fp ) ); break; case 'P': if ( !str_cmp( word, "Prefix" ) ) { temp = fread_number ( fp ); if ( temp ) data->prefix = TRUE; else data->prefix = FALSE; fMatch = TRUE; } break; case 'S': if ( !str_cmp( word, "Suffix" ) ) { temp = fread_number ( fp ); if ( temp ) data->suffix = TRUE; else data->suffix = FALSE; fMatch = TRUE; } break; } if (!fMatch) { sprintf (buf, "Fread_immortal_host: no match: %s", word ); bug ( buf, 0 ); } } return rNONE; }
void load_herb_table( ) { FILE *fp; if( ( fp = fopen( HERB_FILE, "r" ) ) != NULL ) { top_herb = 0; for( ;; ) { char letter; const char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "Load_herb_table: # not found.", 0 ); break; } word = fread_word( fp ); if( !str_cmp( word, "HERB" ) ) { if( top_herb >= MAX_HERB ) { bug( "load_herb_table: more herbs than MAX_HERB %d", MAX_HERB ); fclose( fp ); return; } herb_table[top_herb++] = fread_skill( fp, FALSE ); if( herb_table[top_herb - 1]->slot == 0 ) herb_table[top_herb - 1]->slot = top_herb - 1; continue; } else if( !str_cmp( word, "END" ) ) break; else { bug( "Load_herb_table: bad section.", 0 ); continue; } } fclose( fp ); } else { bug( "Cannot open herbs.dat", 0 ); exit( 0 ); } }
area_data *fread_smaugfuss_area( FILE * fp ) { area_data *tarea = nullptr; for( ;; ) { char letter; const char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "%s: # not found. Invalid format.", __func__ ); if( fBootDb ) exit( 1 ); break; } word = ( feof( fp ) ? "ENDAREA" : fread_word( fp ) ); if( word[0] == '\0' ) { bug( "%s: EOF encountered reading file!", __func__ ); word = "ENDAREA"; } if( !str_cmp( word, "AREADATA" ) ) { tarea = create_area( ); tarea->filename = str_dup( strArea ); fread_fuss_areadata( fp, tarea ); } else if( !str_cmp( word, "MOBILE" ) ) fread_fuss_mobile( fp, tarea ); else if( !str_cmp( word, "OBJECT" ) ) fread_fuss_object( fp, tarea ); else if( !str_cmp( word, "ROOM" ) ) fread_fuss_room( fp, tarea ); else if( !str_cmp( word, "ENDAREA" ) ) break; else { bug( "%s: Bad section header: %s", __func__, word ); fread_to_eol( fp ); } } return tarea; }
/* * Load all those nasty bans up :) * Shaddai */ void load_banlist( void ) { const char *word; FILE *fp; bool fMatch = FALSE; if( !( fp = fopen( SYSTEM_DIR BAN_LIST, "r" ) ) ) { bug( "%s: Cannot open %s", __func__, BAN_LIST ); perror( BAN_LIST ); return; } for( ;; ) { word = feof( fp ) ? "END" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case 'C': if( !str_cmp( word, "CLASS" ) ) { fread_ban( fp, BAN_CLASS ); fMatch = TRUE; } break; case 'E': if( !str_cmp( word, "END" ) ) /*File should always contain END */ { fclose( fp ); log_string( "Done." ); return; } case 'R': if( !str_cmp( word, "RACE" ) ) { fread_ban( fp, BAN_RACE ); fMatch = TRUE; } break; case 'S': if( !str_cmp( word, "SITE" ) ) { fread_ban( fp, BAN_SITE ); fMatch = TRUE; } break; } if( !fMatch ) { bug( "Load_banlist: no match: %s", word ); fread_to_eol( fp ); } /* End of switch statement */ } /* End of for loop */ }
void load_disciplines( ) { FILE *fp; if( ( fp = fopen( DISCIPLINE_FILE, "r" ) ) != NULL ) { for( ;; ) { char letter; const char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "Load_disciplines: # not found.", 0 ); break; } word = fread_word( fp ); if( !str_cmp( word, "DISCIPLINE" ) ) { DISC_DATA *discipline; if( ( discipline = fread_discipline( fp ) ) == NULL ) { bug( "Huge error loading disciplines.", 0 ); fclose( fp ); return; } LINK( discipline, first_discipline, last_discipline, next, prev ); continue; } else if( !str_cmp( word, "END" ) ) break; else { bug( "Load_disciplines: bad section.", 0 ); continue; } } fclose( fp ); } else { bug( "Cannot open discipline.dat", 0 ); exit( 0 ); } return; }
void read_damages (void) { FILE *df; char buf[1000]; int lastmark= 0; bzero (&dmsg, sizeof (dmsg)); if ((df = fopen ("dam.dat", "r")) == NULL) { damt.kick_dam = str_dup ("o+2d/4m40+k/2"); write_damages (); } for (;;) { strcpy (buf, fread_word (df)); if (!str_cmp (buf, "END")) break; if (!str_cmp (buf, "Kickd")) damt.kick_dam = str_dup (fread_word (df)); if (!str_prefix ("#", buf)) { fread_to_eol (df); continue; } if (!str_cmp (buf, "GENERIC")) { dmsg.generic_range[lastmark][0] = fread_number (df); dmsg.generic_range[lastmark][1] = fread_number (df); dmsg.generic_percent[lastmark][0] = fread_number (df); dmsg.generic_percent[lastmark][1] = fread_number (df); fread_to_eol (df); dmsg.gen_m[lastmark] = fread_string_eol (df); dmsg.gen_m1[lastmark] = fread_string_eol (df); dmsg.gen_m2[lastmark]= fread_string_eol (df); lastmark++; } } fclose (df); return; }
void load_disabled( ) { FILE *fp; DISABLED_DATA *disabled; CMDTYPE *cmd; char *word; fp = fopen( DISABLE_FILE, "r" ); if( !fp ) { bug( "Unable to open disabled commands list." ); return; } for( ;; ) { word = fread_word( fp ); if( !str_cmp( word, "End" ) ) break; cmd = find_command( word ); if( !cmd ) { bug( "Unknown command in disabled list." ); fread_number( fp ); fread_word( fp ); continue; } CREATE( disabled, DISABLED_DATA, 1 ); disabled->command = cmd; disabled->level = fread_number( fp ); disabled->who = STRALLOC( fread_word( fp ) ); disabled->next = first_disabled; first_disabled = disabled; } fclose( fp ); }
void load_skill_table( ) { FILE *fp; if( ( fp = fopen( SKILL_FILE, "r" ) ) != NULL ) { top_sn = 0; for( ;; ) { char letter; const char *word; letter = fread_letter( fp ); if( letter == '*' ) { fread_to_eol( fp ); continue; } if( letter != '#' ) { bug( "Load_skill_table: # not found.", 0 ); break; } word = fread_word( fp ); if( !str_cmp( word, "SKILL" ) ) { if( top_sn >= MAX_SKILL ) { bug( "load_skill_table: more skills than MAX_SKILL %d", MAX_SKILL ); fclose( fp ); return; } skill_table[top_sn++] = fread_skill( fp, FALSE ); continue; } else if( !str_cmp( word, "END" ) ) break; else { bug( "Load_skill_table: bad section.", 0 ); continue; } } fclose( fp ); } else { bug( "Cannot open skills.dat", 0 ); exit( 0 ); } }
int load_imm_host ( ) { FILE *fp; char *word; char buf[MAX_STRING_LENGTH]; bool my_continue = TRUE; bool fMatch = FALSE; IMMORTAL_HOST *host; if ( ( fp = fopen ( IMM_HOST_FILE, "r" ) ) == NULL ) { log_string ("No immortal host data" ); return rNONE; } while ( my_continue ) { word = feof (fp) ? "#END" : fread_word (fp); fMatch = FALSE; switch ( UPPER ( word[0] ) ) { case '#': if ( !str_cmp ( word, "#END") ) { fclose ( fp ); fMatch = TRUE; my_continue = FALSE; } break; case 'S': if ( !str_cmp ( word, "Start") ) { CREATE ( host, IMMORTAL_HOST, 1 ); LINK( host, immortal_host_start, immortal_host_end, next, prev ); fread_imm_host( fp, host ); fMatch = TRUE; } break; } if ( !fMatch ) { sprintf ( buf, "Load_imm_host: no match: %s", word ); bug ( buf, 0 ); } } log_string ("Done."); return rNONE; }
/* Read in an individual slaytype */ void fread_slay( SLAY_DATA * slay, FILE * fp ) { const char *word; bool fMatch; for( ;; ) { word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case 'C': KEY( "Cmessage", slay->cmsg, fread_string( fp ) ); KEY( "Color", slay->color, fread_number( fp ) ); break; case 'E': if( !str_cmp( word, "End" ) ) { if( !slay->owner ) slay->owner = STRALLOC( "Any" ); return; } break; case 'O': KEY( "Owner", slay->owner, fread_string( fp ) ); break; case 'R': KEY( "Rmessage", slay->rmsg, fread_string( fp ) ); break; case 'T': KEY( "Type", slay->type, fread_string( fp ) ); break; case 'V': KEY( "Vmessage", slay->vmsg, fread_string( fp ) ); break; } if( !fMatch ) bug( "Fread_slay: no match: %s", word ); } }
void read_command_levels (void) { COMMAND *c; FILE *fp; char b[200]; if ((fp = fopen ("commands.dat", "r")) == NULL) return; for (;;) { strcpy (b, fread_word (fp)); if (!str_cmp (b, "END")) break; if (!str_cmp (b, "LINK")) { char t[200]; strcpy (b, fread_word (fp)); if ((c = clookup (b)) == NULL) { fread_to_eol (fp); continue; } strcpy (t, fread_word (fp)); add_to_list (t, c->do_fun, c->position, c->level, c->log, c->help); fprintf (stderr, "Created dynamic command link from '%s' to '%s'.\n", b, t); continue; } if ((c = clookup (b)) == NULL) { fread_number (fp); continue; } c->level = fread_number (fp); } fclose (fp); return; }