]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - battlestar/com6.c
Make spacing nicer and add explicit NULL initializers.
[bsdgames-darwin.git] / battlestar / com6.c
index ddf30d2a22c9437fc6b2c19c8db2507c6b66a992..027249d252ed72bb19292d0c69d09fcbd556e2c1 100644 (file)
@@ -1,6 +1,8 @@
+/*     $NetBSD: com6.c,v 1.15 1999/09/14 18:08:46 jsm Exp $    */
+
 /*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1983, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
-/*static char sccsid[] = "from: @(#)com6.c     5.5 (Berkeley) 6/1/90";*/
-static char rcsid[] = "$Id: com6.c,v 1.2 1993/08/01 18:56:07 mycroft Exp $";
-#endif /* not lint */
+#if 0
+static char sccsid[] = "@(#)com6.c     8.2 (Berkeley) 4/28/95";
+#else
+__RCSID("$NetBSD: com6.c,v 1.15 1999/09/14 18:08:46 jsm Exp $");
+#endif
+#endif                         /* not lint */
 
-#include "externs.h"
+#include "extern.h"
 #include "pathnames.h"
 
+int
 launch()
 {
-       if (testbit(location[position].objects,VIPER) && !notes[CANTLAUNCH]){
-               if (fuel > 4){
-                       clearbit(location[position].objects,VIPER);
+       if (testbit(location[position].objects, VIPER) && !notes[CANTLAUNCH]) {
+               if (fuel > 4) {
+                       clearbit(location[position].objects, VIPER);
                        position = location[position].up;
                        notes[LAUNCHED] = 1;
-                       time++;
+                       ourtime++;
                        fuel -= 4;
                        puts("You climb into the viper and prepare for launch.");
                        puts("With a touch of your thumb the turbo engines ignite, thrusting you back into\nyour seat.");
-                       return(1);
-               }
-               else
+                       return (1);
+               } else
                        puts("Not enough fuel to launch.");
-        }
-        else
+       } else
                puts("Can't launch.");
-        return(0);
+       return (0);
 }
 
+int
 land()
 {
-       if (notes[LAUNCHED] && testbit(location[position].objects,LAND) && location[position].down){
+       if (notes[LAUNCHED] && testbit(location[position].objects, LAND) &&
+           location[position].down) {
                notes[LAUNCHED] = 0;
                position = location[position].down;
-               setbit(location[position].objects,VIPER);
+               setbit(location[position].objects, VIPER);
                fuel -= 2;
-               time++;
+               ourtime++;
                puts("You are down.");
-               return(1);
-       }
-       else
+               return (1);
+       } else
                puts("You can't land here.");
-       return(0);
+       return (0);
 }
 
-die()          /* endgame */
-{
+void
+die()
+{                              /* endgame */
        printf("bye.\nYour rating was %s.\n", rate());
        post(' ');
        exit(0);
 }
 
+void
+diesig(dummy)
+       int     dummy __attribute__((__unused__));
+{
+       die();
+}
+
+void
 live()
 {
        puts("\nYou win!");
@@ -90,125 +105,146 @@ live()
        exit(0);
 }
 
-/*
- * sigh -- this program thinks "time" is an int.  It's easier to not load
- * <time.h> than try and fix it.
- */
-#define KERNEL
-#include <sys/time.h>
-#undef KERNEL
+static FILE *score_fp;
 
+void
+open_score_file()
+{
+       score_fp = fopen(_PATH_SCORE, "a");
+       if (score_fp == NULL)
+               warn("open %s for append", _PATH_SCORE);
+       if (score_fp != NULL && fileno(score_fp) < 3)
+               exit(1);
+}
+
+void
 post(ch)
-char ch;
+       char    ch;
 {
-       FILE *fp;
-       struct timeval tv;
-       char *date, *ctime();
-       int s = sigblock(sigmask(SIGINT));
+       time_t tv;
+       char   *date;
+       sigset_t sigset, osigset;
 
-       gettimeofday(&tv, (struct timezone *)0);        /* can't call time */
-       date = ctime(&tv.tv_sec);
+       sigemptyset(&sigset);
+       sigaddset(&sigset, SIGINT);
+       sigprocmask(SIG_BLOCK, &sigset, &osigset);
+       tv = time(NULL);
+       date = ctime(&tv);
        date[24] = '\0';
-       if (fp = fopen(_PATH_SCORE,"a")) {
-               fprintf(fp, "%s  %8s  %c%20s", date, uname, ch, rate());
+       if (score_fp != NULL) {
+               fprintf(score_fp, "%s  %8s  %c%20s", date, username, ch, rate());
                if (wiz)
-                       fprintf(fp, "   wizard\n");
-               else if (tempwiz)
-                       fprintf(fp, "   WIZARD!\n");
+                       fprintf(score_fp, "   wizard\n");
                else
-                       fprintf(fp, "\n");
-       } else
-               perror(_PATH_SCORE);
-       sigsetmask(s);
+                       if (tempwiz)
+                               fprintf(score_fp, "   WIZARD!\n");
+                       else
+                               fprintf(score_fp, "\n");
+       }
+       sigprocmask(SIG_SETMASK, &osigset, (sigset_t *) 0);
 }
 
-char *
+const char   *
 rate()
 {
-       int score;
+       int     score;
 
-       score = max(max(pleasure,power),ego);
-       if (score == pleasure){
-               if (score < 5)
-                       return("novice");
-               else if (score < 20)
-                       return("junior voyeur");
-               else if (score < 35)
-                       return("Don Juan");
-               else return("Marquis De Sade");
-       }
-       else if (score == power){
-               if (score < 5)
-                       return("serf");
-               else if (score < 8)
-                       return("Samurai");
-               else if (score < 13)
-                       return("Klingon");
-               else if (score < 22)
-                       return("Darth Vader");
-               else return("Sauron the Great");
-       }
-       else{
+       score = max(max(pleasure, power), ego);
+       if (score == pleasure) {
                if (score < 5)
-                       return("Polyanna");
-               else if (score < 10)
-                       return("philanthropist");
-               else if (score < 20)
-                       return("Tattoo");
-               else return("Mr. Roarke");
-       }
+                       return ("novice");
+               else
+                       if (score < 20)
+                               return ("junior voyeur");
+                       else
+                               if (score < 35)
+                                       return ("Don Juan");
+                               else
+                                       return ("Marquis De Sade");
+       } else
+               if (score == power) {
+                       if (score < 5)
+                               return ("serf");
+                       else
+                               if (score < 8)
+                                       return ("Samurai");
+                               else
+                                       if (score < 13)
+                                               return ("Klingon");
+                                       else
+                                               if (score < 22)
+                                                       return ("Darth Vader");
+                                               else
+                                                       return ("Sauron the Great");
+               } else {
+                       if (score < 5)
+                               return ("Polyanna");
+                       else
+                               if (score < 10)
+                                       return ("philanthropist");
+                               else
+                                       if (score < 20)
+                                               return ("Tattoo");
+                                       else
+                                               return ("Mr. Roarke");
+               }
 }
 
+int
 drive()
 {
-       if (testbit(location[position].objects,CAR)){
+       if (testbit(location[position].objects, CAR)) {
                puts("You hop in the car and turn the key.  There is a perceptible grating noise,");
                puts("and an explosion knocks you unconscious...");
-               clearbit(location[position].objects,CAR);
-               setbit(location[position].objects,CRASH);
+               clearbit(location[position].objects, CAR);
+               setbit(location[position].objects, CRASH);
                injuries[5] = injuries[6] = injuries[7] = injuries[8] = 1;
-               time += 15;
+               ourtime += 15;
                zzz();
-               return(0);
-       }
-       else
+               return (0);
+       } else
                puts("There is nothing to drive here.");
-       return(-1);
+       return (-1);
 }
 
+int
 ride()
 {
-       if (testbit(location[position].objects,HORSE)){
+       if (testbit(location[position].objects, HORSE)) {
                puts("You climb onto the stallion and kick it in the guts.  The stupid steed launches");
                puts("forward through bush and fern.  You are thrown and the horse gallups off.");
-               clearbit(location[position].objects,HORSE);
-               while (!(position = rnd(NUMOFROOMS+1)) || !OUTSIDE || !beenthere[position] || location[position].flyhere);
-               setbit(location[position].objects,HORSE);
+               clearbit(location[position].objects, HORSE);
+               while (!(position = rnd(NUMOFROOMS + 1)) || !OUTSIDE || !beenthere[position] || location[position].flyhere);
+               setbit(location[position].objects, HORSE);
                if (location[position].north)
                        position = location[position].north;
-               else if (location[position].south)
-                       position = location[position].south;
-               else if (location[position].east)
-                       position = location[position].east;
                else
-                       position = location[position].west;
-               return(0);
-       }
-       else puts("There is no horse here.");
-       return(-1);
+                       if (location[position].south)
+                               position = location[position].south;
+                       else
+                               if (location[position].east)
+                                       position = location[position].east;
+                               else
+                                       position = location[position].west;
+               return (0);
+       } else
+               puts("There is no horse here.");
+       return (-1);
 }
 
-light()                /* synonyms = {strike, smoke} */
-{              /* for matches, cigars */
-       if (testbit(inven,MATCHES) && matchcount){
+void
+light()
+{                              /* synonyms = {strike, smoke} *//* for
+                                * matches, cigars */
+       if (testbit(inven, MATCHES) && matchcount) {
                puts("Your match splutters to life.");
-               time++;
+               ourtime++;
                matchlight = 1;
                matchcount--;
-               if (position == 217){
+               if (position == 217) {
                        puts("The whole bungalow explodes with an intense blast.");
                        die();
                }
-       }
-       else puts("You're out of matches.");
+       } else
+               puts("You're out of matches.");
 }