1: /*
   2:  * Copyright (c) 1983 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #ifndef lint
   8: char copyright[] =
   9: "@(#) Copyright (c) 1983 Regents of the University of California.\n\
  10:  All rights reserved.\n";
  11: #endif not lint
  12: 
  13: #ifndef lint
  14: static char sccsid[] = "@(#)cfscores.c	5.1 (Berkeley) 5/29/85";
  15: #endif not lint
  16: 
  17: #include <pwd.h>
  18: 
  19: struct betinfo {
  20:     long    hand;       /* cost of dealing hand */
  21:     long    inspection; /* cost of inspecting hand */
  22:     long    game;       /* cost of buying game */
  23:     long    runs;       /* cost of running through hands */
  24:     long    information;    /* cost of information */
  25:     long    thinktime;  /* cost of thinking time */
  26:     long    wins;       /* total winnings */
  27:     long    worth;      /* net worth after costs */
  28: };
  29: 
  30: char *scorefile = "/usr/games/lib/cfscores";
  31: int dbfd;
  32: 
  33: main(argc, argv)
  34:     int argc;
  35:     char *argv[];
  36: {
  37:     register struct passwd *pw;
  38:     int uid;
  39: 
  40:     if (argc > 2) {
  41:         printf("Usage: cfscores [user]\n");
  42:         exit(1);
  43:     }
  44:     dbfd = open(scorefile, 0);
  45:     if (dbfd < 0) {
  46:         perror(scorefile);
  47:         exit(2);
  48:     }
  49:     setpwent();
  50:     if (argc == 1) {
  51:         uid = getuid();
  52:         pw = getpwuid(uid);
  53:         if (pw == 0) {
  54:             printf("You are not listed in the password file?!?\n");
  55:             exit(2);
  56:         }
  57:         printuser(pw, 1);
  58:         exit(0);
  59:     }
  60:     if (strcmp(argv[1], "-a") == 0) {
  61:         while ((pw = getpwent()) != 0)
  62:             printuser(pw, 0);
  63:         exit(0);
  64:     }
  65:     pw = getpwnam(argv[1]);
  66:     if (pw == 0) {
  67:         printf("User %s unknown\n", argv[1]);
  68:         exit(3);
  69:     }
  70:     printuser(pw, 1);
  71:     exit(0);
  72: }
  73: 
  74: /*
  75:  * print out info for specified password entry
  76:  */
  77: printuser(pw, printfail)
  78:     register struct passwd *pw;
  79:     int printfail;
  80: {
  81:     struct betinfo total;
  82:     int i;
  83: 
  84:     if (pw->pw_uid < 0) {
  85:         printf("Bad uid %d\n", pw->pw_uid);
  86:         return;
  87:     }
  88:     i = lseek(dbfd, pw->pw_uid * sizeof(struct betinfo), 0);
  89:     if (i < 0) {
  90:         perror("lseek");
  91:         return;
  92:     }
  93:     i = read(dbfd, (char *)&total, sizeof(total));
  94:     if (i < 0) {
  95:         perror("read");
  96:         return;
  97:     }
  98:     if (i == 0 || total.hand == 0) {
  99:         if (printfail)
 100:             printf("%s has never played canfield.\n", pw->pw_name);
 101:         return;
 102:     }
 103:     printf("*----------------------*\n");
 104:     if (total.worth >= 0)
 105:         printf("* Winnings for %-8s*\n", pw->pw_name);
 106:     else
 107:         printf("* Losses for %-10s*\n", pw->pw_name);
 108:     printf("*======================*\n");
 109:     printf("|Costs           Total |\n");
 110:     printf("| Hands       %8d |\n", total.hand);
 111:     printf("| Inspections %8d |\n", total.inspection);
 112:     printf("| Games       %8d |\n", total.game);
 113:     printf("| Runs        %8d |\n", total.runs);
 114:     printf("| Information %8d |\n", total.information);
 115:     printf("| Think time  %8d |\n", total.thinktime);
 116:     printf("|Total Costs  %8d |\n", total.wins - total.worth);
 117:     printf("|Winnings     %8d |\n", total.wins);
 118:     printf("|Net Worth    %8d |\n", total.worth);
 119:     printf("*----------------------*\n\n");
 120: }

Defined functions

main defined in line 33; never used
printuser defined in line 77; used 3 times

Defined variables

copyright defined in line 8; never used
dbfd defined in line 31; used 4 times
sccsid defined in line 14; never used
scorefile defined in line 30; used 2 times

Defined struct's

betinfo defined in line 19; used 4 times
  • in line 81(2), 88(2)
Last modified: 1985-05-29
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 3001
Valid CSS Valid XHTML 1.0 Strict