From: IN%"ec938236@ebar.dth.dk" "Poul Rxste Hansen" 28-MAR-1994 22:18:49.92 To: IN%"CAVNESS@utxvms.cc.utexas.edu" CC: Subj: no subject (file transmission) Return-path: <ec938236@ebar.dth.dk> Received: from dese01.ebar.dth.dk by utxvms.cc.utexas.edu (PMDF V4.3-6 #4544) id <01HAIRYCVS4G8WWEMD@utxvms.cc.utexas.edu>; Mon, 28 Mar 1994 22:12:13 CST Received: by dese01.ebar.dth.dk (5.57/1.34) id AA10193; Tue, 29 Mar 94 05:12:08 +0200 Date: Tue, 29 Mar 1994 05:12:07 +0100 (MET) From: Poul Rxste Hansen <ec938236@ebar.dth.dk> Subject: no subject (file transmission) To: CAVNESS@utxvms.cc.utexas.edu Message-id: <9403290312.AA10193@dese01.ebar.dth.dk> X-Mailer: ELM [version 2.3 PL11] Content-transfer-encoding: 7BIT in file comm.c : int main(int argc, char **argv) { int port, i; char buf[512]; int pos = 1; char *dir; port = DFLT_PORT; dir = DFLT_DIR; while ((pos < argc) && (*(argv[pos]) == '-')) { switch (*(argv[pos] + 1)) { case 'd': if (*(argv[pos] + 2)) ....... no_specials = 1; log("Suppressing assignment of special routines."); break; case 'c': if (chdir(dir) < 0) { perror("Fatal error changing to data directory"); exit(0); } log("Converting player files to new format..."); i=convert_to_new(); if (i) sprintf(buf, "Conversion succeeded... :)"); else sprintf(buf, "Conversion failed... :("); log(buf); return(i); break; default: sprintf(buf, "SYSERR: Unknown option -%c in argument string.", *(argv[pos] + 1)); log(buf); break; } ........... ------------------------------ in file structs.h /* this file will be in the format that the converted file will be in..... after conversion, copy this struct into char_file_u ..... */ struct conv_char_file_u { byte sex; byte class; byte level; time_t birth; /* Time of birth of character */ int played; /* Number of secs played in total */ ubyte weight; ubyte height; char title[80]; sh_int hometown; char description[240]; bool talks[MAX_TOUNGE]; struct char_ability_data abilities; struct char_point_data points; byte skills[MAX_SKILLS]; struct affected_type affected[MAX_AFFECT]; struct char_special2_data specials2; time_t last_logon; /* Time (in secs) of last logon */ char host[HOST_LEN+1]; /* host of last logon */ /* char data */ char name[20]; char pwd[MAX_PWD_LENGTH+1]; }; ------------------------------------------------------------------- file db.h #define POLICIES_FILE "text/policies" /* player policies/rules */ #define HANDBOOK_FILE "text/handbook" /* handbook for new immorts */ #define CONV_FILE "misc/players.converted" #define PLAYER_FILE "misc/players" /* the player database */ #define MESS_FILE "misc/messages" /* damage message */ ..... /* public procedures in db.c */ int convert_to_new(void); void boot_db(void); ..... ----------------------------------- file db.c struct player_index_element *player_table = 0; /* index to player file */ FILE *player_fl = 0; /* file desc of player file */ FILE *conv_player_fl = 0; int top_of_p_table = 0; /* ref to top of table */ int top_of_p_file = 0; /* ref of size of p file */ ............. int convert_to_new(void) { struct char_file_u cfrom; struct conv_char_file_u cto; long size, recs; int i; if (!(player_fl = fopen(PLAYER_FILE, "r+b"))) { perror("Error opening playerfile"); return(0); } if (!(conv_player_fl = fopen(CONV_FILE, "w+b"))) { perror("Error opening convert_playerfile"); return(0); } fseek(player_fl, 0L, SEEK_END); size = ftell(player_fl); rewind(player_fl); if (size % sizeof(struct char_file_u)) fprintf(stderr, "WARNING: PLAYERFILE IS PROBABLY CORRUPT!\n"); recs = size / sizeof(struct char_file_u); if (recs) { sprintf(buf, " %ld players in db ready for conversion.", recs); log(buf); } else { log("Why the fuck should you convert, when there's nothing to convert???"); return(0); } for (; !feof(player_fl); ) { fread(&cfrom, sizeof(struct char_file_u), 1, player_fl); cto.sex=cfrom.sex; cto.class=cfrom.class; cto.level=cfrom.level; cto.birth=cfrom.birth; cto.played=cfrom.played; cto.weight=cfrom.weight; cto.height=cfrom.height; strcpy(cto.title, cfrom.title); cto.hometown=cfrom.hometown; strcpy(cto.description, cfrom.description); strcpy(cto.talks, cfrom.talks); cto.abilities=cfrom.abilities; cto.points=cfrom.points; for (i=0;i<=MAX_SKILLS;i++) cto.skills[i]=cfrom.skills[i]; for (i=0;i<=MAX_AFFECT;i++) cto.affected[i]=cfrom.affected[i]; cto.specials2=cfrom.specials2; cto.last_logon=cfrom.last_logon; strcpy(cto.host, cfrom.host); strcpy(cto.name, cfrom.name); strcpy(cto.pwd, cfrom.pwd); if (!feof(player_fl)) { fwrite(&cto, sizeof(struct conv_char_file_u), 1, conv_player_fl); sprintf (buf, "Conversion of %s is now done.", cto.name); log(buf); } } log("Conversion finished...."); fclose(player_fl); fclose(conv_player_fl); system("cp misc/players misc/players.safety"); return(1); } .... :) remember...after having used it with a conv_char_file_u different than the char_file_u.....change the current char_file_u to match the conv_char_file_u, so that it uses the new additions as standard... :) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cavness@utxvms.cc.utexas.edu | The Great Holy Star Goat Kenneth G. Cavness | is with all of us, "Supreme Diva" | braised be Its name. "I'm pro-choice--please don't | shoot me in the back." | Braise the name of Our Lard! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This archive was generated by hypermail 2b30 : 12/07/00 PST