xref: /csrg-svn/games/sail/lo_main.c (revision 11599)
1*11599Sleres #ifndef lint
2*11599Sleres static	char *sccsid = "@(#)lo_main.c	1.1 83/03/17";
3*11599Sleres #endif
4*11599Sleres /*
5*11599Sleres  * Print out the top ten SAILors
6*11599Sleres  *
7*11599Sleres  * sail.log [-s/l]
8*11599Sleres  *
9*11599Sleres  *  -s force a short listing (without real usernames)
10*11599Sleres  *  -l force a long listing (print out real usernames)
11*11599Sleres  */
12*11599Sleres #include <pwd.h>
13*11599Sleres #include "externs.h"
14*11599Sleres 
15*11599Sleres char *title[] = {
16*11599Sleres     "Admiral", "Commodore", "Captain", "Captain",
17*11599Sleres     "Captain", "Captain", "Captain", "Commander",
18*11599Sleres     "Commander", "Lieutenant"
19*11599Sleres };
20*11599Sleres 
21*11599Sleres main(argc, argv)
22*11599Sleres int argc;
23*11599Sleres char **argv;
24*11599Sleres {
25*11599Sleres     FILE *fp;
26*11599Sleres     char sbuf[32];
27*11599Sleres     int n = 0, people;
28*11599Sleres     int usrnam = SAILLOGDEF;
29*11599Sleres     struct passwd *getpwuid(), *pass;
30*11599Sleres     struct logs flog;
31*11599Sleres 
32*11599Sleres     if (argc > 1)
33*11599Sleres 	if (argc == 2)
34*11599Sleres 	    if (!strcmp(argv[1], "-s"))
35*11599Sleres 		usrnam = 0;
36*11599Sleres 	    else if (!strcmp(argv[1], "-l"))
37*11599Sleres 		usrnam = 1;
38*11599Sleres 	else {
39*11599Sleres 	    fprintf(stderr, "usage: %s: [-s/l]\n", argv[0]);
40*11599Sleres 	    exit(1);
41*11599Sleres 	}
42*11599Sleres     if((fp = fopen(LOGFILE, "r")) == 0) {
43*11599Sleres 	printf("%s: Error opening logfile - %s\n", argv[0], LOGFILE);
44*11599Sleres 	exit(1);
45*11599Sleres     }
46*11599Sleres     if (fread(&people, sizeof(people), 1, fp) == 0) {
47*11599Sleres 	printf("%s: Error reading logfile.\n", argv[0]);
48*11599Sleres 	exit(1);
49*11599Sleres     }
50*11599Sleres     while ((fread(&flog, sizeof(flog), 1, fp) != 0) && (flog.fname[0] != '\0')) {
51*11599Sleres 	if (usrnam && ((pass = getpwuid(flog.uid)) != NULL))
52*11599Sleres 	    sprintf(sbuf, "%10.10s (%s)", flog.fname, pass->pw_name);
53*11599Sleres 	else
54*11599Sleres 	    sprintf(sbuf, "%10.10s", flog.fname);
55*11599Sleres 	printf("%-10s %21s of the %15s %3d points, %5.2f equiv\n",
56*11599Sleres 	  title[n++], sbuf,
57*11599Sleres 	  scene[flog.fgamenum].ship[flog.fshipnum].shipname,
58*11599Sleres 	  flog.netpoints,
59*11599Sleres 	  (float) flog.netpoints /
60*11599Sleres 	  specs[scene[flog.fgamenum].ship[flog.fshipnum].shipnum].pts);
61*11599Sleres     }
62*11599Sleres     printf("\n%d people have played.\n", people);
63*11599Sleres }
64