]> granicus.if.org Git - nethack/commitdiff
sys/vms/*.c - mostly reformatting
authorPatR <rankin@nethack.org>
Fri, 11 Dec 2015 02:42:27 +0000 (18:42 -0800)
committerPatR <rankin@nethack.org>
Fri, 11 Dec 2015 02:42:27 +0000 (18:42 -0800)
I'm not sure whether basic formatting cleanup belongs in 3.6.1, but
there are also a couple of strings that got split and require the
implicit concatenation of adjacent string literals introduced with
C89/C90.  The code itself compiles with pre-ANSI compilers, or at
least used to--most of it was developed with one....

Much of it is tabs in comments.  But there was one substantive item:
an obsolete reference to "use 'Q' to Quit" after however many years....

sys/vms/vmsfiles.c
sys/vms/vmsmail.c
sys/vms/vmsmain.c
sys/vms/vmstty.c
sys/vms/vmsunix.c

index a2a98a28a275461601e40eb617fe6bbb7fec6d54..dfad46e23de89653ac9000b034b806452a62ed05 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 vmsfiles.c      $NHDT-Date: 1432512790 2015/05/25 00:13:10 $  $NHDT-Branch: master $:$NHDT-Revision: 1.9 $ */
+/* NetHack 3.6 vmsfiles.c      $NHDT-Date: 1449801740 2015/12/11 02:42:20 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.10 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -29,7 +29,7 @@ int FDECL(c__translate, (int));
 extern unsigned long sys$parse(), sys$search(), sys$enter(), sys$remove();
 extern int VDECL(lib$match_cond, (int, int, ...));
 
-#define vms_success(sts) ((sts) &1)          /* odd, */
+#define vms_success(sts) ((sts) & 1)         /* odd, */
 #define vms_failure(sts) (!vms_success(sts)) /* even */
 
 /* vms_link() -- create an additional directory for an existing file */
@@ -208,30 +208,30 @@ const char *d1, *d2;
         f2.fab$b_fns = strlen(f2.fab$l_fna = (char *) d2);
         f1.fab$l_nam = (genericptr_t) &n1; /* link nam to fab */
         f2.fab$l_nam = (genericptr_t) &n2;
-        n1.nam$b_nop = n2.nam$b_nop =
-            NAM$M_NOCONCEAL; /* want true device name */
-
-        return (
-            vms_success(sys$parse(&f1)) && vms_success(sys$parse(&f2))
-            && n1.nam$t_dvi[0] == n2.nam$t_dvi[0]
-            && !strncmp(&n1.nam$t_dvi[1], &n2.nam$t_dvi[1], n1.nam$t_dvi[0])
-            && !memcmp((genericptr_t) n1.nam$w_did,
-                       (genericptr_t) n2.nam$w_did,
-                       sizeof n1.nam$w_did)); /*{ short nam$w_did[3]; }*/
+        /* want true device name */
+        n1.nam$b_nop = n2.nam$b_nop = NAM$M_NOCONCEAL;
+
+        return (vms_success(sys$parse(&f1)) && vms_success(sys$parse(&f2))
+                && n1.nam$t_dvi[0] == n2.nam$t_dvi[0]
+                && !strncmp(&n1.nam$t_dvi[1], &n2.nam$t_dvi[1],
+                            n1.nam$t_dvi[0])
+                && !memcmp((genericptr_t) n1.nam$w_did,
+                           (genericptr_t) n2.nam$w_did,
+                           sizeof n1.nam$w_did)); /*{ short nam$w_did[3]; }*/
     }
 }
 
 /*
  * c__translate -- substitute for VAXCRTL routine C$$TRANSLATE.
  *
- *     Try to convert a VMS status code into its Unix equivalent,
- *     then set `errno' to that value; use EVMSERR if there's no
- *     appropriate translation; set `vaxc$errno' to the original
- *     status code regardless.
+ *      Try to convert a VMS status code into its Unix equivalent,
+ *      then set `errno' to that value; use EVMSERR if there's no
+ *      appropriate translation; set `vaxc$errno' to the original
+ *      status code regardless.
  *
- *     These translations match only a subset of VAXCRTL's lookup
- *     table, but work even if the severity has been adjusted or
- *     the inhibit-message bit has been set.
+ *      These translations match only a subset of VAXCRTL's lookup
+ *      table, but work even if the severity has been adjusted or
+ *      the inhibit-message bit has been set.
  */
 #include <errno.h>
 #include <ssdef.h>
@@ -251,37 +251,46 @@ int code;
 {
     register int trans;
 
+/* clang-format off */
+/* *INDENT-OFF* */
     switch ((code & 0x0FFFFFF8) >> 3) { /* strip upper 4 and bottom 3 bits */
-        CASE2(RMS$_PRV, SS$_NOPRIV) : VALUE(EPERM); /* not owner */
-        CASE2(RMS$_DNF, RMS$_DIR)
-            : CASE2(RMS$_FNF, RMS$_FND)
-            : CASE1(SS$_NOSUCHFILE)
-            : VALUE(ENOENT); /* no such file or directory */
-        CASE2(RMS$_IFI, RMS$_ISI) : VALUE(EIO); /* i/o error */
-        CASE1(RMS$_DEV)
-            : CASE2(SS$_NOSUCHDEV, SS$_DEVNOTMOUNT)
-            : VALUE(ENXIO); /* no such device or address codes */
-        CASE1(RMS$_DME)
-            : /* CASE1(LIB$INSVIRMEM): */
-              CASE2(SS$_VASFULL, SS$_INSFWSL)
-            : VALUE(ENOMEM);               /* not enough core */
-        CASE1(SS$_ACCVIO) : VALUE(EFAULT); /* bad address */
-        CASE2(RMS$_DNR, SS$_DEVASSIGN)
-            : CASE2(SS$_DEVALLOC, SS$_DEVALRALLOC)
-            : CASE2(SS$_DEVMOUNT, SS$_DEVACTIVE)
-            : VALUE(EBUSY); /* mount device busy codes to name a few */
-        CASE2(RMS$_FEX, SS$_FILALRACC) : VALUE(EEXIST); /* file exists */
-        CASE2(RMS$_IDR, SS$_BADIRECTORY)
-            : VALUE(ENOTDIR);                /* not a directory */
-        CASE1(SS$_NOIOCHAN) : VALUE(EMFILE); /* too many open files */
-        CASE1(RMS$_FUL)
-            : CASE2(SS$_DEVICEFULL, SS$_EXDISKQUOTA)
-            : VALUE(ENOSPC); /* no space left on disk codes */
-        CASE2(RMS$_WLK, SS$_WRITLCK)
-            : VALUE(EROFS); /* read-only file system */
+    CASE2(RMS$_PRV, SS$_NOPRIV):
+        VALUE(EPERM); /* not owner */
+    CASE2(RMS$_DNF, RMS$_DIR):
+    CASE2(RMS$_FNF, RMS$_FND):
+    CASE1(SS$_NOSUCHFILE):
+        VALUE(ENOENT); /* no such file or directory */
+    CASE2(RMS$_IFI, RMS$_ISI):
+        VALUE(EIO); /* i/o error */
+    CASE1(RMS$_DEV):
+    CASE2(SS$_NOSUCHDEV, SS$_DEVNOTMOUNT):
+        VALUE(ENXIO); /* no such device or address codes */
+    CASE1(RMS$_DME):
+ /* CASE1(LIB$INSVIRMEM): */
+    CASE2(SS$_VASFULL, SS$_INSFWSL):
+        VALUE(ENOMEM); /* not enough core */
+    CASE1(SS$_ACCVIO):
+        VALUE(EFAULT); /* bad address */
+    CASE2(RMS$_DNR, SS$_DEVASSIGN):
+    CASE2(SS$_DEVALLOC, SS$_DEVALRALLOC):
+    CASE2(SS$_DEVMOUNT, SS$_DEVACTIVE):
+        VALUE(EBUSY); /* mount device busy codes to name a few */
+    CASE2(RMS$_FEX, SS$_FILALRACC):
+        VALUE(EEXIST); /* file exists */
+    CASE2(RMS$_IDR, SS$_BADIRECTORY):
+        VALUE(ENOTDIR); /* not a directory */
+    CASE1(SS$_NOIOCHAN):
+        VALUE(EMFILE); /* too many open files */
+    CASE1(RMS$_FUL):
+    CASE2(SS$_DEVICEFULL, SS$_EXDISKQUOTA):
+        VALUE(ENOSPC); /* no space left on disk codes */
+    CASE2(RMS$_WLK, SS$_WRITLCK):
+        VALUE(EROFS); /* read-only file system */
     default:
         VALUE(EVMSERR);
     };
+/* clang-format on */
+/* *INDENT-ON* */
 
     errno = trans;
     vaxc$errno = code;
index e62d2dca9f70090d8c7f6e6a5ddb0f96da723ea4..989775687517902d5829ecb105b8b606c4fd3daf 100644 (file)
@@ -1,5 +1,5 @@
-/* NetHack 3.6 vmsmail.c       $NHDT-Date: 1432512789 2015/05/25 00:13:09 $  $NHDT-Branch: master $:$NHDT-Revision: 1.9 $ */
-/* Copyright (c) Robert Patrick Rankin, 1991.                    */
+/* NetHack 3.6 vmsmail.c       $NHDT-Date: 1449801741 2015/12/11 02:42:21 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.10 $ */
+/* Copyright (c) Robert Patrick Rankin, 1991.                     */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "config.h"
@@ -25,7 +25,7 @@ struct mail_info *NDECL(parse_next_broadcast);
 #endif /*__GNUC__*/
 #include <signal.h>
 /* #include <string.h> */
-#define vms_ok(sts) ((sts) &1)
+#define vms_ok(sts) ((sts) & 1)
 
 static struct mail_info *FDECL(parse_brdcst, (char *));
 static void FDECL(filter_brdcst, (char *));
@@ -49,7 +49,7 @@ static long pasteboard_id = 0; /* SMG's magic cookie */
 /*
  * Mail (et al) overview:
  *
- *     When a broadcast is asynchronously captured, a volatile counter
+ *      When a broadcast is asynchronously captured, a volatile counter
  * ('broadcasts') is incremented.  Each player turn, ckmailstatus() polls
  * the counter and calls parse_next_broadcast() if it's positive; this
  * returns some display text, object name, and response command, which is
@@ -62,7 +62,7 @@ static long pasteboard_id = 0; /* SMG's magic cookie */
  * If SHELL is undefined, then all broadcasts are treated as 'other'; since
  * no subproceses are allowed, there'd be no way to respond to the scroll.
  *
- *     When a scroll of mail is read by the character, readmail() extracts
+ *      When a scroll of mail is read by the character, readmail() extracts
  * the command string and uses it for the default when prompting the
  * player for a system command to spawn.  The player may enter any command
  * he or she chooses, or just <return> to accept the default or <escape> to
@@ -73,36 +73,36 @@ static long pasteboard_id = 0; /* SMG's magic cookie */
  *
  * Broadcast parsing:
  *
- *     The following broadcast messages are [attempted to be] recognized:
- *    text fragment          name for scroll         default command
- *     New mail                VMSmail                 MAIL
- *     New ALL-IN-1 MAIL       A1mail                  A1M
- *     Software Tools mail     STmail                  MSG [+folder]
- *     MM mail                 MMmail                  MM
- *     WPmail: New mail        WPmail                  OFFICE/MAIL
- *     **M400 mail             M400mail                M400
- *     " mail", ^"mail "       unknown mail            SPAWN
- *     " phoning"              Phone call              PHONE ANSWER
- *     talk-daemon...by...foo  Talk request            TALK[/OLD] foo@bar
- *     (node)user -            Bitnet noise            XYZZY user@node
+ *      The following broadcast messages are [attempted to be] recognized:
+ *    text fragment           name for scroll         default command
+ *      New mail                VMSmail                 MAIL
+ *      New ALL-IN-1 MAIL       A1mail                  A1M
+ *      Software Tools mail     STmail                  MSG [+folder]
+ *      MM mail                 MMmail                  MM
+ *      WPmail: New mail        WPmail                  OFFICE/MAIL
+ *      **M400 mail             M400mail                M400
+ *      " mail", ^"mail "       unknown mail            SPAWN
+ *      " phoning"              Phone call              PHONE ANSWER
+ *      talk-daemon...by...foo  Talk request            TALK[/OLD] foo@bar
+ *      (node)user -            Bitnet noise            XYZZY user@node
  * Anything else results in just the message text being passed along, no
  * scroll of mail so consequently no command to execute when scroll read.
  * The user can set up ``$ XYZZY :== SEND'' prior to invoking NetHack if
  * vanilla JNET responses to Bitnet messages are prefered.
  *
- *     Static return buffers are used because only one broadcast gets
+ *      Static return buffers are used because only one broadcast gets
  * processed at a time, and the essential information in each one is
  * either displayed and discarded or copied into a scroll-of-mail object.
  *
- *     The test driver code below can be used to check out potential new
+ *      The test driver code below can be used to check out potential new
  * entries without rebuilding NetHack itself.  CC/DEFINE="TEST_DRIVER"
  * Link it with hacklib.obj or nethack.olb/incl=hacklib (not nethack/lib).
  */
 
-static struct mail_info msg; /* parse_*()'s return buffer */
-static char nam_buf[63],     /* maximum onamelth, size of ONAME(object) */
-    cmd_buf[99],             /* arbitrary */
-    txt_buf[255 + 1];        /* same size as used for message buf[] */
+static struct mail_info msg;  /* parse_*()'s return buffer */
+static char nam_buf[63],      /* maximum onamelth, size of ONAME(object) */
+            cmd_buf[99],      /* arbitrary */
+            txt_buf[255 + 1]; /* same size as used for message buf[] */
 
 /* try to decipher and categorize broadcast message text
 */
@@ -136,9 +136,9 @@ char *buf;        /* input: filtered broadcast text */
 
         if (!strncmpi(buf, "new mail", 8)) {
             /*
-            New mail [on node FOO] from [SPAM::]BAR [\"personal_name\"]
-            [\(HH:MM:SS\)]
-            */
+             * New mail [on node FOO] from [SPAM::]BAR
+             *  [\"personal_name\"] [\(HH:MM:SS\)]
+             */
             nam = "VMSmail"; /* assume VMSmail */
             cmd = "MAIL";
             if (txt && (p = strrchr(txt, '(')) > txt && /* discard time */
@@ -147,9 +147,9 @@ char *buf;        /* input: filtered broadcast text */
         } else if (!strncmpi(buf, "new all-in-1", 12)) {
             int i;
             /*
-            New ALL-IN-1 MAIL message [on node FOO] from Personal Name
-            \(BAR@SPAM\) [\(DD-MMM-YYYY HH:MM:SS\)]
-            */
+             * New ALL-IN-1 MAIL message [on node FOO] from Personal Name
+             * \(BAR@SPAM\) [\(DD-MMM-YYYY HH:MM:SS\)]
+             */
             nam = "A1mail";
             cmd = "A1M";
             if (txt && (p = strrchr(txt, '(')) > txt
@@ -159,29 +159,29 @@ char *buf;        /* input: filtered broadcast text */
                 *--p = '\0';
         } else if (!strncmpi(buf, "software tools", 14)) {
             /*
-            Software Tools mail has arrived on FOO from \'BAR\' [in SPAM]
-            */
+             * Software Tools mail has arrived on FOO from \'BAR\' [in SPAM]
+             */
             nam = "STmail";
             cmd = "MSG";
             if (txt && (p = strstri(p, " in ")) != 0) /* specific folder */
                 cmd = strcat(strcpy(cmd_buf, "MSG +"), p + 4);
         } else if (q - 2 >= buf && !strncmpi(q - 2, "mm", 2)) {
             /*
-            {MultiNet\ |PMDF\/}MM mail has arrived on FOO from BAR\n
-            [Subject: subject_text] (PMDF only)
-            */
+             * {MultiNet\ |PMDF\/}MM mail has arrived on FOO from BAR\n
+             * [Subject: subject_text] (PMDF only)
+             */
             nam = "MMmail"; /* MultiNet's version of MM */
             cmd = "MM";     /*{ perhaps "MM READ"? }*/
         } else if (!strncmpi(buf, "wpmail:", 7)) {
             /*
-            WPmail: New mail from BAR.  subject_text
-            */
+             * WPmail: New mail from BAR.  subject_text
+             */
             nam = "WPmail"; /* WordPerfect [sic] Office */
             cmd = "OFFICE/MAIL";
         } else if (!strncmpi(buf, "**m400 mail", 7)) {
             /*
-            **M400 mail waiting**
-            */
+             * **M400 mail waiting**
+             */
             nam = "M400mail"; /* Messenger 400 [not seen] */
             cmd = "M400";
         } else {
@@ -193,14 +193,14 @@ char *buf;        /* input: filtered broadcast text */
 
         if (!txt)
             txt = strcat(strcpy(txt_buf, "Mail for you: "), buf);
-        /*
-         :     end of mail recognition; now check for call-type
-         interruptions...
-         */
+
+    /*
+     * end of mail recognition; now check for call-type interruptions...
+     */
     } else if ((q = strstri(buf, " phoning")) != 0) {
         /*
-        BAR is phoning you [on FOO] \(HH:MM:SS\)
-        */
+         * BAR is phoning you [on FOO] \(HH:MM:SS\)
+         */
         typ = MSG_CALL;
         nam = "Phone call";
         cmd = "PHONE ANSWER";
@@ -210,10 +210,10 @@ char *buf;        /* input: filtered broadcast text */
     } else if ((q = strstri(buf, " talk-daemon")) != 0
                || (q = strstri(buf, " talk_daemon")) != 0) {
         /*
-        Message from TALK-DAEMON@FOO at HH:MM:SS\n
-        Connection request by BAR@SPAM\n
-        \[Respond with: TALK[/OLD] BAR@SPAM\]
-        */
+         * Message from TALK-DAEMON@FOO at HH:MM:SS\n
+         * Connection request by BAR@SPAM\n
+         * \[Respond with: TALK[/OLD] BAR@SPAM\]
+         */
         typ = MSG_CALL;
         nam = "Talk request"; /* MultiNet's TALK and/or TALK/OLD */
         cmd = "TALK";
@@ -239,25 +239,27 @@ char *buf;        /* input: filtered broadcast text */
     } else if (is_jnet_send) { /* sscanf(,"(%[^)])%s -%c",,,)==3 */
     jnet_send:
         /*
-        \(SPAM\)BAR - arbitrary_message_text (from BAR@SPAM)
-        */
+         *      \(SPAM\)BAR - arbitrary_message_text (from BAR@SPAM)
+         */
         typ = MSG_CALL;
         nam = "Bitnet noise"; /* RSCS/NJE message received via JNET */
         Sprintf(cmd_buf, "XYZZY %s@%s", user, node);
         cmd = cmd_buf;
         /*{ perhaps just vanilla SEND instead of XYZZY? }*/
         Sprintf(txt_buf, "Message from %s@%s:%s", user, node,
-                &buf[1 + strlen(node) + 1 + strlen(user) + 2
-                     - 1]); /* "(node)user -" */
+                /* "(node)user -" */
+                &buf[1 + strlen(node) + 1 + strlen(user) + 2 - 1]);
         txt = txt_buf;
-        /*
-         :     end of call recognition; anything else is none-of-the-above...
-         */
+
+    /*
+     * end of call recognition; anything else is none-of-the-above...
+     */
     } else {
     other:
 #endif  /* SHELL */
-        /* arbitrary broadcast: batch job completed, system shutdown imminent,
-         * &c */
+        /* arbitrary broadcast: batch job completed, system shutdown
+         * imminent, &c
+         */
         typ = MSG_OTHER;
         nam = (char *) 0; /*"captured broadcast message"*/
         cmd = (char *) 0;
@@ -300,21 +302,22 @@ register char *buf;            /* in: original text; out: filtered text */
     /* filter the text; restrict consecutive spaces or dots to just two */
     for (p = buf_p = buf; *buf_p; buf_p++) {
         c = *buf_p & '\177';
-        if (c == ' ' || c == '\t' || c == '\n')
+        if (c == ' ' || c == '\t' || c == '\n') {
             if (p == buf || /* ignore leading whitespace */
                 (p >= buf + 2 && *(p - 1) == ' ' && *(p - 2) == ' '))
                 continue;
             else
                 c = ' ';
-        else if (c == '.' || c < ' ' || c == '\177')
+        } else if (c == '.' || c < ' ' || c == '\177') {
             if (p == buf || /* skip leading beeps & such */
                 (p >= buf + 2 && *(p - 1) == '.' && *(p - 2) == '.'))
                 continue;
             else
                 c = '.';
-        else if (c == '%' && /* trim %%% OPCOM verbosity %%% */
-                 p >= buf + 2 && *(p - 1) == '%' && *(p - 2) == '%')
+        else if (c == '%' && /* trim %%% OPCOM verbosity %%% */
+                   p >= buf + 2 && *(p - 1) == '%' && *(p - 2) == '%') {
             continue;
+        }
         *p++ = c;
     }
     *p = '\0'; /* terminate, then strip trailing junk */
@@ -326,7 +329,7 @@ register char *buf;            /* in: original text; out: filtered text */
 static char empty_string[] = "";
 
 /* fetch the text of a captured broadcast, then mangle and decipher it
-*/
+ */
 struct mail_info *parse_next_broadcast() /* called by ckmailstatus(mail.c) */
 {
     short length, msg_type;
@@ -349,7 +352,7 @@ struct mail_info *parse_next_broadcast() /* called by ckmailstatus(mail.c) */
 }
 
 /* spit out any pending broadcast messages whenever we leave
-*/
+ */
 static void flush_broadcasts() /* called from disable_broadcast_trapping() */
 {
     if (broadcasts > 0) {
@@ -369,27 +372,26 @@ static void flush_broadcasts() /* called from disable_broadcast_trapping() */
     }
 }
 
-/* AST routine called when the terminal's associated mailbox receives a
- * message
-*/
+/* AST routine called when terminal's associated mailbox receives a message
+ */
 /*ARGSUSED*/
 static void
 broadcast_ast(dummy) /* called asynchronously by terminal driver */
-int dummy;           /* not used */
+int dummy UNUSED;
 {
     broadcasts++;
 }
 
 /* initialize the broadcast manipulation code; SMG makes this easy
 */
-unsigned long init_broadcast_trapping() /* called by setftty() [once only] */
+unsigned long
+init_broadcast_trapping() /* called by setftty() [once only] */
 {
     unsigned long sts, preserve_screen_flag = 1;
 
-    /* we need a pasteboard to pass to the broadcast setup/teardown routines
-     */
-    sts =
-        smg$create_pasteboard(&pasteboard_id, 0, 0, 0, &preserve_screen_flag);
+    /* we need a pasteboard to pass to the broadcast setup/teardown routines */
+    sts = smg$create_pasteboard(&pasteboard_id, 0, 0, 0,
+                                &preserve_screen_flag);
     if (!vms_ok(sts)) {
         errno = EVMSERR, vaxc$errno = sts;
         raw_print("");
@@ -401,8 +403,9 @@ unsigned long init_broadcast_trapping() /* called by setftty() [once only] */
 }
 
 /* set up the terminal driver to deliver $brkthru data to a mailbox device
-*/
-unsigned long enable_broadcast_trapping() /* called by setftty() */
+ */
+unsigned long
+enable_broadcast_trapping() /* called by setftty() */
 {
     unsigned long sts = 1;
 
@@ -422,8 +425,9 @@ unsigned long enable_broadcast_trapping() /* called by setftty() */
 }
 
 /* return to 'normal'; $brkthru data goes straight to the terminal
-*/
-unsigned long disable_broadcast_trapping() /* called by settty() */
+ */
+unsigned long
+disable_broadcast_trapping() /* called by settty() */
 {
     unsigned long sts = 1;
 
@@ -436,7 +440,9 @@ unsigned long disable_broadcast_trapping() /* called by settty() */
     }
     return sts;
 }
+
 #else  /* MAIL */
+
 /* simple stubs for non-mail configuration */
 unsigned long
 init_broadcast_trapping()
@@ -458,6 +464,7 @@ parse_next_broadcast()
 {
     return 0;
 }
+
 #endif /* MAIL */
 
 /*----------------------------------------------------------------------*/
@@ -538,6 +545,7 @@ void
 wait_synch()
 {
     char dummy[BUFSIZ];
+
     printf("\nPress <return> to continue: ");
     fflush(stdout);
     (void) gets(dummy);
index ccc32d9bfe3f98da6ee04eddebc308bebf28ad20..0189f1ced61693a3817aab10a8260bd552b1b7e0 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 vmsmain.c       $NHDT-Date: 1432512790 2015/05/25 00:13:10 $  $NHDT-Branch: master $:$NHDT-Revision: 1.31 $ */
+/* NetHack 3.6 vmsmain.c       $NHDT-Date: 1449801742 2015/12/11 02:42:22 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.32 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 /* main.c - VMS NetHack */
@@ -18,7 +18,7 @@ static void NDECL(byebye);
 #define vms_handler_type unsigned int
 #endif
 extern void FDECL(VAXC$ESTABLISH,
-                  (vms_handler_type (*) (genericptr_t, genericptr_t)));
+                         (vms_handler_type (*) (genericptr_t, genericptr_t)));
 static vms_handler_type FDECL(vms_handler, (genericptr_t, genericptr_t));
 #include <ssdef.h> /* system service status codes */
 #endif
@@ -54,13 +54,13 @@ char *argv[];
     choose_windows(DEFAULT_WINDOW_SYS);
 
 #ifdef CHDIR /* otherwise no chdir() */
-             /*
-              * See if we must change directory to the playground.
-              * (Perhaps hack is installed with privs and playground is
-              *  inaccessible for the player.)
-              * The logical name HACKDIR is overridden by a
-              *  -d command line option (must be the first option given)
-              */
+    /*
+     * See if we must change directory to the playground.
+     * (Perhaps hack is installed with privs and playground is
+     *  inaccessible for the player.)
+     * The logical name HACKDIR is overridden by a
+     *  -d command line option (must be the first option given)
+     */
     dir = nh_getenv("NETHACKDIR");
     if (!dir)
         dir = nh_getenv("HACKDIR");
@@ -225,7 +225,7 @@ attempt_restore:
     moveloop(resuming);
     exit(EXIT_SUCCESS);
     /*NOTREACHED*/
-    return (0);
+    return 0;
 }
 
 static void
@@ -357,8 +357,8 @@ static void
 whoami()
 {
     /*
-     * Who am i? Algorithm: 1. Use name as specified in NETHACKOPTIONS
-     *                 2. Use lowercase of $USER  (if 1. fails)
+     * Who am i? Algorithm: 1. Use name as specified in NETHACKOPTIONS;
+     *                      2. Use lowercase of $USER (if 1. fails).
      * The resulting name is overridden by command line options.
      * If everything fails, or if the resulting name is some generic
      * account like "games" then eventually we'll ask him.
@@ -404,8 +404,8 @@ byebye()
 /* Condition handler to prevent byebye's hangup simulation
    from saving the game after a fatal error has occurred.  */
 /*ARGSUSED*/
-static vms_handler_type            /* should be `unsigned long', but the -*/
-    vms_handler(sigargs, mechargs) /*+ prototype in <signal.h> is screwed */
+static vms_handler_type         /* should be `unsigned long', but the -*/
+vms_handler(sigargs, mechargs)  /*+ prototype in <signal.h> is screwed */
 genericptr_t sigargs, mechargs; /* [0] is argc, [1..argc] are the real args */
 {
     unsigned long condition = ((unsigned long *) sigargs)[1];
@@ -416,7 +416,7 @@ genericptr_t sigargs, mechargs; /* [0] is argc, [1..argc] are the real args */
         program_state.done_hup = TRUE; /* pretend hangup has been attempted */
 #ifndef BETA
         if (wizard)
-#endif               /* !BETA */
+#endif
             abort(); /* enter the debugger */
     }
     return SS$_RESIGNAL;
@@ -442,10 +442,6 @@ port_help()
 }
 #endif /* PORT_HELP */
 
-/* for KR1ED config, WIZARD is 0 or 1 and WIZARD_NAME is a string;
-   for usual config, WIZARD is the string and vmsconf.h forces WIZARD_NAME
-   to match it, avoiding need to test which one to use in string ops */
-
 /* validate wizard mode if player has requested access to it */
 boolean
 authorize_wizard_mode()
index d115a84919388038ade48ae200243ddf0853ebfd..669c1cb39cf65292594d0712ab2a667a8c9e4ea5 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 vmstty.c        $NHDT-Date: 1432512790 2015/05/25 00:13:10 $  $NHDT-Branch: master $:$NHDT-Revision: 1.15 $ */
+/* NetHack 3.6 vmstty.c        $NHDT-Date: 1449801743 2015/12/11 02:42:23 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.17 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 /* tty.c - (VMS) version */
@@ -24,7 +24,7 @@
 #define TT$M_NOBRDCST 0x00020000    /* disable broadcast messages, but  */
 #define TT2$M_BRDCSTMBX 0x00000010  /* catch them in associated mailbox */
 #define TT2$M_APP_KEYPAD 0x00800000 /* application vs numeric keypad mode */
-#endif                              /* __GNUC__ */
+#endif /* __GNUC__ */
 #ifdef USE_QIO_INPUT
 #include <ssdef.h>
 #endif
@@ -44,7 +44,7 @@ static void NDECL(resettty);
 
 #define vms_ok(sts) ((sts) &1)
 #define META(c) ((c) | 0x80) /* 8th bit */
-#define CTRL(c) ((c) &0x1F)
+#define CTRL(c) ((c) & 0x1F)
 #define CMASK(c) (1 << CTRL(c))
 #define LIB$M_CLI_CTRLT CMASK('T') /* 0x00100000 */
 #define LIB$M_CLI_CTRLY CMASK('Y') /* 0x02000000 */
@@ -221,10 +221,10 @@ vms_getchar()
         }
     } else {
         /* abnormal input--either SMG didn't initialize properly or
-           vms_getchar() has been called recursively (via SIGINT handler).
+         * vms_getchar() has been called recursively (via SIGINT handler).
          */
         if (kb != 0)               /* must have been a recursive call */
-            smg$cancel_input(&kb); /*  from an interrupt handler          */
+            smg$cancel_input(&kb); /*  from an interrupt handler      */
         key = getchar();
     }
     --recurse;
@@ -247,7 +247,7 @@ vms_getchar()
  * for two reasons:
  *    1) retain support for arrow keys, and
  *    2) treat other VTxxx function keys as <esc> for aborting
- *     various NetHack prompts.
+ *      various NetHack prompts.
  * The second reason is compelling; otherwise remaining chars of
  * an escape sequence get treated as inappropriate user commands.
  *
@@ -257,26 +257,25 @@ vms_getchar()
 /*=
      -- Summary of VTxxx-style keyboards and transmitted escape sequences. --
 Keypad codes are prefixed by 7 bit (\033 O) or 8 bit SS3:
-        keypad:  PF1 PF2 PF3 PF4       codes:  P   Q   R   S
-                  7   8   9   -                        w   x   y   m
-                  4   5   6   .                        t   u   v   n
-                  1   2   3  :en-:             q   r   s  : :
-                 ...0...  ,  :ter:            ...p...  l  :M:
+        keypad:  PF1 PF2 PF3 PF4       codes:   P   Q   R   S
+                  7   8   9   -                 w   x   y   m
+                  4   5   6   .                 t   u   v   n
+                  1   2   3  :en-:              q   r   s  : :
+                 ...0...  ,  :ter:             ...p...  l  :M:
 Arrows are prefixed by either SS3 or CSI (either 7 or 8 bit), depending on
 whether the terminal is in application or numeric mode (ditto for PF keys):
-        arrows: <up> <dwn> <lft> <rgt>         A   B   D   C
-Additional function keys (vk201/vk401) generate CSI nn ~ (nn is 1 or 2
-digits):
+        arrows: <up> <dwn> <lft> <rgt>          A   B   D   C
+Additional function keys (vk201/vk401) generate CSI nn ~ (nn is 1 or 2 digits):
     vk201 keys:  F6 F7 F8 F9 F10   F11 F12 F13 F14  Help Do   F17 F18 F19 F20
    'nn' digits:  17 18 19 20 21    23  24  25  26    28  29   31  32  33  34
-     alternate:  ^C               ^[  ^H  ^J           (when in VT100 mode)
-   edit keypad: <fnd> <ins> <rmv>     digits:  1   2   3
-                <sel> <prv> <nxt>              4   5   6
+     alternate:  ^C                ^[  ^H  ^J           (when in VT100 mode)
+   edit keypad: <fnd> <ins> <rmv>     digits:   1   2   3
+                <sel> <prv> <nxt>               4   5   6
 VT52 mode:  arrows and PF keys send ESCx where x is in A-D or P-S.
 =*/
 
 static const char *arrow_or_PF = "ABCDPQRS", /* suffix char */
-    *smg_keypad_codes = "PQRSpqrstuvwxyMmlnABDC";
+                  *smg_keypad_codes = "PQRSpqrstuvwxyMmlnABDC";
 /* PF1..PF4,KP0..KP9,enter,dash,comma,dot,up-arrow,down,left,right */
 /* Ultimate return value is (index into smg_keypad_codes[] + 256). */
 
@@ -310,6 +309,7 @@ register int c;
     if (vms_ok(sts) || sts == SS$_TIMEOUT) {
         register int cnt = iosb.trm_offset + iosb.trm_siz + inc;
         register char *p = seq_buf;
+
         if (c == ESC) /* check for 7-bit vt100/ANSI, or vt52 */
             if (*p == '[' || *p == 'O')
                 c = META(CTRL(*p++)), cnt--;
@@ -317,6 +317,7 @@ register int c;
                 c = SS3; /*CSI*/
         if (cnt > 0 && (c == SS3 || (c == CSI && strchr(arrow_or_PF, *p)))) {
             register char *q = strchr(smg_keypad_codes, *p);
+
             if (q)
                 result = 256 + (q - smg_keypad_codes);
             p++, --cnt; /* one more char consumed */
@@ -334,6 +335,7 @@ register int c;
                 }; /* note: there are several missing nn in CSI nn ~ values */
             int nn;
             char *q;
+
             *(p + cnt) = '\0'; /* terminate string */
             q = strchr(p, '~');
             if (q && sscanf(p, "%d~", &nn) == 1) {
@@ -373,7 +375,9 @@ setctty()
     }
 }
 
-static void resettty() /* atexit() routine */
+/* atexit() routine */
+static void
+resettty()
 {
     if (settty_needed) {
         bombing = TRUE; /* don't clear screen; preserve traceback info */
@@ -451,7 +455,8 @@ const char *s;
         disable_broadcast_trapping();
 #if 0  /* let SMG's exit handler do the cleanup (as per doc) */
 /* #ifndef USE_QIO_INPUT */
-       if (kb)  smg$delete_virtual_keyboard(&kb),  kb = 0;
+        if (kb)
+            smg$delete_virtual_keyboard(&kb),  kb = 0;
 #endif /* 0 (!USE_QIO_INPUT) */
         if (ctrl_mask)
             (void) lib$enable_ctrl(&ctrl_mask, 0);
@@ -502,12 +507,16 @@ setftty()
     settty_needed = TRUE;
 }
 
-void intron() /* enable kbd interupts if enabled when game started */
+/* enable kbd interupts if enabled when game started */
+void
+intron()
 {
     intr_char = CTRL('C');
 }
 
-void introff() /* disable kbd interrupts if required*/
+/* disable kbd interrupts if required*/
+void
+introff()
 {
     intr_char = 0;
 }
index 0a9edb4d478df02f04979effa722b154a00c7855..6f57c99dae1338340a4422e467aefea25bb01722 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 vmsunix.c       $NHDT-Date: 1432512790 2015/05/25 00:13:10 $  $NHDT-Branch: master $:$NHDT-Revision: 1.14 $ */
+/* NetHack 3.6 vmsunix.c       $NHDT-Date: 1449801743 2015/12/11 02:42:23 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.15 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -28,7 +28,7 @@ extern void VDECL(lib$signal, (unsigned, ...));
 extern unsigned long sys$setprv();
 extern unsigned long lib$getdvi(), lib$getjpi(), lib$spawn(), lib$attach();
 extern unsigned long smg$init_term_table_by_type(), smg$del_term_table();
-#define vms_ok(sts) ((sts) &1) /* odd => success */
+#define vms_ok(sts) ((sts) & 1) /* odd => success */
 
 /* this could be static; it's only used within this file;
    it won't be used at all if C_LIB$INTIALIZE gets commented out below,
@@ -51,10 +51,10 @@ int fd;
     struct stat buf;
 
     if (fstat(fd, &buf))
-        return (0); /* cannot get status */
+        return 0; /* cannot get status */
 #ifndef INSURANCE
     if (buf.st_size != sizeof(int))
-        return (0); /* not an xlock file */
+        return 0; /* not an xlock file */
 #endif
     (void) time(&date);
     if (date - buf.st_mtime < 3L * 24L * 60L * 60L) { /* recent */
@@ -81,8 +81,8 @@ int fd;
     }
     set_levelfile_name(lock, 0);
     if (delete (lock))
-        return (0); /* cannot remove it */
-    return (1);     /* success! */
+        return 0; /* cannot remove it */
+    return 1;     /* success! */
 }
 
 void
@@ -167,7 +167,7 @@ register char *s;
 int
 vms_getuid()
 {
-    return (getgid() << 16) | getuid();
+    return ((getgid() << 16) | getuid());
 }
 
 #ifndef FAB$C_STMLF
@@ -189,7 +189,7 @@ int fd;
 #else
     rfm = buf.st_fab_rfm;
 #endif
-    return rfm == FAB$C_STMLF;
+    return (boolean) (rfm == FAB$C_STMLF);
 }
 
 /*------*/
@@ -303,7 +303,7 @@ verify_term()
             /* strip trailing blanks */
             while (p > smgdevtyp && *--p == ' ')
                 *p = '\0';
-            /* (void)smg$del_term_table(); */
+            /* (void) smg$del_term_table(); */
             term = smgdevtyp;
         }
     }
@@ -398,9 +398,9 @@ boolean screen_manip;
 
 #ifdef SHELL
 unsigned long dosh_pid = 0, /* this should cover any interactive escape */
-    mail_pid = 0;           /* this only covers the last mail or phone; */
-/*(mail & phone commands aren't expected to leave any process hanging
* around)*/
+              mail_pid = 0; /* this only covers the last mail or phone;
+                               (mail & phone commands aren't expected to
                              leave any process hanging around) */
 
 int
 dosh()
@@ -408,20 +408,18 @@ dosh()
     return vms_doshell("", TRUE); /* call for interactive child process */
 }
 
-/* vms_doshell -- called by dosh() and readmail() */
-
-/* If execstring is not a null string, then it will be executed in a spawned
- */
-/* subprocess, which will then return.  It is for handling mail or phone */
-/* interactive commands, which are only available if both MAIL and SHELL are
+/* vms_doshell -- called by dosh() and readmail()
+ *
+ * If execstring is not a null string, then it will be executed in a spawned
+ * subprocess, which will then return.  It is for handling mail or phone
+ * interactive commands, which are only available if both MAIL and SHELL are
+ * #defined, but we don't bother making the support code conditionalized on
+ * MAIL here, just on SHELL being enabled.
+ *
+ * Normally, all output from this interaction will be 'piped' to the user's
+ * screen (SYS$OUTPUT).  However, if 'screenoutput' is set to FALSE, output
+ * will be piped into oblivion.  Used for silent phone call rejection.
  */
-/* #defined, but we don't bother making the support code conditionalized on */
-/* MAIL here, just on SHELL being enabled. */
-
-/* Normally, all output from this interaction will be 'piped' to the user's */
-/* screen (SYS$OUTPUT).  However, if 'screenoutput' is set to FALSE, output */
-/* will be piped into oblivion.  Used for silent phone call rejection. */
-
 int
 vms_doshell(execstring, screenoutput)
 const char *execstring;
@@ -449,9 +447,8 @@ boolean screenoutput;
     }
 
     hack_escape(screenoutput,
-                command ? (const char *) 0 : "  \"Escaping\" into a "
-                                             "subprocess; LOGOUT to "
-                                             "reconnect and resume play. ");
+                command ? (const char *) 0
+ : "  \"Escaping\" into a subprocess; LOGOUT to reconnect and resume play. ");
 
     if (command || !dosh_pid || !vms_ok(status = lib$attach(&dosh_pid))) {
 #ifdef CHDIR
@@ -483,7 +480,7 @@ boolean screenoutput;
 
 #ifdef SUSPEND
 /* dosuspend() -- if we're a subprocess, attach to our parent;
- *             if not, there's nothing we can do.
+ *                if not, there's nothing we can do.
  */
 int
 dosuspend()
@@ -494,15 +491,15 @@ dosuspend()
     if (owner_pid == -1) /* need to check for parent */
         owner_pid = getppid();
     if (owner_pid == 0) {
-        pline("  No parent process.  Use '!' to Spawn, 'S' to Save,  or 'Q' "
             "to Quit. ");
+        pline(
"  No parent process.  Use '!' to Spawn, 'S' to Save, or '#quit' to Quit. ");
         mark_synch();
         return 0;
     }
 
     /* restore normal tty environment & clear screen */
-    hack_escape(1, " Attaching to parent process; use the ATTACH command to "
-                   "resume play. ");
+    hack_escape(1,
+     " Attaching to parent process; use the ATTACH command to resume play. ");
 
     status = lib$attach(&owner_pid); /* connect to parent */
 
@@ -535,7 +532,7 @@ char ***array;
     while (indx >= *asize - 1) {
         oldsize = *asize;
         *asize += 5;
-        newarray = (char **) alloc(*asize * sizeof(char *));
+        newarray = (char **) alloc(*asize * sizeof (char *));
         /* poor man's realloc() */
         for (i = 0; i < *asize; ++i)
             newarray[i] = (i < oldsize) ? (*array)[i] : 0;
@@ -543,7 +540,7 @@ char ***array;
             free((genericptr_t) *array);
         *array = newarray;
     }
-    (*array)[indx] = strcpy((char *) alloc(strlen(name) + 1), name);
+    (*array)[indx] = dupstr(name);
 }
 
 struct dsc {
@@ -551,8 +548,7 @@ struct dsc {
     char *adr;
 };                             /* descriptor */
 typedef unsigned long vmscond; /* vms condition value */
-vmscond FDECL(lib$find_file,
-              (const struct dsc *, struct dsc *, genericptr *));
+vmscond FDECL(lib$find_file, (const struct dsc *, struct dsc *, genericptr *));
 vmscond FDECL(lib$find_file_end, (void **));
 
 /* collect a list of character names from all save files for this player */
@@ -605,15 +601,11 @@ int how; /* 1: exit after traceback; 2: stay in debugger */
     union dbgcmd {
         struct ascic {
             unsigned char len; /* 8-bit length prefix */
-            char
-                str[79]; /* could be up to 255, but we don't need that much */
+            char str[79]; /* could be up to 255, but we don't need so much */
         } cmd_fields;
         char cmd[1 + 79];
     };
-#define DBGCMD(arg)                                  \
-    {                                                \
-        (unsigned char)(sizeof arg - sizeof ""), arg \
-    }
+#define DBGCMD(arg) { (unsigned char) (sizeof arg - sizeof ""), arg }
     static union dbgcmd dbg[3] = {
         /* prologue for less verbose feedback (when combined with
            $ define/User_mode dbg$output _NL: ) */
@@ -709,40 +701,40 @@ struct eiha { /* extended image header activation block, $EIHADEF */
 };
 
 /*
- *     We're going to use lib$initialize, not because we need or
- *     want to be called before main(), but because one of the
- *     arguments passed to a lib$initialize callback is a pointer
- *     to the image header (somewhat complex data structure which
- *     includes the memory location(s) of where to start executing)
- *     of the program being initialized.  It comes in two flavors,
- *     one used by VAX and the other by Alpha and IA64.
+ *      We're going to use lib$initialize, not because we need or
+ *      want to be called before main(), but because one of the
+ *      arguments passed to a lib$initialize callback is a pointer
+ *      to the image header (somewhat complex data structure which
+ *      includes the memory location(s) of where to start executing)
+ *      of the program being initialized.  It comes in two flavors,
+ *      one used by VAX and the other by Alpha and IA64.
  *
- *     An image can have up to three transfer addresses; one of them
- *     decides whether to run under debugger control (RUN/Debug, or
- *     LINK/Debug + plain RUN), another handles lib$initialize calls
- *     if that's used, and the last is to start the program itself
- *     (a jacket built around main() for code compiled with DEC C).
- *     They aren't always all present; some might be zero/null.
- *     A shareable image (pre-linked library) usually won't have any,
- *     but can have a separate initializer (not of interest here).
+ *      An image can have up to three transfer addresses; one of them
+ *      decides whether to run under debugger control (RUN/Debug, or
+ *      LINK/Debug + plain RUN), another handles lib$initialize calls
+ *      if that's used, and the last is to start the program itself
+ *      (a jacket built around main() for code compiled with DEC C).
+ *      They aren't always all present; some might be zero/null.
+ *      A shareable image (pre-linked library) usually won't have any,
+ *      but can have a separate initializer (not of interest here).
  *
- *     The transfer targets don't have fixed slots but do occur in a
- *     particular order:
- *                   link      link     lib$initialize lib$initialize
- *         sharable  /noTrace  /Trace    + /noTrace     + /Traceback
- *     1:  (none)    main      debugger  init-handler   debugger
- *     2:                      main      main           init-handler
- *     3:                                               main
+ *      The transfer targets don't have fixed slots but do occur in a
+ *      particular order:
+ *                    link      link     lib$initialize lib$initialize
+ *          sharable  /noTrace  /Trace    + /noTrace     + /Traceback
+ *      1:  (none)    main      debugger  init-handler   debugger
+ *      2:                      main      main           init-handler
+ *      3:                                               main
  *
- *     We check whether the first transfer address is SYS$IMGSTA().
- *     If it is, the debugger should be available to catch SS$_DEBUG
- *     exception even when we don't start up under debugger control.
- *     One extra complication:  if we *do* start up under debugger
- *     control, the first address in the in-memory copy of the image
- *     header will be changed from sys$imgsta() to a value in system
- *     space.  [I don't know how to reference that one symbolically,
- *     so I'm going to treat any address in system space as meaning
- *     that the debugger is available.  pr]
+ *      We check whether the first transfer address is SYS$IMGSTA().
+ *      If it is, the debugger should be available to catch SS$_DEBUG
+ *      exception even when we don't start up under debugger control.
+ *      One extra complication:  if we *do* start up under debugger
+ *      control, the first address in the in-memory copy of the image
+ *      header will be changed from sys$imgsta() to a value in system
+ *      space.  [I don't know how to reference that one symbolically,
+ *      so I'm going to treat any address in system space as meaning
+ *      that the debugger is available.  pr]
  */
 
 /* called via lib$initialize during image activation:  before main() and
@@ -760,14 +752,15 @@ const unsigned char *imghdr;
     unsigned long trnadr1;
 
     (void) lib$establish(lib$sig_to_ret); /* set up condition handler */
-                                          /*
-                                           * Check the first of three transfer addresses to see whether
-                                           * it is SYS$IMGSTA().  Note that they come from a file,
-                                           * where they reside as longword or quadword integers rather
-                                           * than function pointers.  (Basically just a C type issue;
-                                           * casting back and forth between integer and pointer doesn't
-                                           * change any bits for the architectures VMS runs on.)
-                                           */
+
+    /*
+     * Check the first of three transfer addresses to see whether
+     * it is SYS$IMGSTA().  Note that they come from a file,
+     * where they reside as longword or quadword integers rather
+     * than function pointers.  (Basically just a C type issue;
+     * casting back and forth between integer and pointer doesn't
+     * change any bits for the architectures VMS runs on.)
+     */
     debuggable = 0;
     /* start with a guess rather than bothering to figure out architecture */
     vax_hdr = (struct ihd *) imghdr;
@@ -848,10 +841,11 @@ const unsigned long lib$initialize[] = { (unsigned long) (void *) vmsexeini };
 #ifdef __DECC
 #pragma extern_model restore /* pop previous mode */
 #endif
-/*     We also need to link against a linker options file containing:
+/*      We also need to link against a linker options file containing:
 sys$library:starlet.olb/Include=(lib$initialize)
 psect_attr=lib$initialize, Con,Usr,noPic,Rel,Gbl,noShr,noExe,Rd,noWrt,Long
  */
 #endif /* C_LIB$INITIALIZE */
 /* End of debugger hackery. */
+
 /*vmsunix.c*/