/ circle3.1 / src / util / showplay.c
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  }