ban_data :: ban_data( ) { name = empty_string; record_new( sizeof( ban_data ), MEM_BAN ); append( ban_list, this ); };
Obj_Clss_Data :: Obj_Clss_Data( ) { record_new( sizeof( obj_clss_data ), MEM_OBJ_CLSS ); oprog = NULL; date = -1; count = 0; }
Help_Data :: Help_Data( ) { record_new( sizeof( help_data ), MEM_HELP ); name = (char*) empty_string; text = (char*) empty_string; immortal = (char*) empty_string; level[0] = 0; level[1] = 0; category = 0; }
Exit_Data :: Exit_Data( ) { record_new( sizeof( exit_data ), MEM_EXIT ); name = empty_string; keywords = empty_string; exit_info = 0; key = -1; strength = 10; light = 10; size = SIZE_OGRE; direction = -1; to_room = NULL; }
void stock_add (stock_t stock, good_t good) { if (stock->space - good_getVolume(good) >= 0) list_add(stock->goods, good, list_size(stock->goods)); else return; if (good_getVolume(good) > 10) { for (int i = 0; i < subList_getCount(stock->subs); i++){ stock->subs->sub[i]->cb(good); } } stock->freespace -= good_getVolume(good); record_t rec = record_new(good); recordBook_add(stock->history, rec); }
void database_read(database_t *database) { size_t i, total; csv_t *csv; csv_row_t *csv_row; csv_fields_t *csv_fields; record_t *record; csv = csv_new(database->filename); csv_row = csv_row_new(NULL, NULL); total = 0; while(csv_get_row(csv, csv_row)) { csv_fields = csv_fields_new(database->num_fields); csv_get_fields(csv_fields, csv_row, database->sep); record = record_new(database->num_fields); for(i = 0; i < database->num_fields; i++) { record_add_field(record, csv_fields->fields[i]); } csv_fields_deep_free(csv_fields); array_push(database->records, record); total++; if(!(total % 1000000)) { printf( "Registros lidos: %d de %d (%2.2f%%)\n", (int) total, (int) database->num_rows, 100.0 * total / database->num_rows ); } } printf( "Registros lidos: %d de %d (%2.2f%%)\n", (int) total, (int) database->num_rows, 100.0 * total / database->num_rows ); csv_row_free(csv_row); csv_free(csv); }
Share_Data :: Share_Data() { record_new(sizeof(share_data), MEM_SHDATA); strength = 10; intelligence = 10; wisdom = 10; dexterity = 10; constitution = 10; deaths = 0; kills = 0; level = 0; fame = 0; race = RACE_HUMAN; vzero(resist, MAX_RESIST); }
Obj_Data :: Obj_Data( obj_clss_data* obj_clss ) { record_new( sizeof( obj_data ), MEM_OBJECT ); valid = OBJ_DATA; extra_descr = NULL; array = NULL; save = NULL; owner = NULL; source = empty_string; label = empty_string; position = WEAR_NONE; layer = 0; pIndexData = obj_clss; insert( obj_list, this, binary_search( obj_list, this, compare_vnum ) ); }
Wizard_Data :: Wizard_Data(char* name) : player_data(name) { record_new(sizeof(wizard_data), MEM_WIZARD); record_delete(sizeof(player_data), MEM_PLAYER); valid = WIZARD_DATA; action_edit = NULL; adata_edit = NULL; room_edit = NULL; mpdata_edit = NULL; mprog_edit = NULL; oextra_edit = NULL; opdata_edit = NULL; oprog_edit = NULL; player_edit = NULL; quest_edit = NULL; obj_edit = NULL; mob_edit = NULL; exit_edit = NULL; custom_edit = 0; rtable_edit = -1; list_edit = 0; office = 0; wizinvis = 0; vzero(table_edit, 2); bamfin = empty_string; bamfout = empty_string; level_title = empty_string; build_chan = NULL; imm_talk = NULL; god_talk = NULL; avatar = NULL; vzero(permission, 2); }
void test_record() { record_t *record; char fields[] = "ab\0abc\0abcd\0abcde\0ab\0c"; uint8_t *sizes; size_t num_fields = 6; sizes = malloc(sizeof(uint8_t) * 6); sizes[0] = 3; sizes[1] = 4; sizes[2] = 5; sizes[3] = 6; sizes[4] = 3; sizes[5] = 2; record = record_new(num_fields, fields, sizes); assert_string_equal("ab", record_get_field(record, 0)); assert_string_equal("abc", record_get_field(record, 1)); assert_string_equal("abcd", record_get_field(record, 2)); assert_string_equal("abcde", record_get_field(record, 3)); assert_string_equal("ab", record_get_field(record, 4)); assert_string_equal("c", record_get_field(record, 5)); assert_string_equal("ab", record_get_id(record)); assert_int_equal(2, record_field_size(record, 0)); assert_int_equal(3, record_field_size(record, 1)); assert_int_equal(4, record_field_size(record, 2)); assert_int_equal(5, record_field_size(record, 3)); assert_int_equal(2, record_field_size(record, 4)); assert_int_equal(1, record_field_size(record, 5)); record_free(record); }
int record_read_filtered(struct Record **R, struct File *F, struct Field *fld) { int len = 0; int flen = 0; int s = 0; int reject = 0; long int start_p = 0; struct String *str = 0; struct Record *Rfld = 0; if (F->idx >= F->size) { s = file_read(F); if (s) return s; } (*R) = 0; while (fld) { /* where do we start ? */ if (fld->start_p) { if (start_p < fld->start_p) { len = fld->start_p - start_p; start_p += len; flen = F->idx + len; if (flen >= F->size) { len = flen - F->size; s = file_read(F); if (s) goto err; } F->idx += len; } if (fld->left_q) { if (FCURC(F) == fld->left_q) { F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } } } else if (fld->left_q) { if (FCURC(F) == fld->left_q) { F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } else goto err; } if (! str) { s = str_create(&str); if (s) goto err; } if (fld->end_p) { while (start_p <= fld->end_p) { if (fld->flag && ! reject) str_append_c(str, FCURC(F)); F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } } else if (fld->right_q) { if (fld->flag && ! reject) s = file_fetch_until(F, str, fld->right_q); else s = file_skip_until(F, fld->right_q); if (s) goto err; F->idx++; start_p += str->idx + 1; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } if (fld->sep) { while (FCURC(F) != fld->sep) { F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } } else if (fld->sep) { if (fld->flag && !reject) s = file_fetch_until(F, str, fld->sep); else s = file_skip_until(F, fld->sep); if (s) goto err; F->idx++; start_p += str->idx + 1; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } else { if (fld->flag && !reject) s = file_fetch_until(F, str, CH_NEWLINE); else s = file_skip_until(F, CH_NEWLINE); if (s) goto err; } if ((fld->flag & FFLAG_FILTER) && !reject) { s = fld->fop(fld->fltr_rule, str->buf, fld->fltr_v); /* reject this record */ if (s == 0) { reject = 1; break; } } if (fld->flag & FFLAG_CREATE) { if (! reject) { s = record_new(&Rfld, fld, str); if (s) goto err; record_add_field(R, Rfld); str = 0; Rfld = 0; } } else str_prune(str); fld = fld->next; } /* go to next row */ if (FCURC(F) != CH_NEWLINE) { s = file_skip_until(F, CH_NEWLINE); } F->idx++; s = 0; err: str_destroy(&str); if ((s && s != E_FILE_END) || reject) record_destroy(R); return s; }
/** * @desc: touch if you dare! * priority in reading a record: * - start_p > left_q * - end_p > right_q > sep * @return: * < 0 : success * < !0 : fail. and R will be NULL */ int record_read(struct Record **R, struct File *F, struct Field *fld) { int s = 0; int len = 0; int flen = 0; long int start_p = 0; struct String *str = 0; struct Record *Rfld = 0; if (F->idx >= F->size) { s = file_read(F); if (s) return s; } (*R) = 0; while (fld) { /* where do we start ? */ if (fld->start_p) { if (start_p < fld->start_p) { len = fld->start_p - start_p; start_p += len; flen = F->idx + len; if (flen >= F->size) { len = flen - F->size; s = file_read(F); if (s) goto err; } F->idx += len; } if (fld->left_q) { if (FCURC(F) == fld->left_q) { F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } } } else if (fld->left_q) { if (FCURC(F) == fld->left_q) { F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } else goto err; } /* create string for field data */ s = str_create(&str); if (s) return s; if (fld->end_p) { while (start_p <= fld->end_p) { str_append_c(str, FCURC(F)); F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } } else if (fld->right_q) { s = file_fetch_until(F, str, fld->right_q); if (s) goto err; F->idx++; start_p += str->idx + 1; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } if (fld->sep) { while (FCURC(F) != fld->sep) { F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } F->idx++; start_p++; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } } else if (fld->sep) { s = file_fetch_until(F, str, fld->sep); if (s) goto err; F->idx++; start_p += str->idx + 1; if (F->idx >= F->size) { s = file_read(F); if (s) goto err; } } else { s = file_fetch_until(F, str, CH_NEWLINE); if (s) goto err; } s = record_new(&Rfld, fld, str); if (s) goto err; record_add_field(R, Rfld); str = 0; Rfld = 0; fld = fld->next; } /* go to next row */ if (FCURC(F) != CH_NEWLINE) { s = file_fetch_until(F, str, CH_NEWLINE); } F->idx++; return 0; err: str_destroy(&str); if (s && s != E_FILE_END) record_destroy(R); return s; }
Wizard_Data :: ~Wizard_Data() { record_delete(sizeof(wizard_data), MEM_WIZARD); record_new(sizeof(player_data), MEM_PLAYER); }
Player_Data :: Player_Data(char* name) : locker(this), junked(this) { record_new(sizeof(player_data), MEM_PLAYER); player_list += this; /*-- INITIALISE VARIABLES --*/ valid = PLAYER_DATA; switched = NULL; familiar = NULL; note_edit = NULL; atalk = NULL; gtell = NULL; ctell = NULL; chant = NULL; chat = NULL; gossip = NULL; yell = NULL; shout = NULL; say = NULL; tell = NULL; to = NULL; whisper = NULL; base_age = 17; bank = 0; noteboard = 0; gossip_pts = 50; prayer = 500; whistle = 0; timezone = 0; vzero(iflag, 2); pcdata = new pc_data; shdata = new share_data; descr = new descr_data; descr->name = alloc_string(name, MEM_DESCR); pcdata->pfile = NULL; pcdata->help_edit = NULL; pcdata->mail_edit = NULL; pcdata->recognize = NULL; pcdata->clss = 0; pcdata->mod_age = 0; pcdata->piety = 0; pcdata->speaking = 0; pcdata->trust = 0; pcdata->quest_pts = 0; pcdata->terminal = 0; pcdata->practice = -1; pcdata->prac_timer = 5; pcdata->religion = REL_NONE; pcdata->lines = 24; pcdata->max_level = -1; pcdata->wimpy = 0; vzero(pcdata->cflags, MAX_CFLAG); vzero(pcdata->color, MAX_COLOR); vzero(shdata->skill, MAX_SKILL); vzero(pcdata->quest_flags, MAX_QUEST); pcdata->condition[ COND_ALCOHOL ] = 0; pcdata->condition[ COND_FULL ] = 24; pcdata->condition[ COND_THIRST ] = 24; pcdata->condition[ COND_DRUNK ] = 0; pcdata->tmp_short = empty_string; pcdata->tmp_keywords = empty_string; pcdata->title = empty_string; pcdata->prompt = empty_string; pcdata->buffer = empty_string; pcdata->message = (1 << MAX_MESSAGE)-1; pcdata->mess_settings = 0; }
record record_create (/*@only@*/ char *name) { record r = record_new (); record_setName (r, name); return r; }
void do_ban( char_data* ch, char* argument ) { account_data* account; ban_data* ban; pfile_data* pfile = NULL; int flags; int i; bool first = TRUE; const char* name; player_data* victim; if( !get_flags( ch, argument, &flags, "srn", "Ban" ) ) return; if( is_set( &flags, 2 ) ) { if( *argument == '\0' ) { if( badname_array == NULL ) { send( ch, "The badname array is empty.\n\r" ); } else { display_array( ch, "Bad Name Array", &badname_array[0], &badname_array[1], max_badname ); } return; } i = pntr_search( badname_array, max_badname, argument ); if( is_set( &flags, 1 ) ) { if( i < 0 ) { send( ch, "The name '%s' wasn't in the badname array.\n\r", argument ); } else { record_delete( sizeof( char* ), MEM_BADNAME ); remove( badname_array, max_badname, i ); send( ch, "Name removed from badname array.\n\r" ); save_badname( ); } } else { if( i > 0 ) { send( ch, "The name '%s' is already in the badname array.\n\r", argument ); } else if( check_parse_name( ch->link, argument ) ) { i = -i-1; record_new( sizeof( char* ), MEM_BADNAME ); name = alloc_string( argument, MEM_BADNAME ); insert( badname_array, max_badname, name, i ); send( ch, "The name '%s' is added to the badname array.\n\r", name ); save_badname( ); } } return; } if( is_set( &flags, 0 ) ) { if( *argument == '\0' ) { page_title( ch, "Banned Sites" ); for( ban = ban_list; ban != NULL; ban = ban->next ) page( ch, "%s\n\r", ban->name ); return; } if( !is_set( &flags, 1 ) ) { for( ban = ban_list; ban != NULL; ban = ban->next ) { if( !strcasecmp( argument, ban->name ) ) { send( "That site is already banned!\n\r", ch ); return; } } ban = new ban_data; ban->name = alloc_string( argument, MEM_BAN ); save_banned( ); send( ch, "Ok.\n\r" ); } else { for( ban = ban_list; ban != NULL; ban = ban->next ) { if( !strcasecmp( argument, ban->name ) ) { delete ban; save_banned(); send( ch, "Ok.\n\r" ); return; } } send( ch, "Site is not banned.\n\r" ); } return; } if( *argument == '\0' ) { page_title( ch, "Banned Accounts" ); for( i = 0; i < max_account; i++ ) if( account_list[i]->banned != -1 ) display_account( ch, account_list[i], first ); return; } if( ( account = account_arg( argument ) ) == NULL ) { if( ( pfile = player_arg( argument ) ) == NULL ) { send( ch, "No such account or player.\n\r" ); return; } if( ( account = pfile->account ) == NULL ) { send( ch, "That player doesn't have an account which makes banning\ it difficult.\n\r" ); return; } }