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