showplay.c
1 /* ************************************************************************ 2 * file: showplay.c Part of CircleMud * 3 * Usage: list a diku playerfile * 4 * Copyright (C) 1990, 1991 - see 'license.doc' for complete information. * 5 * All Rights Reserved * 6 ************************************************************************* */ 7 8 #include "conf.h" 9 #include "sysdep.h" 10 11 #include "structs.h" 12 13 14 void show(char *filename) 15 { 16 char sexname; 17 char classname[10]; 18 FILE *fl; 19 struct char_file_u player; 20 int num = 0; 21 long size; 22 23 if (!(fl = fopen(filename, "r+"))) { 24 perror("error opening playerfile"); 25 exit(1); 26 } 27 fseek(fl, 0L, SEEK_END); 28 size = ftell(fl); 29 rewind(fl); 30 if (size % sizeof(struct char_file_u)) { 31 fprintf(stderr, "\aWARNING: File size does not match structure, recompile showplay.\n"); 32 fclose(fl); 33 exit(1); 34 } 35 36 for (;;) { 37 fread(&player, sizeof(struct char_file_u), 1, fl); 38 if (feof(fl)) { 39 fclose(fl); 40 exit(0); 41 } 42 switch (player.chclass) { 43 case CLASS_THIEF: 44 strcpy(classname, "Th"); 45 break; 46 case CLASS_WARRIOR: 47 strcpy(classname, "Wa"); 48 break; 49 case CLASS_MAGIC_USER: 50 strcpy(classname, "Mu"); 51 break; 52 case CLASS_CLERIC: 53 strcpy(classname, "Cl"); 54 break; 55 default: 56 strcpy(classname, "--"); 57 break; 58 } 59 60 switch (player.sex) { 61 case SEX_FEMALE: 62 sexname = 'F'; 63 break; 64 case SEX_MALE: 65 sexname = 'M'; 66 break; 67 case SEX_NEUTRAL: 68 sexname = 'N'; 69 break; 70 default: 71 sexname = '-'; 72 break; 73 } 74 75 printf("%5d. ID: %5ld (%c) [%2d %s] %-16s %9dg %9db\n", ++num, 76 player.char_specials_saved.idnum, sexname, player.level, 77 classname, player.name, player.points.gold, 78 player.points.bank_gold); 79 } 80 } 81 82 83 int main(int argc, char **argv) 84 { 85 if (argc != 2) 86 printf("Usage: %s playerfile-name\n", argv[0]); 87 else 88 show(argv[1]); 89 90 return (0); 91 }