comerr-behave-like-the-rest-of-the-world-20010918
authorDerrick Brashear <shadow@dementia.org>
Tue, 18 Sep 2001 05:26:47 +0000 (05:26 +0000)
committerDerrick Brashear <shadow@dementia.org>
Tue, 18 Sep 2001 05:26:47 +0000 (05:26 +0000)
no other comerr changes the case of the error table name you specify in the
.et file. now neither does ours.

69 files changed:
src/WINNT/afs_setup_utils/afsrm.c
src/WINNT/afsd/cm_utils.h
src/WINNT/afsreg/test/regman.c
src/afs/afs_analyze.c
src/afs/afs_trace.et
src/afs/afs_volume.c
src/auth/acfg_errors.et
src/auth/ktc_errors.et
src/bozo/bos.c
src/bozo/boserr.et
src/bubasics/butc_errs.et
src/bubasics/butm_errs.et
src/bubasics/butx_errs.et
src/bucoord/bucoord_errs.et
src/bucoord/main.c
src/budb/budb_errs.et
src/budb/server.c
src/butc/tcmain.c
src/butm/butm_test.c
src/butm/test_ftm.c
src/cmd/cmd_errors.et
src/cmd/test/itest.c
src/comerr/compile_et.c
src/comerr/error_table.y
src/comerr/error_table_nt.c
src/comerr/test/test.c
src/comerr/test/test1.et
src/comerr/test/test2.et
src/dauth/dlog.c
src/finale/translate_et.c
src/kauth/client.c
src/kauth/decode_ticket.c
src/kauth/kaerrors.et
src/kauth/kas.c
src/kauth/kautils.p.h
src/kauth/test/test_getticket.c
src/kauth/test/test_interim_ktc.c
src/kauth/test/test_rxkad_free.c
src/libadmin/adminutil/afs_AdminBosErrors.et
src/libadmin/adminutil/afs_AdminCfgErrors.et
src/libadmin/adminutil/afs_AdminClientErrors.et
src/libadmin/adminutil/afs_AdminCommonErrors.et
src/libadmin/adminutil/afs_AdminKasErrors.et
src/libadmin/adminutil/afs_AdminMiscErrors.et
src/libadmin/adminutil/afs_AdminPtsErrors.et
src/libadmin/adminutil/afs_AdminUtilErrors.et
src/libadmin/adminutil/afs_AdminVosErrors.et
src/libadmin/adminutil/afs_utilAdmin.c
src/package/package.c
src/ptserver/Makefile.in
src/ptserver/NTMakefile
src/ptserver/db_verify.c
src/ptserver/pt_util.c
src/ptserver/ptclient.c
src/ptserver/pterror.et
src/ptserver/ptuser.c
src/ptserver/testpt.c
src/rx/test/generator.c
src/rxkad/rxkad_errs.et
src/rxkad/test/stress.c
src/rxkad/test/stress_errs.et
src/ubik/ubik.c
src/ubik/ubikclient.c
src/ubik/uerrors.et
src/uss/uss.c
src/vlserver/vl_errors.et
src/volser/common.c
src/volser/volerr.et
src/volser/vsprocs.c

index 5970cb4..1761a76 100644 (file)
@@ -50,7 +50,7 @@ int main(int argc, char *argv[])
     int code;
 
     /* initialize command syntax */
-    initialize_cmd_error_table();
+    initialize_CMD_error_table();
     SetupCmd();
 
     /* execute command */
index 4184bf8..2f51478 100644 (file)
@@ -17,7 +17,7 @@ typedef struct cm_space {
 } cm_space_t;
 
 /* error code hack */
-#define ERROR_TABLE_BASE_vl    (363520L)
+#define ERROR_TABLE_BASE_VL    (363520L)
 #define VL_NOENT               (363524L)
 
 extern cm_space_t *cm_GetSpace(void);
index c8d95cb..a02b96e 100644 (file)
@@ -344,7 +344,7 @@ int main(int argc, char *argv[])
     whoami = argv[0];
 
     /* initialize command syntax */
-    initialize_cmd_error_table();
+    initialize_CMD_error_table();
 
     SetupVptCmd();
     SetupDirCmd();
index 276ae4a..95855af 100644 (file)
@@ -48,13 +48,13 @@ RCSID("$Header$");
 
 
 /* shouldn't do it this way, but for now will do */
-#ifndef ERROR_TABLE_BASE_u
-#define ERROR_TABLE_BASE_u     (5376L)
+#ifndef ERROR_TABLE_BASE_U
+#define ERROR_TABLE_BASE_U     (5376L)
 #endif /* ubik error base define */
 
 /* same hack for vlserver error base as for ubik error base */
-#ifndef ERROR_TABLE_BASE_vl
-#define ERROR_TABLE_BASE_vl    (363520L)
+#ifndef ERROR_TABLE_BASE_VL
+#define ERROR_TABLE_BASE_VL    (363520L)
 #define VL_NOENT               (363524L)
 #endif /* vlserver error base define */
 
@@ -481,7 +481,7 @@ int afs_Analyze(aconn, acode, afid, areq, op, locktype, cellp)
        shouldRetry = 1;
        acode = 0;
     }
-    else if (acode == VICETOKENDEAD || (acode & ~0xff) == ERROR_TABLE_BASE_rxk) {
+    else if (acode == VICETOKENDEAD || (acode & ~0xff) == ERROR_TABLE_BASE_RXK) {
        /* any rxkad error is treated as token expiration */
        struct unixuser *tu;
 
@@ -525,7 +525,7 @@ int afs_Analyze(aconn, acode, afid, areq, op, locktype, cellp)
        shouldRetry = 0;
     }
     /* check for ubik errors; treat them like crashed servers */
-    else if (acode >= ERROR_TABLE_BASE_u && acode < ERROR_TABLE_BASE_u+255) {
+    else if (acode >= ERROR_TABLE_BASE_U && acode < ERROR_TABLE_BASE_U+255) {
        afs_ServerDown(sa);
        if (aerrP)
            (aerrP->err_Server)++;
@@ -561,8 +561,8 @@ int afs_Analyze(aconn, acode, afid, areq, op, locktype, cellp)
           }
        }
      }
-    else if (acode >= ERROR_TABLE_BASE_vl
-            && acode <= ERROR_TABLE_BASE_vl + 255) /* vlserver errors */ {
+    else if (acode >= ERROR_TABLE_BASE_VL
+            && acode <= ERROR_TABLE_BASE_VL + 255) /* vlserver errors */ {
        shouldRetry = 0;
        areq->volumeError = VOLMISSING;
     }
index ad4fc97..42dd715 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table 2 zcm
+error_table 2 ZCM
        ec      CM_TRACE_NULL, "dummy"
        ec      CM_TRACE_PAGEIN, "getapage vp 0x%lx off 0x%x len 0x%x rw=0x%x"
        ec      CM_TRACE_PAGEINDONE, "getapage done code 0x%x pg 0x%lx (0x%x)"
index 6ca9dc6..46bc9ba 100644 (file)
@@ -56,12 +56,11 @@ extern struct srvAddr *afs_srvAddrs[NSERVERS];  /* Hashed by server's ip */
 extern int afs_totalSrvAddrs;
 
 /* In case we don't have the vl error table yet. */
-#ifndef ERROR_TABLE_BASE_vl
-#define ERROR_TABLE_BASE_vl    (363520L)
-#define VL_NOENT               (363524L)
+#ifndef ERROR_TABLE_BASE_VL
+#define ERROR_TABLE_BASE_VL     (363520L)
+#define VL_NOENT                (363524L)
 #endif /* vlserver error base define */
 
-
 /* Exported variables */
 ino_t volumeInode;                     /*Inode for VolumeItems file*/
 afs_rwlock_t afs_xvolume;               /* allocation lock for volumes */
index 22ab289..913f21e 100644 (file)
@@ -9,7 +9,7 @@
 
 # AFS Configuration Package error table
 
-error_table acfg
+error_table ACFG
   ec AFSCONF_FAILURE, "mysterious failure"
   ec AFSCONF_NOTFOUND, "could not find entry"
   ec AFSCONF_UNKNOWN, "do not know that information"
index 2de18f8..510a852 100644 (file)
@@ -9,7 +9,7 @@
 
 # Kerberos Ticket Cache error table
 
-error_table ktc
+error_table KTC
   ec KTC_ERROR, "an unexpected error was encountered"
   ec KTC_TOOBIG, "a buffer was too small for the response"
   ec KTC_INVAL, "an invalid argument was passed in"
index e9bc640..12b3069 100644 (file)
@@ -1792,8 +1792,8 @@ main(argc, argv)
     afsconf_SawCell = 0;       /* Reset it */
     /* don't check error code, since fails sometimes when we're setting up a
      * system */
-    initialize_cmd_error_table();
-    initialize_bz_error_table();
+    initialize_CMD_error_table();
+    initialize_BZ_error_table();
 
     ts = cmd_CreateSyntax("start", StartServer, 0, "start running a server");
     cmd_AddParm(ts, "-server", CMD_SINGLE, 0, "machine name");
index 9bc9701..458bbca 100644 (file)
@@ -10,7 +10,7 @@
 # NOTE: BZACCESS value is hardcoded in audit/audit.h, so if you make
 # changes here, make sure that audit/audit.h is kept up to date.
 
-error_table bz
+error_table BZ
        ec BZNOTACTIVE, "process not active"
        ec BZNOENT, "no such entity"
        ec BZBUSY, "can't do operation now"
index 9c1d7cf..65bc6d6 100644 (file)
@@ -7,7 +7,7 @@
 
 # Backup Tape Coordinator Module error table
 
-error_table butc
+error_table BUTC
 # dump/restore management
        ec TC_DUMPERROR, "error in dump/restore process "
        ec TC_FORCEDABORT, "ungraceful abort "
index 641edeb..3e72fdb 100644 (file)
@@ -9,7 +9,7 @@
 
 # Backup Tape Module error table
 
-error_table butm
+error_table BUTM
        ec BUTM_OLDINTERFACE, "interface incompatible"
        ec BUTM_NOMOUNT, "there is not an opened tape"
        ec BUTM_PARALLELMOUNTS, "multiple simultaneous opens not permitted"
index ea839a7..428e72d 100644 (file)
@@ -8,7 +8,7 @@
 # Backup BUTX error table
 #
 
-error_table butx
+error_table BUTX
         ec BUTX_RCSID, "Version 1"
        ec BUTX_NOLIBRARY,           "XBSA couldn't mount shared library"
        ec BUTX_ILLEGALINIT,         "XBSA handle already initialized"
index 0988010..5e3bbbe 100644 (file)
@@ -7,7 +7,7 @@
 
 # Backup Coordinator Module error table
 
-error_table bucd
+error_table BUCD
        ec BC_BADARG, "Unacceptable user supplied argument"
        ec BC_VERSIONMISMATCH, "Object has been updated"
        ec BC_NOTUNIQUE, "Search matched more than one item"
index 8592585..b474904 100644 (file)
@@ -108,18 +108,18 @@ osi_audit() {return 0;}
  */
 void InitErrTabs()
 {
-    initialize_acfg_error_table();
-    initialize_ka_error_table();
-    initialize_rxk_error_table();
-    initialize_cmd_error_table();
-    initialize_vl_error_table();
-    initialize_butm_error_table();
-    initialize_vols_error_table();
-    initialize_butc_error_table();
-    initialize_butx_error_table();
-    initialize_budb_error_table();
-    initialize_bucd_error_table();
-    initialize_ktc_error_table();
+    initialize_ACFG_error_table();
+    initialize_KA_error_table();
+    initialize_RXK_error_table();
+    initialize_CMD_error_table();
+    initialize_VL_error_table();
+    initialize_BUTM_error_table();
+    initialize_VOLS_error_table();
+    initialize_BUTC_error_table();
+    initialize_BUTX_error_table();
+    initialize_BUDB_error_table();
+    initialize_BUCD_error_table();
+    initialize_KTC_error_table();
 }
 
 /* 
@@ -232,7 +232,7 @@ static int backupInit()
     extern statusWatcher();
 
     /* Initialization */
-    initialize_cmd_error_table();
+    initialize_CMD_error_table();
 
     /* don't run more than once */
     if (initd) 
index 5e58764..6d64c34 100644 (file)
@@ -12,7 +12,7 @@
 # NOTE: BUDB_NOTPERMITTED value is hardcoded in audit/audit.h, so if you
 # make changes here, make sure that audit/audit.h is kept up to date.
 
-error_table budb
+error_table BUDB
 #useful errors
        ec BUDB_DUMPIDEXISTS, "dump with specified id already exists"
        ec BUDB_NODUMPID, "no dump matching the id was found"
index 1ef804d..5744234 100644 (file)
@@ -339,7 +339,7 @@ main(argc, argv)
 #endif
     osi_audit(BUDB_StartEvent, 0, AUD_END);
 
-    initialize_budb_error_table();
+    initialize_BUDB_error_table();
     initializeArgHandler();
 
     /* Initialize dirpaths */
index d50d0d9..db5d084 100644 (file)
@@ -838,20 +838,20 @@ char *arock; {
     debugLevel = 0;
 
     /*initialize the error tables */
-    initialize_ka_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
-    initialize_cmd_error_table();
-    initialize_vl_error_table();
-    initialize_butm_error_table();
-    initialize_butc_error_table();
+    initialize_KA_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
+    initialize_CMD_error_table();
+    initialize_VL_error_table();
+    initialize_BUTM_error_table();
+    initialize_BUTC_error_table();
 #ifdef xbsa
-    initialize_butx_error_table();
+    initialize_BUTX_error_table();
 #endif /*xbs*/
-    initialize_vols_error_table();
-    initialize_budb_error_table();
-    initialize_bucd_error_table();
+    initialize_VOLS_error_table();
+    initialize_BUDB_error_table();
+    initialize_BUCD_error_table();
 
     if (as->parms[0].items)
     {
index 2b971c8..04b5544 100644 (file)
@@ -71,7 +71,7 @@ main (argc, argv)
     /* -------------
      * General Setup 
      * ------------- */
-    initialize_butm_error_table();
+    initialize_BUTM_error_table();
 
     tapeInfo.structVersion = BUTM_MAJORVERSION;
 
index 59b9ffc..333f0e1 100644 (file)
@@ -114,7 +114,7 @@ main (argc, argv)
     TestInfo ti;
 
     whoami = argv[0];
-    initialize_butm_error_table();
+    initialize_BUTM_error_table();
     if (argc < 2) 
       goto usage;
 
index 5b20ff6..9183497 100644 (file)
@@ -7,7 +7,7 @@
 
 # */
 
-error_table cmd
+error_table CMD
   ec CMD_EXCESSPARMS, "More than the maximum number of parameters defined"
   ec CMD_INTERNALERROR, "Internal parsing error"
   ec CMD_NOTLIST, "Too many values specified after a CMD_SINGLE switch"
index a75ecb0..3e3123d 100644 (file)
@@ -54,7 +54,7 @@ char **argv; {
     long code;
     char *tv[100];
     
-    initialize_cmd_error_table();
+    initialize_CMD_error_table();
 
     ts = cmd_CreateSyntax("apple", cproc1, (char *) 0, "describe apple");
 
index 082d161..b2915f4 100644 (file)
@@ -133,6 +133,7 @@ int main (argc, argv) int argc; char **argv; {
     char const * const *cpp;
     int got_language = 0;
     char *got_include = 0;
+    char lcname[6];
 
 #ifdef AFS_AIX32_ENV
     /*
@@ -364,6 +365,14 @@ int main (argc, argv) int argc; char **argv; {
             table_name, table_name);
     fprintf (hfile, "#define %s_err_base ERROR_TABLE_BASE_%s\n", table_name,
             table_name);
+    fprintf (hfile, "\n/* for compatibility with other users... */\n");
+    lcstring (lcname, table_name, sizeof(lcname));
+    fprintf (hfile, "#define ERROR_TABLE_BASE_%s (%ldL)\n",
+            lcname, (long int) table_number);
+    fprintf (hfile, "#define init_%s_err_tbl initialize_%s_error_table\n",
+            lcname, lcname);
+    fprintf (hfile, "#define %s_err_base ERROR_TABLE_BASE_%s\n", lcname,
+            lcname);
     fclose(hfile);             /* bye bye include file */
     if (use_msf)
        fclose(msfile);
index 67b79f8..7fba9de 100644 (file)
@@ -276,9 +276,7 @@ int char_to_num(char c)
 }
 
 void set_table_num(char *string)
-{       char ucname[6];                        /* I think 5 is enough but et_name.c used 6... */
-       extern char *ucstring();
-
+{
         if (msfile) {
            set_table_1num(string);
            return;
@@ -289,7 +287,6 @@ void set_table_num(char *string)
                string[4] = '\0';
                fprintf(stderr, "to %s\n", string);
        }
-       string = ucstring (ucname, string, sizeof(ucname));
        if (char_to_num (string[0]) > char_to_num ('z')) {
                fprintf (stderr, "%s%s%s%s",
                         "First character of error table name must be ",
index c657b75..362d3b0 100755 (executable)
-\r
-/*  A Bison parser, made from error_table.y with Bison version GNU Bison version 1.24\r
-  */\r
-\r
-#define YYBISON 1  /* Identify Bison output.  */\r
-\r
-#define        ERROR_TABLE     258\r
-#define        ERROR_CODE_ENTRY        259\r
-#define        END     260\r
-#define        STRING  261\r
-#define        QUOTED_STRING   262\r
-\r
-#line 1 "error_table.y"\r
-\r
+
+/*  A Bison parser, made from error_table.y with Bison version GNU Bison version 1.24
+  */
+
+#define YYBISON 1  /* Identify Bison output.  */
+
+#define        ERROR_TABLE     258
+#define        ERROR_CODE_ENTRY        259
+#define        END     260
+#define        STRING  261
+#define        QUOTED_STRING   262
+
+#line 1 "error_table.y"
+
 #include <afsconfig.h>
-#include <afs/param.h>\r
-\r
-RCSID("$Header$");\r
-\r
-\r
-/*\r
- * If __STDC__ is defined, function prototypes in the SunOS 5.5.1 lex\r
- * and yacc templates are visible.  We turn this on explicitly on\r
- * NT because the prototypes help supress certain warning from the\r
- * Microsoft C compiler.\r
- */\r
-\r
-#ifdef AFS_NT40_ENV\r
-#include <malloc.h>\r
-# ifndef __STDC__\r
-#  define __STDC__ 1\r
-# endif\r
-#endif\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-#include "internal.h"\r
-\r
-char *current_token = (char *)NULL;\r
-extern char *table_name;\r
-\r
-char *ds(const char *string);\r
-char *quote(const char *string);\r
-void set_table_1num(char *string);\r
-int char_to_1num(char c);\r
-void add_ec(const char *name, const char *description);\r
-void add_ec_val(const char *name, const char *val, const char *description);\r
-void put_ecs(void);\r
-void set_table_num(char *string);\r
-void set_table_fun(char *astring);\r
-\r
-\r
-#line 38 "error_table.y"\r
-typedef union {\r
-       char *dynstr;\r
-} YYSTYPE;\r
-#line 45 "error_table.y"\r
-\r
-\r
-#ifndef YYLTYPE\r
-typedef\r
-  struct yyltype\r
-    {\r
-      int timestamp;\r
-      int first_line;\r
-      int first_column;\r
-      int last_line;\r
-      int last_column;\r
-      char *text;\r
-   }\r
-  yyltype;\r
-\r
-#define YYLTYPE yyltype\r
-#endif\r
-\r
-#include <stdio.h>\r
-\r
-#ifndef __cplusplus\r
-#ifndef __STDC__\r
-#define const\r
-#endif\r
-#endif\r
-\r
-\r
-\r
-#define        YYFINAL         24\r
-#define        YYFLAG          -32768\r
-#define        YYNTBASE        10\r
-\r
-#define YYTRANSLATE(x) ((unsigned)(x) <= 262 ? yytranslate[x] : 18)\r
-\r
-static const char yytranslate[] = {     0,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     8,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     9,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\r
-     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,\r
-     6,     7\r
-};\r
-\r
-#if YYDEBUG != 0\r
-static const short yyprhs[] = {     0,\r
-     0,     5,     8,    10,    12,    14,    17,    19,    24,    31,\r
-    33\r
-};\r
-\r
-static const short yyrhs[] = {     3,\r
-    11,    14,     5,     0,    12,    13,     0,    13,     0,     6,\r
-     0,     6,     0,    14,    15,     0,    15,     0,     4,    16,\r
-     8,    17,     0,     4,    16,     9,     6,     8,    17,     0,\r
-     6,     0,     7,     0\r
-};\r
-\r
-#endif\r
-\r
-#if YYDEBUG != 0\r
-static const short yyrline[] = { 0,\r
-    50,    56,    59,    66,    73,    79,    80,    83,    87,    95,\r
-   100\r
-};\r
-\r
-static const char * const yytname[] = {   "$","error","$undefined.","ERROR_TABLE",\r
-"ERROR_CODE_ENTRY","END","STRING","QUOTED_STRING","','","'='","error_table",\r
-"header","table_fun","table_id","error_codes","ec_entry","ec_name","description",\r
-""\r
-};\r
-#endif\r
-\r
-static const short yyr1[] = {     0,\r
-    10,    11,    11,    12,    13,    14,    14,    15,    15,    16,\r
-    17\r
-};\r
-\r
-static const short yyr2[] = {     0,\r
-     4,     2,     1,     1,     1,     2,     1,     4,     6,     1,\r
-     1\r
-};\r
-\r
-static const short yydefact[] = {     0,\r
-     0,     4,     0,     0,     3,     0,     0,     7,     5,     2,\r
-    10,     0,     1,     6,     0,     0,    11,     8,     0,     0,\r
-     9,     0,     0,     0\r
-};\r
-\r
-static const short yydefgoto[] = {    22,\r
-     3,     4,     5,     7,     8,    12,    18\r
-};\r
-\r
-static const short yypact[] = {     1,\r
-    -1,     2,     3,     4,-32768,     5,    -4,-32768,-32768,-32768,\r
--32768,    -6,-32768,-32768,     6,     8,-32768,-32768,     0,     6,\r
--32768,     9,    12,-32768\r
-};\r
-\r
-static const short yypgoto[] = {-32768,\r
--32768,-32768,    11,-32768,    10,-32768,    -2\r
-};\r
-\r
-\r
-#define        YYLAST          18\r
-\r
-\r
-static const short yytable[] = {     6,\r
-    13,    15,    16,     1,     2,    -5,     6,    20,    23,     9,\r
-    11,    24,    17,    19,    10,     0,    14,    21\r
-};\r
-\r
-static const short yycheck[] = {     4,\r
-     5,     8,     9,     3,     6,     4,     4,     8,     0,     6,\r
-     6,     0,     7,     6,     4,    -1,     7,    20\r
-};\r
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */\r\r
-#line 3 "bison.simple"\r\r
-\r\r
-/* Skeleton output parser for bison,\r\r
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.\r\r
-\r\r
-   This program is free software; you can redistribute it and/or modify\r\r
-   it under the terms of the GNU General Public License as published by\r\r
-   the Free Software Foundation; either version 2, or (at your option)\r\r
-   any later version.\r\r
-\r\r
-   This program is distributed in the hope that it will be useful,\r\r
-   but WITHOUT ANY WARRANTY; without even the implied warranty of\r\r
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\r
-   GNU General Public License for more details.\r\r
-\r\r
-   You should have received a copy of the GNU General Public License\r\r
-   along with this program; if not, write to the Free Software\r\r
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */\r\r
-\r\r
-/* As a special exception, when this file is copied by Bison into a\r\r
-   Bison output file, you may use that output file without restriction.\r\r
-   This special exception was added by the Free Software Foundation\r\r
-   in version 1.24 of Bison.  */\r\r
-\r\r
-#ifndef alloca\r\r
-#ifdef __GNUC__\r\r
-#define alloca __builtin_alloca\r\r
-#else /* not GNU C.  */\r\r
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)\r\r
-#include <alloca.h>\r\r
-#else /* not sparc */\r\r
-#if defined (MSDOS) && !defined (__TURBOC__)\r\r
-#include <malloc.h>\r\r
-#else /* not MSDOS, or __TURBOC__ */\r\r
-#if defined(_AIX)\r\r
-#include <malloc.h>\r\r
- #pragma alloca\r\r
-#else /* not MSDOS, __TURBOC__, or _AIX */\r\r
-#ifdef __hpux\r\r
-#ifdef __cplusplus\r\r
-extern "C" {\r\r
-void *alloca (unsigned int);\r\r
-};\r\r
-#else /* not __cplusplus */\r\r
-void *alloca ();\r\r
-#endif /* not __cplusplus */\r\r
-#endif /* __hpux */\r\r
-#endif /* not _AIX */\r\r
-#endif /* not MSDOS, or __TURBOC__ */\r\r
-#endif /* not sparc.  */\r\r
-#endif /* not GNU C.  */\r\r
-#endif /* alloca not defined.  */\r\r
-\r\r
-/* This is the parser code that is written into each bison parser\r\r
-  when the %semantic_parser declaration is not specified in the grammar.\r\r
-  It was written by Richard Stallman by simplifying the hairy parser\r\r
-  used when %semantic_parser is specified.  */\r\r
-\r\r
-/* Note: there must be only one dollar sign in this file.\r\r
-   It is replaced by the list of actions, each action\r\r
-   as one case of the switch.  */\r\r
-\r\r
-#define yyerrok                (yyerrstatus = 0)\r\r
-#define yyclearin      (yychar = YYEMPTY)\r\r
-#define YYEMPTY                -2\r\r
-#define YYEOF          0\r\r
-#define YYACCEPT       return(0)\r\r
-#define YYABORT        return(1)\r\r
-#define YYERROR                goto yyerrlab1\r\r
-/* Like YYERROR except do call yyerror.\r\r
-   This remains here temporarily to ease the\r\r
-   transition to the new meaning of YYERROR, for GCC.\r\r
-   Once GCC version 2 has supplanted version 1, this can go.  */\r\r
-#define YYFAIL         goto yyerrlab\r\r
-#define YYRECOVERING()  (!!yyerrstatus)\r\r
-#define YYBACKUP(token, value) \\r\r
-do                                                             \\r\r
-  if (yychar == YYEMPTY && yylen == 1)                         \\r\r
-    { yychar = (token), yylval = (value);                      \\r\r
-      yychar1 = YYTRANSLATE (yychar);                          \\r\r
-      YYPOPSTACK;                                              \\r\r
-      goto yybackup;                                           \\r\r
-    }                                                          \\r\r
-  else                                                         \\r\r
-    { yyerror ("syntax error: cannot back up"); YYERROR; }     \\r\r
-while (0)\r\r
-\r\r
-#define YYTERROR       1\r\r
-#define YYERRCODE      256\r\r
-\r\r
-#ifndef YYPURE\r\r
-#define YYLEX          yylex()\r\r
-#endif\r\r
-\r\r
-#ifdef YYPURE\r\r
-#ifdef YYLSP_NEEDED\r\r
-#ifdef YYLEX_PARAM\r\r
-#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)\r\r
-#else\r\r
-#define YYLEX          yylex(&yylval, &yylloc)\r\r
-#endif\r\r
-#else /* not YYLSP_NEEDED */\r\r
-#ifdef YYLEX_PARAM\r\r
-#define YYLEX          yylex(&yylval, YYLEX_PARAM)\r\r
-#else\r\r
-#define YYLEX          yylex(&yylval)\r\r
-#endif\r\r
-#endif /* not YYLSP_NEEDED */\r\r
-#endif\r\r
-\r\r
-/* If nonreentrant, generate the variables here */\r\r
-\r\r
-#ifndef YYPURE\r\r
-\r\r
-int    yychar;                 /*  the lookahead symbol                */\r\r
-YYSTYPE        yylval;                 /*  the semantic value of the           */\r\r
-                               /*  lookahead symbol                    */\r\r
-\r\r
-#ifdef YYLSP_NEEDED\r\r
-YYLTYPE yylloc;                        /*  location data for the lookahead     */\r\r
-                               /*  symbol                              */\r\r
-#endif\r\r
-\r\r
-int yynerrs;                   /*  number of parse errors so far       */\r\r
-#endif  /* not YYPURE */\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-int yydebug;                   /*  nonzero means print parse trace     */\r\r
-/* Since this is uninitialized, it does not stop multiple parsers\r\r
-   from coexisting.  */\r\r
-#endif\r\r
-\r\r
-/*  YYINITDEPTH indicates the initial size of the parser's stacks      */\r\r
-\r\r
-#ifndef        YYINITDEPTH\r\r
-#define YYINITDEPTH 200\r\r
-#endif\r\r
-\r\r
-/*  YYMAXDEPTH is the maximum size the stacks can grow to\r\r
-    (effective only if the built-in stack extension method is used).  */\r\r
-\r\r
-#if YYMAXDEPTH == 0\r\r
-#undef YYMAXDEPTH\r\r
-#endif\r\r
-\r\r
-#ifndef YYMAXDEPTH\r\r
-#define YYMAXDEPTH 10000\r\r
-#endif\r\r
-\r\r
-/* Prevent warning if -Wstrict-prototypes.  */\r\r
-#ifdef __GNUC__\r\r
-int yyparse (void);\r\r
-#endif\r\r
-\f\r\r
-#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */\r\r
-#define __yy_memcpy(FROM,TO,COUNT)     __builtin_memcpy(TO,FROM,COUNT)\r\r
-#else                          /* not GNU C or C++ */\r\r
-#ifndef __cplusplus\r\r
-\r\r
-/* This is the most reliable way to avoid incompatibilities\r\r
-   in available built-in functions on various systems.  */\r\r
-static void\r\r
-__yy_memcpy (from, to, count)\r\r
-     char *from;\r\r
-     char *to;\r\r
-     int count;\r\r
-{\r\r
-  register char *f = from;\r\r
-  register char *t = to;\r\r
-  register int i = count;\r\r
-\r\r
-  while (i-- > 0)\r\r
-    *t++ = *f++;\r\r
-}\r\r
-\r\r
-#else /* __cplusplus */\r\r
-\r\r
-/* This is the most reliable way to avoid incompatibilities\r\r
-   in available built-in functions on various systems.  */\r\r
-static void\r\r
-__yy_memcpy (char *from, char *to, int count)\r\r
-{\r\r
-  register char *f = from;\r\r
-  register char *t = to;\r\r
-  register int i = count;\r\r
-\r\r
-  while (i-- > 0)\r\r
-    *t++ = *f++;\r\r
-}\r\r
-\r\r
-#endif\r\r
-#endif\r\r
-\f\r\r
-#line 192 "bison.simple"\r\r
-\r\r
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed\r\r
-   into yyparse.  The argument should have type void *.\r\r
-   It should actually point to an object.\r\r
-   Grammar actions can access the variable by casting it\r\r
-   to the proper pointer type.  */\r\r
-\r\r
-#ifdef YYPARSE_PARAM\r\r
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;\r\r
-#else\r\r
-#define YYPARSE_PARAM\r\r
-#define YYPARSE_PARAM_DECL\r\r
-#endif\r\r
-\r\r
-int\r\r
-yyparse(YYPARSE_PARAM)\r\r
-     YYPARSE_PARAM_DECL\r\r
-{\r\r
-  register int yystate;\r\r
-  register int yyn;\r\r
-  register short *yyssp;\r\r
-  register YYSTYPE *yyvsp;\r\r
-  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */\r\r
-  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */\r\r
-\r\r
-  short        yyssa[YYINITDEPTH];     /*  the state stack                     */\r\r
-  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */\r\r
-\r\r
-  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */\r\r
-  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to reallocate them elsewhere */\r\r
-\r\r
-#ifdef YYLSP_NEEDED\r\r
-  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */\r\r
-  YYLTYPE *yyls = yylsa;\r\r
-  YYLTYPE *yylsp;\r\r
-\r\r
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)\r\r
-#else\r\r
-#define YYPOPSTACK   (yyvsp--, yyssp--)\r\r
-#endif\r\r
-\r\r
-  int yystacksize = YYINITDEPTH;\r\r
-\r\r
-#ifdef YYPURE\r\r
-  int yychar;\r\r
-  YYSTYPE yylval;\r\r
-  int yynerrs;\r\r
-#ifdef YYLSP_NEEDED\r\r
-  YYLTYPE yylloc;\r\r
-#endif\r\r
-#endif\r\r
-\r\r
-  YYSTYPE yyval;               /*  the variable used to return         */\r\r
-                               /*  semantic values from the action     */\r\r
-                               /*  routines                            */\r\r
-\r\r
-  int yylen;\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-  if (yydebug)\r\r
-    fprintf(stderr, "Starting parse\n");\r\r
-#endif\r\r
-\r\r
-  yystate = 0;\r\r
-  yyerrstatus = 0;\r\r
-  yynerrs = 0;\r\r
-  yychar = YYEMPTY;            /* Cause a token to be read.  */\r\r
-\r\r
-  /* Initialize stack pointers.\r\r
-     Waste one element of value and location stack\r\r
-     so that they stay on the same level as the state stack.\r\r
-     The wasted elements are never initialized.  */\r\r
-\r\r
-  yyssp = yyss - 1;\r\r
-  yyvsp = yyvs;\r\r
-#ifdef YYLSP_NEEDED\r\r
-  yylsp = yyls;\r\r
-#endif\r\r
-\r\r
-/* Push a new state, which is found in  yystate  .  */\r\r
-/* In all cases, when you get here, the value and location stacks\r\r
-   have just been pushed. so pushing a state here evens the stacks.  */\r\r
-yynewstate:\r\r
-\r\r
-  *++yyssp = yystate;\r\r
-\r\r
-  if (yyssp >= yyss + yystacksize - 1)\r\r
-    {\r\r
-      /* Give user a chance to reallocate the stack */\r\r
-      /* Use copies of these so that the &'s don't force the real ones into memory. */\r\r
-      YYSTYPE *yyvs1 = yyvs;\r\r
-      short *yyss1 = yyss;\r\r
-#ifdef YYLSP_NEEDED\r\r
-      YYLTYPE *yyls1 = yyls;\r\r
-#endif\r\r
-\r\r
-      /* Get the current used size of the three stacks, in elements.  */\r\r
-      int size = yyssp - yyss + 1;\r\r
-\r\r
-#ifdef yyoverflow\r\r
-      /* Each stack pointer address is followed by the size of\r\r
-        the data in use in that stack, in bytes.  */\r\r
-#ifdef YYLSP_NEEDED\r\r
-      /* This used to be a conditional around just the two extra args,\r\r
-        but that might be undefined if yyoverflow is a macro.  */\r\r
-      yyoverflow("parser stack overflow",\r\r
-                &yyss1, size * sizeof (*yyssp),\r\r
-                &yyvs1, size * sizeof (*yyvsp),\r\r
-                &yyls1, size * sizeof (*yylsp),\r\r
-                &yystacksize);\r\r
-#else\r\r
-      yyoverflow("parser stack overflow",\r\r
-                &yyss1, size * sizeof (*yyssp),\r\r
-                &yyvs1, size * sizeof (*yyvsp),\r\r
-                &yystacksize);\r\r
-#endif\r\r
-\r\r
-      yyss = yyss1; yyvs = yyvs1;\r\r
-#ifdef YYLSP_NEEDED\r\r
-      yyls = yyls1;\r\r
-#endif\r\r
-#else /* no yyoverflow */\r\r
-      /* Extend the stack our own way.  */\r\r
-      if (yystacksize >= YYMAXDEPTH)\r\r
-       {\r\r
-         yyerror("parser stack overflow");\r\r
-         return 2;\r\r
-       }\r\r
-      yystacksize *= 2;\r\r
-      if (yystacksize > YYMAXDEPTH)\r\r
-       yystacksize = YYMAXDEPTH;\r\r
-      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));\r\r
-      __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));\r\r
-      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));\r\r
-      __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));\r\r
-#ifdef YYLSP_NEEDED\r\r
-      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));\r\r
-      __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));\r\r
-#endif\r\r
-#endif /* no yyoverflow */\r\r
-\r\r
-      yyssp = yyss + size - 1;\r\r
-      yyvsp = yyvs + size - 1;\r\r
-#ifdef YYLSP_NEEDED\r\r
-      yylsp = yyls + size - 1;\r\r
-#endif\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-      if (yydebug)\r\r
-       fprintf(stderr, "Stack size increased to %d\n", yystacksize);\r\r
-#endif\r\r
-\r\r
-      if (yyssp >= yyss + yystacksize - 1)\r\r
-       YYABORT;\r\r
-    }\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-  if (yydebug)\r\r
-    fprintf(stderr, "Entering state %d\n", yystate);\r\r
-#endif\r\r
-\r\r
-  goto yybackup;\r\r
- yybackup:\r\r
-\r\r
-/* Do appropriate processing given the current state.  */\r\r
-/* Read a lookahead token if we need one and don't already have one.  */\r\r
-/* yyresume: */\r\r
-\r\r
-  /* First try to decide what to do without reference to lookahead token.  */\r\r
-\r\r
-  yyn = yypact[yystate];\r\r
-  if (yyn == YYFLAG)\r\r
-    goto yydefault;\r\r
-\r\r
-  /* Not known => get a lookahead token if don't already have one.  */\r\r
-\r\r
-  /* yychar is either YYEMPTY or YYEOF\r\r
-     or a valid token in external form.  */\r\r
-\r\r
-  if (yychar == YYEMPTY)\r\r
-    {\r\r
-#if YYDEBUG != 0\r\r
-      if (yydebug)\r\r
-       fprintf(stderr, "Reading a token: ");\r\r
-#endif\r\r
-      yychar = YYLEX;\r\r
-    }\r\r
-\r\r
-  /* Convert token to internal form (in yychar1) for indexing tables with */\r\r
-\r\r
-  if (yychar <= 0)             /* This means end of input. */\r\r
-    {\r\r
-      yychar1 = 0;\r\r
-      yychar = YYEOF;          /* Don't call YYLEX any more */\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-      if (yydebug)\r\r
-       fprintf(stderr, "Now at end of input.\n");\r\r
-#endif\r\r
-    }\r\r
-  else\r\r
-    {\r\r
-      yychar1 = YYTRANSLATE(yychar);\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-      if (yydebug)\r\r
-       {\r\r
-         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);\r\r
-         /* Give the individual parser a way to print the precise meaning\r\r
-            of a token, for further debugging info.  */\r\r
-#ifdef YYPRINT\r\r
-         YYPRINT (stderr, yychar, yylval);\r\r
-#endif\r\r
-         fprintf (stderr, ")\n");\r\r
-       }\r\r
-#endif\r\r
-    }\r\r
-\r\r
-  yyn += yychar1;\r\r
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)\r\r
-    goto yydefault;\r\r
-\r\r
-  yyn = yytable[yyn];\r\r
-\r\r
-  /* yyn is what to do for this token type in this state.\r\r
-     Negative => reduce, -yyn is rule number.\r\r
-     Positive => shift, yyn is new state.\r\r
-       New state is final state => don't bother to shift,\r\r
-       just return success.\r\r
-     0, or most negative number => error.  */\r\r
-\r\r
-  if (yyn < 0)\r\r
-    {\r\r
-      if (yyn == YYFLAG)\r\r
-       goto yyerrlab;\r\r
-      yyn = -yyn;\r\r
-      goto yyreduce;\r\r
-    }\r\r
-  else if (yyn == 0)\r\r
-    goto yyerrlab;\r\r
-\r\r
-  if (yyn == YYFINAL)\r\r
-    YYACCEPT;\r\r
-\r\r
-  /* Shift the lookahead token.  */\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-  if (yydebug)\r\r
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);\r\r
-#endif\r\r
-\r\r
-  /* Discard the token being shifted unless it is eof.  */\r\r
-  if (yychar != YYEOF)\r\r
-    yychar = YYEMPTY;\r\r
-\r\r
-  *++yyvsp = yylval;\r\r
-#ifdef YYLSP_NEEDED\r\r
-  *++yylsp = yylloc;\r\r
-#endif\r\r
-\r\r
-  /* count tokens shifted since error; after three, turn off error status.  */\r\r
-  if (yyerrstatus) yyerrstatus--;\r\r
-\r\r
-  yystate = yyn;\r\r
-  goto yynewstate;\r\r
-\r\r
-/* Do the default action for the current state.  */\r\r
-yydefault:\r\r
-\r\r
-  yyn = yydefact[yystate];\r\r
-  if (yyn == 0)\r\r
-    goto yyerrlab;\r\r
-\r\r
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */\r\r
-yyreduce:\r\r
-  yylen = yyr2[yyn];\r\r
-  if (yylen > 0)\r\r
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-  if (yydebug)\r\r
-    {\r\r
-      int i;\r\r
-\r\r
-      fprintf (stderr, "Reducing via rule %d (line %d), ",\r\r
-              yyn, yyrline[yyn]);\r\r
-\r\r
-      /* Print the symbols being reduced, and their result.  */\r\r
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)\r\r
-       fprintf (stderr, "%s ", yytname[yyrhs[i]]);\r\r
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);\r\r
-    }\r\r
-#endif\r\r
-\r\r
-\r
-  switch (yyn) {\r
-\r
-case 1:\r
-#line 51 "error_table.y"\r
-{ table_name = ds(yyvsp[-2].dynstr);\r
-                         current_token = table_name;\r
-                         put_ecs(); ;\r
-    break;}\r
-case 2:\r
-#line 57 "error_table.y"\r
-{ current_token = yyvsp[-1].dynstr;\r
-                          yyval.dynstr = yyvsp[0].dynstr; ;\r
-    break;}\r
-case 3:\r
-#line 60 "error_table.y"\r
-{ current_token = yyvsp[0].dynstr;\r
-                          set_table_fun(ds("1"));\r
-                          yyval.dynstr = yyvsp[0].dynstr;\r
-                        ;\r
-    break;}\r
-case 4:\r
-#line 67 "error_table.y"\r
-{ current_token = yyvsp[0].dynstr;\r
-                          set_table_fun(yyvsp[0].dynstr);\r
-                          yyval.dynstr = yyvsp[0].dynstr; ;\r
-    break;}\r
-case 5:\r
-#line 74 "error_table.y"\r
-{ current_token = yyvsp[0].dynstr;\r
-                         set_table_num(yyvsp[0].dynstr);\r
-                         yyval.dynstr = yyvsp[0].dynstr; ;\r
-    break;}\r
-case 8:\r
-#line 84 "error_table.y"\r
-{ add_ec(yyvsp[-2].dynstr, yyvsp[0].dynstr);\r
-                         free(yyvsp[-2].dynstr);\r
-                         free(yyvsp[0].dynstr); ;\r
-    break;}\r
-case 9:\r
-#line 88 "error_table.y"\r
-{ add_ec_val(yyvsp[-4].dynstr, yyvsp[-2].dynstr, yyvsp[0].dynstr);\r
-                         free(yyvsp[-4].dynstr);\r
-                         free(yyvsp[-2].dynstr);\r
-                         free(yyvsp[0].dynstr);\r
-                       ;\r
-    break;}\r
-case 10:\r
-#line 96 "error_table.y"\r
-{ yyval.dynstr = ds(yyvsp[0].dynstr);\r
-                         current_token = yyval.dynstr; ;\r
-    break;}\r
-case 11:\r
-#line 101 "error_table.y"\r
-{ yyval.dynstr = ds(yyvsp[0].dynstr);\r
-                         current_token = yyval.dynstr; ;\r
-    break;}\r
-}\r
-   /* the action file gets copied in in place of this dollarsign */\r\r
-#line 487 "bison.simple"\r\r
-\f\r\r
-  yyvsp -= yylen;\r\r
-  yyssp -= yylen;\r\r
-#ifdef YYLSP_NEEDED\r\r
-  yylsp -= yylen;\r\r
-#endif\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-  if (yydebug)\r\r
-    {\r\r
-      short *ssp1 = yyss - 1;\r\r
-      fprintf (stderr, "state stack now");\r\r
-      while (ssp1 != yyssp)\r\r
-       fprintf (stderr, " %d", *++ssp1);\r\r
-      fprintf (stderr, "\n");\r\r
-    }\r\r
-#endif\r\r
-\r\r
-  *++yyvsp = yyval;\r\r
-\r\r
-#ifdef YYLSP_NEEDED\r\r
-  yylsp++;\r\r
-  if (yylen == 0)\r\r
-    {\r\r
-      yylsp->first_line = yylloc.first_line;\r\r
-      yylsp->first_column = yylloc.first_column;\r\r
-      yylsp->last_line = (yylsp-1)->last_line;\r\r
-      yylsp->last_column = (yylsp-1)->last_column;\r\r
-      yylsp->text = 0;\r\r
-    }\r\r
-  else\r\r
-    {\r\r
-      yylsp->last_line = (yylsp+yylen-1)->last_line;\r\r
-      yylsp->last_column = (yylsp+yylen-1)->last_column;\r\r
-    }\r\r
-#endif\r\r
-\r\r
-  /* Now "shift" the result of the reduction.\r\r
-     Determine what state that goes to,\r\r
-     based on the state we popped back to\r\r
-     and the rule number reduced by.  */\r\r
-\r\r
-  yyn = yyr1[yyn];\r\r
-\r\r
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;\r\r
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)\r\r
-    yystate = yytable[yystate];\r\r
-  else\r\r
-    yystate = yydefgoto[yyn - YYNTBASE];\r\r
-\r\r
-  goto yynewstate;\r\r
-\r\r
-yyerrlab:   /* here on detecting error */\r\r
-\r\r
-  if (! yyerrstatus)\r\r
-    /* If not already recovering from an error, report this error.  */\r\r
-    {\r\r
-      ++yynerrs;\r\r
-\r\r
-#ifdef YYERROR_VERBOSE\r\r
-      yyn = yypact[yystate];\r\r
-\r\r
-      if (yyn > YYFLAG && yyn < YYLAST)\r\r
-       {\r\r
-         int size = 0;\r\r
-         char *msg;\r\r
-         int x, count;\r\r
-\r\r
-         count = 0;\r\r
-         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */\r\r
-         for (x = (yyn < 0 ? -yyn : 0);\r\r
-              x < (sizeof(yytname) / sizeof(char *)); x++)\r\r
-           if (yycheck[x + yyn] == x)\r\r
-             size += strlen(yytname[x]) + 15, count++;\r\r
-         msg = (char *) malloc(size + 15);\r\r
-         if (msg != 0)\r\r
-           {\r\r
-             strcpy(msg, "parse error");\r\r
-\r\r
-             if (count < 5)\r\r
-               {\r\r
-                 count = 0;\r\r
-                 for (x = (yyn < 0 ? -yyn : 0);\r\r
-                      x < (sizeof(yytname) / sizeof(char *)); x++)\r\r
-                   if (yycheck[x + yyn] == x)\r\r
-                     {\r\r
-                       strcat(msg, count == 0 ? ", expecting `" : " or `");\r\r
-                       strcat(msg, yytname[x]);\r\r
-                       strcat(msg, "'");\r\r
-                       count++;\r\r
-                     }\r\r
-               }\r\r
-             yyerror(msg);\r\r
-             free(msg);\r\r
-           }\r\r
-         else\r\r
-           yyerror ("parse error; also virtual memory exceeded");\r\r
-       }\r\r
-      else\r\r
-#endif /* YYERROR_VERBOSE */\r\r
-       yyerror("parse error");\r\r
-    }\r\r
-\r\r
-  goto yyerrlab1;\r\r
-yyerrlab1:   /* here on error raised explicitly by an action */\r\r
-\r\r
-  if (yyerrstatus == 3)\r\r
-    {\r\r
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */\r\r
-\r\r
-      /* return failure if at end of input */\r\r
-      if (yychar == YYEOF)\r\r
-       YYABORT;\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-      if (yydebug)\r\r
-       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);\r\r
-#endif\r\r
-\r\r
-      yychar = YYEMPTY;\r\r
-    }\r\r
-\r\r
-  /* Else will try to reuse lookahead token\r\r
-     after shifting the error token.  */\r\r
-\r\r
-  yyerrstatus = 3;             /* Each real token shifted decrements this */\r\r
-\r\r
-  goto yyerrhandle;\r\r
-\r\r
-yyerrdefault:  /* current state does not do anything special for the error token. */\r\r
-\r\r
-#if 0\r\r
-  /* This is wrong; only states that explicitly want error tokens\r\r
-     should shift them.  */\r\r
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/\r\r
-  if (yyn) goto yydefault;\r\r
-#endif\r\r
-\r\r
-yyerrpop:   /* pop the current state because it cannot handle the error token */\r\r
-\r\r
-  if (yyssp == yyss) YYABORT;\r\r
-  yyvsp--;\r\r
-  yystate = *--yyssp;\r\r
-#ifdef YYLSP_NEEDED\r\r
-  yylsp--;\r\r
-#endif\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-  if (yydebug)\r\r
-    {\r\r
-      short *ssp1 = yyss - 1;\r\r
-      fprintf (stderr, "Error: state stack now");\r\r
-      while (ssp1 != yyssp)\r\r
-       fprintf (stderr, " %d", *++ssp1);\r\r
-      fprintf (stderr, "\n");\r\r
-    }\r\r
-#endif\r\r
-\r\r
-yyerrhandle:\r\r
-\r\r
-  yyn = yypact[yystate];\r\r
-  if (yyn == YYFLAG)\r\r
-    goto yyerrdefault;\r\r
-\r\r
-  yyn += YYTERROR;\r\r
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)\r\r
-    goto yyerrdefault;\r\r
-\r\r
-  yyn = yytable[yyn];\r\r
-  if (yyn < 0)\r\r
-    {\r\r
-      if (yyn == YYFLAG)\r\r
-       goto yyerrpop;\r\r
-      yyn = -yyn;\r\r
-      goto yyreduce;\r\r
-    }\r\r
-  else if (yyn == 0)\r\r
-    goto yyerrpop;\r\r
-\r\r
-  if (yyn == YYFINAL)\r\r
-    YYACCEPT;\r\r
-\r\r
-#if YYDEBUG != 0\r\r
-  if (yydebug)\r\r
-    fprintf(stderr, "Shifting error token, ");\r\r
-#endif\r\r
-\r\r
-  *++yyvsp = yylval;\r\r
-#ifdef YYLSP_NEEDED\r\r
-  *++yylsp = yylloc;\r\r
-#endif\r\r
-\r\r
-  yystate = yyn;\r\r
-  goto yynewstate;\r\r
-}\r\r
-#line 105 "error_table.y"\r
-\r
-/*\r
- *\r
- * Copyright 1986, 1987 by the MIT Student Information Processing Board\r
- *\r
- * For copyright info, see mit-sipb-cr.h.\r
- */\r
-#ifndef AFS_NT40_ENV\r
-#include <unistd.h>\r
-#endif\r
-#include <afs/param.h>\r
-#include <string.h>\r
-#include <assert.h>\r
-#include <ctype.h>\r
-#ifdef AFS_NT40_ENV\r
-#include <sys/types.h>\r
-#include <afs/afsutil.h>\r
-#else\r
-#include <sys/time.h>\r
-#endif\r
-#include <sys/timeb.h>\r
-#include "error_table.h"\r
-#include "mit-sipb-cr.h"\r
-#include <stdio.h>\r
-\r
-/* Copyright (C)  1998  Transarc Corporation.  All rights reserved.\r
- *\r
- */\r
-\r
-extern FILE *hfile, *cfile, *msfile;\r
-extern int use_msf;\r
-\r
-static afs_int32 gensym_n = 0;\r
-\r
-char *gensym(const char *x)\r
-{\r
-       char *symbol;\r
-       if (!gensym_n) {\r
-               struct timeval tv;\r
-               gettimeofday(&tv, (void *)0);\r
-               gensym_n = (tv.tv_sec%10000)*100 + tv.tv_usec/10000;\r
-       }\r
-       symbol = (char *)malloc(32 * sizeof(char));\r
-       gensym_n++;\r
-       sprintf(symbol, "et%ld", gensym_n);\r
-       return(symbol);\r
-}\r
-\r
-char *\r
-ds(const char *string)\r
-{\r
-       char *rv;\r
-       rv = (char *)malloc(strlen(string)+1);\r
-       strcpy(rv, string);\r
-       return(rv);\r
-}\r
-\r
-char *\r
-quote(const char *string)\r
-{\r
-       char *rv;\r
-       rv = (char *)malloc(strlen(string)+3);\r
-       strcpy(rv, "\"");\r
-       strcat(rv, string);\r
-       strcat(rv, "\"");\r
-       return(rv);\r
-}\r
-\r
-afs_int32 table_number = 0;\r
-int current = 0;\r
-char **error_codes = (char **)NULL;\r
-\r
-void add_ec(const char *name, const char *description)\r
-{\r
-        if (msfile) {\r
-            if (current > 0)\r
-#ifndef sun\r
-                fprintf(msfile, "%d\t%s\n", current, description);\r
-#else\r
-                fprintf(msfile, "%d %s\n", current, description);\r
-#endif /* !sun */\r
-        } else {\r
-           fprintf(cfile, "\t\"%s\",\n", description);\r
-       }\r
-       if (error_codes == (char **)NULL) {\r
-               error_codes = (char **)malloc(sizeof(char *));\r
-               *error_codes = (char *)NULL;\r
-       }\r
-       error_codes = (char **)realloc((char *)error_codes,\r
-                                      (current + 2)*sizeof(char *));\r
-       error_codes[current++] = ds(name);\r
-       error_codes[current] = (char *)NULL;\r
-}\r
-\r
-void add_ec_val(const char *name, const char *val, const char *description)\r
-{\r
-       const int ncurrent = atoi(val);\r
-       if (ncurrent < current) {\r
-               printf("Error code %s (%d) out of order", name,\r
-                      current);\r
-               return;\r
-       }\r
-      \r
-       while (ncurrent > current) {\r
-            if (!msfile)\r
-                fputs("\t(char *)NULL,\n", cfile);\r
-            current++;\r
-        }\r
-        if (msfile) {\r
-            if (current > 0)\r
-#ifndef sun\r
-                fprintf(msfile, "%d\t%s\n", current, description);\r
-#else\r
-                fprintf(msfile, "%d %s\n", current, description);\r
-#endif /* ! sun */\r
-        } else {       \r
-           fprintf(cfile, "\t\"%s\",\n", description);\r
-       }\r
-       if (error_codes == (char **)NULL) {\r
-               error_codes = (char **)malloc(sizeof(char *));\r
-               *error_codes = (char *)NULL;\r
-       }\r
-       error_codes = (char **)realloc((char *)error_codes,\r
-                                      (current + 2)*sizeof(char *));\r
-       error_codes[current++] = ds(name);\r
-       error_codes[current] = (char *)NULL;\r
-} \r
-\r
-void put_ecs(void)\r
-{\r
-       int i;\r
-       for (i = 0; i < current; i++) {\r
-            if (error_codes[i] != (char *)NULL)\r
-                 fprintf(hfile, "#define %-40s (%ldL)\n",\r
-                         error_codes[i], table_number + i);\r
-       }\r
-}\r
-\r
-/*\r
- * char_to_num -- maps letters and numbers into a small numbering space\r
- *     uppercase ->  1-26\r
- *     lowercase -> 27-52\r
- *     digits    -> 53-62\r
- *     underscore-> 63\r
- */\r
-\r
-static const char char_set[] =\r
-       "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";\r
-\r
-int char_to_num(char c)\r
-{\r
-       const char *where;\r
-       int diff;\r
-\r
-       where = strchr (char_set, c);\r
-       if (where) {\r
-               diff = where - char_set + 1;\r
-               assert (diff < (1 << ERRCODE_RANGE));\r
-               return diff;\r
-       }\r
-       else if (isprint (c))\r
-               fprintf (stderr,\r
-                        "Illegal character `%c' in error table name\n",\r
-                        c);\r
-       else\r
-               fprintf (stderr,\r
-                        "Illegal character %03o in error table name\n",\r
-                        c);\r
-       exit (1);\r
-}\r
-\r
-void set_table_num(char *string)\r
-{       char ucname[6];                        /* I think 5 is enough but et_name.c used 6... */\r
-       extern char *ucstring();\r
-\r
-        if (msfile) {\r
-           set_table_1num(string);\r
-           return;\r
-       }\r
-       if (strlen(string) > 4) {\r
-               fprintf(stderr, "Table name %s too long, truncated ",\r
-                       string);\r
-               string[4] = '\0';\r
-               fprintf(stderr, "to %s\n", string);\r
-       }\r
-       string = ucstring (ucname, string, sizeof(ucname));\r
-       if (char_to_num (string[0]) > char_to_num ('z')) {\r
-               fprintf (stderr, "%s%s%s%s",\r
-                        "First character of error table name must be ",\r
-                        "a letter; name ``",\r
-                        string, "'' rejected\n");\r
-               exit (1);\r
-       }\r
-       while (*string != '\0') {\r
-               table_number = (table_number << BITS_PER_CHAR)\r
-                       + char_to_num(*string);\r
-               string++;\r
-       }\r
-       table_number = table_number << ERRCODE_RANGE;\r
-}\r
-\r
-void set_table_fun(char *astring)\r
-{\r
-    register char *tp;\r
-    unsigned int tc;\r
-\r
-    for(tp=astring; (tc = *tp) != 0; tp++) {\r
-        if (!isdigit(tc)) {\r
-            fprintf(stderr, "Table function '%s' must be a decimal integer.\n",\r
-                    astring);\r
-            exit(1);\r
-        }\r
-    }\r
-    if (msfile) \r
-       table_number += (atoi(astring)) << 28;\r
-}\r
-\r
-/* for compatibility with old comerr's, we truncate package name to 4\r
- * characters, but only store first 3 in the error code.  Note that this\r
- * function, as a side effect, truncates the table name down to 4 chars.\r
- */\r
-void set_table_1num(char *string)\r
-{\r
-        afs_int32 temp;\r
-        int ctr;\r
-\r
-        if ((temp = strlen(string)) > 4) {\r
-                fprintf(stderr, "Table name %s too long, truncated ",\r
-                        string);\r
-                string[4] = '\0';\r
-                fprintf(stderr, "to %s\n", string);\r
-        }\r
-        if (temp == 4) {\r
-            fprintf(stderr, "Table name %s too long, only 3 characters fit in error code.\n",\r
-                    string);\r
-        }\r
-        if (char_to_1num (string[0]) > char_to_1num ('z')) {\r
-                fprintf (stderr, "%s%s%s%s",\r
-                         "First character of error table name must be ",\r
-                         "a letter; name ``",\r
-                         string, "'' rejected\n");\r
-                exit (1);\r
-        }\r
-        temp = 0;\r
-        for(ctr=0; ctr < 3; ctr++) {            /* copy at most 3 chars to integer */\r
-            if (*string == '\0') break;         /* and watch for early end */\r
-            temp = (temp * 050)                 /* "radix fifty" is base 050 = 40 */\r
-                + char_to_1num(*string);\r
-            string++;\r
-        }\r
-        table_number += temp << 12;\r
-}\r
-\r
-/*\r
- * char_to_num -- maps letters and numbers into very small space\r
- *      0-9        -> 0-9\r
- *      mixed case -> 10-35\r
- *      _          -> 36\r
- *      others are reserved\r
- */\r
-\r
-static const char char_1set[] =\r
-        "abcdefghijklmnopqrstuvwxyz_0123456789";\r
-\r
-int char_to_1num(char c)\r
-{\r
-        const char *where;\r
-        int diff;\r
-\r
-        if (isupper(c)) c = tolower(c);\r
-\r
-        where = strchr (char_1set, c);\r
-        if (where) {\r
-                /* start at 1 so we can decode */\r
-                diff = where - char_1set;\r
-                assert (diff < 050);    /* it is radix 50, after all */\r
-                return diff;\r
-        }\r
-        else if (isprint (c))\r
-                fprintf (stderr,\r
-                         "Illegal character `%c' in error table name\n",\r
-                         c);\r
-        else\r
-                fprintf (stderr,\r
-                         "Illegal character %03o in error table name\n",\r
-                         c);\r
-        exit (1);\r
-}\r
-\r
-#ifdef AFS_NT40_ENV\r
-#include "et_lex.lex_nt.c"\r
-#else\r
-#include "et_lex.lex.c"\r
-#endif\r
+#include <afs/param.h>
+
+RCSID("$Header$");
+
+
+/*
+ * If __STDC__ is defined, function prototypes in the SunOS 5.5.1 lex
+ * and yacc templates are visible.  We turn this on explicitly on
+ * NT because the prototypes help supress certain warning from the
+ * Microsoft C compiler.
+ */
+
+#ifdef AFS_NT40_ENV
+#include <malloc.h>
+# ifndef __STDC__
+#  define __STDC__ 1
+# endif
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "internal.h"
+
+char *current_token = (char *)NULL;
+extern char *table_name;
+
+char *ds(const char *string);
+char *quote(const char *string);
+void set_table_1num(char *string);
+int char_to_1num(char c);
+void add_ec(const char *name, const char *description);
+void add_ec_val(const char *name, const char *val, const char *description);
+void put_ecs(void);
+void set_table_num(char *string);
+void set_table_fun(char *astring);
+
+
+#line 38 "error_table.y"
+typedef union {
+       char *dynstr;
+} YYSTYPE;
+#line 45 "error_table.y"
+
+
+#ifndef YYLTYPE
+typedef
+  struct yyltype
+    {
+      int timestamp;
+      int first_line;
+      int first_column;
+      int last_line;
+      int last_column;
+      char *text;
+   }
+  yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define        YYFINAL         24
+#define        YYFLAG          -32768
+#define        YYNTBASE        10
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 262 ? yytranslate[x] : 18)
+
+static const char yytranslate[] = {     0,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     8,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     9,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
+     6,     7
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = {     0,
+     0,     5,     8,    10,    12,    14,    17,    19,    24,    31,
+    33
+};
+
+static const short yyrhs[] = {     3,
+    11,    14,     5,     0,    12,    13,     0,    13,     0,     6,
+     0,     6,     0,    14,    15,     0,    15,     0,     4,    16,
+     8,    17,     0,     4,    16,     9,     6,     8,    17,     0,
+     6,     0,     7,     0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+    50,    56,    59,    66,    73,    79,    80,    83,    87,    95,
+   100
+};
+
+static const char * const yytname[] = {   "$","error","$undefined.","ERROR_TABLE",
+"ERROR_CODE_ENTRY","END","STRING","QUOTED_STRING","','","'='","error_table",
+"header","table_fun","table_id","error_codes","ec_entry","ec_name","description",
+""
+};
+#endif
+
+static const short yyr1[] = {     0,
+    10,    11,    11,    12,    13,    14,    14,    15,    15,    16,
+    17
+};
+
+static const short yyr2[] = {     0,
+     4,     2,     1,     1,     1,     2,     1,     4,     6,     1,
+     1
+};
+
+static const short yydefact[] = {     0,
+     0,     4,     0,     0,     3,     0,     0,     7,     5,     2,
+    10,     0,     1,     6,     0,     0,    11,     8,     0,     0,
+     9,     0,     0,     0
+};
+
+static const short yydefgoto[] = {    22,
+     3,     4,     5,     7,     8,    12,    18
+};
+
+static const short yypact[] = {     1,
+    -1,     2,     3,     4,-32768,     5,    -4,-32768,-32768,-32768,
+-32768,    -6,-32768,-32768,     6,     8,-32768,-32768,     0,     6,
+-32768,     9,    12,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,-32768,    11,-32768,    10,-32768,    -2
+};
+
+
+#define        YYLAST          18
+
+
+static const short yytable[] = {     6,
+    13,    15,    16,     1,     2,    -5,     6,    20,    23,     9,
+    11,    24,    17,    19,    10,     0,    14,    21
+};
+
+static const short yycheck[] = {     4,
+     5,     8,     9,     3,     6,     4,     4,     8,     0,     6,
+     6,     0,     7,     6,     4,    -1,     7,    20
+};
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "bison.simple"
+
+/* Skeleton output parser for bison,
+   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C.  */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc.  */
+#endif /* not GNU C.  */
+#endif /* alloca not defined.  */
+
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+/* Note: there must be only one dollar sign in this file.
+   It is replaced by the list of actions, each action
+   as one case of the switch.  */
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                -2
+#define YYEOF          0
+#define YYACCEPT       return(0)
+#define YYABORT        return(1)
+#define YYERROR                goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+   This remains here temporarily to ease the
+   transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+#define YYFAIL         goto yyerrlab
+#define YYRECOVERING()  (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    { yychar = (token), yylval = (value);                      \
+      yychar1 = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
+while (0)
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+#ifndef YYPURE
+#define YYLEX          yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX          yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX          yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX          yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int    yychar;                 /*  the lookahead symbol                */
+YYSTYPE        yylval;                 /*  the semantic value of the           */
+                               /*  lookahead symbol                    */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc;                        /*  location data for the lookahead     */
+                               /*  symbol                              */
+#endif
+
+int yynerrs;                   /*  number of parse errors so far       */
+#endif  /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug;                   /*  nonzero means print parse trace     */
+/* Since this is uninitialized, it does not stop multiple parsers
+   from coexisting.  */
+#endif
+
+/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
+
+#ifndef        YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/*  YYMAXDEPTH is the maximum size the stacks can grow to
+    (effective only if the built-in stack extension method is used).  */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+\f
+#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
+#define __yy_memcpy(FROM,TO,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
+#else                          /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void
+__yy_memcpy (from, to, count)
+     char *from;
+     char *to;
+     int count;
+{
+  register char *f = from;
+  register char *t = to;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void
+__yy_memcpy (char *from, char *to, int count)
+{
+  register char *f = from;
+  register char *t = to;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
+#endif
+#endif
+\f
+#line 192 "bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+   into yyparse.  The argument should have type void *.
+   It should actually point to an object.
+   Grammar actions can access the variable by casting it
+   to the proper pointer type.  */
+
+#ifdef YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#else
+#define YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#endif
+
+int
+yyparse(YYPARSE_PARAM)
+     YYPARSE_PARAM_DECL
+{
+  register int yystate;
+  register int yyn;
+  register short *yyssp;
+  register YYSTYPE *yyvsp;
+  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
+  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
+
+  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
+  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
+
+  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
+  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
+  YYLTYPE *yyls = yylsa;
+  YYLTYPE *yylsp;
+
+#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+#endif
+
+  int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+  int yychar;
+  YYSTYPE yylval;
+  int yynerrs;
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylloc;
+#endif
+#endif
+
+  YYSTYPE yyval;               /*  the variable used to return         */
+                               /*  semantic values from the action     */
+                               /*  routines                            */
+
+  int yylen;
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Starting parse\n");
+#endif
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss - 1;
+  yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+  yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in  yystate  .  */
+/* In all cases, when you get here, the value and location stacks
+   have just been pushed. so pushing a state here evens the stacks.  */
+yynewstate:
+
+  *++yyssp = yystate;
+
+  if (yyssp >= yyss + yystacksize - 1)
+    {
+      /* Give user a chance to reallocate the stack */
+      /* Use copies of these so that the &'s don't force the real ones into memory. */
+      YYSTYPE *yyvs1 = yyvs;
+      short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+      YYLTYPE *yyls1 = yyls;
+#endif
+
+      /* Get the current used size of the three stacks, in elements.  */
+      int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      /* Each stack pointer address is followed by the size of
+        the data in use in that stack, in bytes.  */
+#ifdef YYLSP_NEEDED
+      /* This used to be a conditional around just the two extra args,
+        but that might be undefined if yyoverflow is a macro.  */
+      yyoverflow("parser stack overflow",
+                &yyss1, size * sizeof (*yyssp),
+                &yyvs1, size * sizeof (*yyvsp),
+                &yyls1, size * sizeof (*yylsp),
+                &yystacksize);
+#else
+      yyoverflow("parser stack overflow",
+                &yyss1, size * sizeof (*yyssp),
+                &yyvs1, size * sizeof (*yyvsp),
+                &yystacksize);
+#endif
+
+      yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+      yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+      /* Extend the stack our own way.  */
+      if (yystacksize >= YYMAXDEPTH)
+       {
+         yyerror("parser stack overflow");
+         return 2;
+       }
+      yystacksize *= 2;
+      if (yystacksize > YYMAXDEPTH)
+       yystacksize = YYMAXDEPTH;
+      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + size - 1;
+      yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+      yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+      if (yydebug)
+       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+      if (yyssp >= yyss + yystacksize - 1)
+       YYABORT;
+    }
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+  goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a lookahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yydefault;
+
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* yychar is either YYEMPTY or YYEOF
+     or a valid token in external form.  */
+
+  if (yychar == YYEMPTY)
+    {
+#if YYDEBUG != 0
+      if (yydebug)
+       fprintf(stderr, "Reading a token: ");
+#endif
+      yychar = YYLEX;
+    }
+
+  /* Convert token to internal form (in yychar1) for indexing tables with */
+
+  if (yychar <= 0)             /* This means end of input. */
+    {
+      yychar1 = 0;
+      yychar = YYEOF;          /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+      if (yydebug)
+       fprintf(stderr, "Now at end of input.\n");
+#endif
+    }
+  else
+    {
+      yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+      if (yydebug)
+       {
+         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+         /* Give the individual parser a way to print the precise meaning
+            of a token, for further debugging info.  */
+#ifdef YYPRINT
+         YYPRINT (stderr, yychar, yylval);
+#endif
+         fprintf (stderr, ")\n");
+       }
+#endif
+    }
+
+  yyn += yychar1;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+    goto yydefault;
+
+  yyn = yytable[yyn];
+
+  /* yyn is what to do for this token type in this state.
+     Negative => reduce, -yyn is rule number.
+     Positive => shift, yyn is new state.
+       New state is final state => don't bother to shift,
+       just return success.
+     0, or most negative number => error.  */
+
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrlab;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the lookahead token.  */
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  /* count tokens shifted since error; after three, turn off error status.  */
+  if (yyerrstatus) yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+/* Do the default action for the current state.  */
+yydefault:
+
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+
+/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+yyreduce:
+  yylen = yyr2[yyn];
+  if (yylen > 0)
+    yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      int i;
+
+      fprintf (stderr, "Reducing via rule %d (line %d), ",
+              yyn, yyrline[yyn]);
+
+      /* Print the symbols being reduced, and their result.  */
+      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+       fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+    }
+#endif
+
+
+  switch (yyn) {
+
+case 1:
+#line 51 "error_table.y"
+{ table_name = ds(yyvsp[-2].dynstr);
+                         current_token = table_name;
+                         put_ecs(); ;
+    break;}
+case 2:
+#line 57 "error_table.y"
+{ current_token = yyvsp[-1].dynstr;
+                          yyval.dynstr = yyvsp[0].dynstr; ;
+    break;}
+case 3:
+#line 60 "error_table.y"
+{ current_token = yyvsp[0].dynstr;
+                          set_table_fun(ds("1"));
+                          yyval.dynstr = yyvsp[0].dynstr;
+                        ;
+    break;}
+case 4:
+#line 67 "error_table.y"
+{ current_token = yyvsp[0].dynstr;
+                          set_table_fun(yyvsp[0].dynstr);
+                          yyval.dynstr = yyvsp[0].dynstr; ;
+    break;}
+case 5:
+#line 74 "error_table.y"
+{ current_token = yyvsp[0].dynstr;
+                         set_table_num(yyvsp[0].dynstr);
+                         yyval.dynstr = yyvsp[0].dynstr; ;
+    break;}
+case 8:
+#line 84 "error_table.y"
+{ add_ec(yyvsp[-2].dynstr, yyvsp[0].dynstr);
+                         free(yyvsp[-2].dynstr);
+                         free(yyvsp[0].dynstr); ;
+    break;}
+case 9:
+#line 88 "error_table.y"
+{ add_ec_val(yyvsp[-4].dynstr, yyvsp[-2].dynstr, yyvsp[0].dynstr);
+                         free(yyvsp[-4].dynstr);
+                         free(yyvsp[-2].dynstr);
+                         free(yyvsp[0].dynstr);
+                       ;
+    break;}
+case 10:
+#line 96 "error_table.y"
+{ yyval.dynstr = ds(yyvsp[0].dynstr);
+                         current_token = yyval.dynstr; ;
+    break;}
+case 11:
+#line 101 "error_table.y"
+{ yyval.dynstr = ds(yyvsp[0].dynstr);
+                         current_token = yyval.dynstr; ;
+    break;}
+}
+   /* the action file gets copied in in place of this dollarsign */
+#line 487 "bison.simple"
+\f
+  yyvsp -= yylen;
+  yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+  yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "state stack now");
+      while (ssp1 != yyssp)
+       fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
+
+  *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+  yylsp++;
+  if (yylen == 0)
+    {
+      yylsp->first_line = yylloc.first_line;
+      yylsp->first_column = yylloc.first_column;
+      yylsp->last_line = (yylsp-1)->last_line;
+      yylsp->last_column = (yylsp-1)->last_column;
+      yylsp->text = 0;
+    }
+  else
+    {
+      yylsp->last_line = (yylsp+yylen-1)->last_line;
+      yylsp->last_column = (yylsp+yylen-1)->last_column;
+    }
+#endif
+
+  /* Now "shift" the result of the reduction.
+     Determine what state that goes to,
+     based on the state we popped back to
+     and the rule number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTBASE];
+
+  goto yynewstate;
+
+yyerrlab:   /* here on detecting error */
+
+  if (! yyerrstatus)
+    /* If not already recovering from an error, report this error.  */
+    {
+      ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (yyn > YYFLAG && yyn < YYLAST)
+       {
+         int size = 0;
+         char *msg;
+         int x, count;
+
+         count = 0;
+         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
+         for (x = (yyn < 0 ? -yyn : 0);
+              x < (sizeof(yytname) / sizeof(char *)); x++)
+           if (yycheck[x + yyn] == x)
+             size += strlen(yytname[x]) + 15, count++;
+         msg = (char *) malloc(size + 15);
+         if (msg != 0)
+           {
+             strcpy(msg, "parse error");
+
+             if (count < 5)
+               {
+                 count = 0;
+                 for (x = (yyn < 0 ? -yyn : 0);
+                      x < (sizeof(yytname) / sizeof(char *)); x++)
+                   if (yycheck[x + yyn] == x)
+                     {
+                       strcat(msg, count == 0 ? ", expecting `" : " or `");
+                       strcat(msg, yytname[x]);
+                       strcat(msg, "'");
+                       count++;
+                     }
+               }
+             yyerror(msg);
+             free(msg);
+           }
+         else
+           yyerror ("parse error; also virtual memory exceeded");
+       }
+      else
+#endif /* YYERROR_VERBOSE */
+       yyerror("parse error");
+    }
+
+  goto yyerrlab1;
+yyerrlab1:   /* here on error raised explicitly by an action */
+
+  if (yyerrstatus == 3)
+    {
+      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+
+      /* return failure if at end of input */
+      if (yychar == YYEOF)
+       YYABORT;
+
+#if YYDEBUG != 0
+      if (yydebug)
+       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+      yychar = YYEMPTY;
+    }
+
+  /* Else will try to reuse lookahead token
+     after shifting the error token.  */
+
+  yyerrstatus = 3;             /* Each real token shifted decrements this */
+
+  goto yyerrhandle;
+
+yyerrdefault:  /* current state does not do anything special for the error token. */
+
+#if 0
+  /* This is wrong; only states that explicitly want error tokens
+     should shift them.  */
+  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
+  if (yyn) goto yydefault;
+#endif
+
+yyerrpop:   /* pop the current state because it cannot handle the error token */
+
+  if (yyssp == yyss) YYABORT;
+  yyvsp--;
+  yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+  yylsp--;
+#endif
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "Error: state stack now");
+      while (ssp1 != yyssp)
+       fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
+
+yyerrhandle:
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yyerrdefault;
+
+  yyn += YYTERROR;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+    goto yyerrdefault;
+
+  yyn = yytable[yyn];
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+       goto yyerrpop;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrpop;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting error token, ");
+#endif
+
+  *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  yystate = yyn;
+  goto yynewstate;
+}
+#line 105 "error_table.y"
+
+/*
+ *
+ * Copyright 1986, 1987 by the MIT Student Information Processing Board
+ *
+ * For copyright info, see mit-sipb-cr.h.
+ */
+#ifndef AFS_NT40_ENV
+#include <unistd.h>
+#endif
+#include <afs/param.h>
+#include <string.h>
+#include <assert.h>
+#include <ctype.h>
+#ifdef AFS_NT40_ENV
+#include <sys/types.h>
+#include <afs/afsutil.h>
+#else
+#include <sys/time.h>
+#endif
+#include <sys/timeb.h>
+#include "error_table.h"
+#include "mit-sipb-cr.h"
+#include <stdio.h>
+
+/* Copyright (C)  1998  Transarc Corporation.  All rights reserved.
+ *
+ */
+
+extern FILE *hfile, *cfile, *msfile;
+extern int use_msf;
+
+static afs_int32 gensym_n = 0;
+
+char *gensym(const char *x)
+{
+       char *symbol;
+       if (!gensym_n) {
+               struct timeval tv;
+               gettimeofday(&tv, (void *)0);
+               gensym_n = (tv.tv_sec%10000)*100 + tv.tv_usec/10000;
+       }
+       symbol = (char *)malloc(32 * sizeof(char));
+       gensym_n++;
+       sprintf(symbol, "et%ld", gensym_n);
+       return(symbol);
+}
+
+char *
+ds(const char *string)
+{
+       char *rv;
+       rv = (char *)malloc(strlen(string)+1);
+       strcpy(rv, string);
+       return(rv);
+}
+
+char *
+quote(const char *string)
+{
+       char *rv;
+       rv = (char *)malloc(strlen(string)+3);
+       strcpy(rv, "\"");
+       strcat(rv, string);
+       strcat(rv, "\"");
+       return(rv);
+}
+
+afs_int32 table_number = 0;
+int current = 0;
+char **error_codes = (char **)NULL;
+
+void add_ec(const char *name, const char *description)
+{
+        if (msfile) {
+            if (current > 0)
+#ifndef sun
+                fprintf(msfile, "%d\t%s\n", current, description);
+#else
+                fprintf(msfile, "%d %s\n", current, description);
+#endif /* !sun */
+        } else {
+           fprintf(cfile, "\t\"%s\",\n", description);
+       }
+       if (error_codes == (char **)NULL) {
+               error_codes = (char **)malloc(sizeof(char *));
+               *error_codes = (char *)NULL;
+       }
+       error_codes = (char **)realloc((char *)error_codes,
+                                      (current + 2)*sizeof(char *));
+       error_codes[current++] = ds(name);
+       error_codes[current] = (char *)NULL;
+}
+
+void add_ec_val(const char *name, const char *val, const char *description)
+{
+       const int ncurrent = atoi(val);
+       if (ncurrent < current) {
+               printf("Error code %s (%d) out of order", name,
+                      current);
+               return;
+       }
+      
+       while (ncurrent > current) {
+            if (!msfile)
+                fputs("\t(char *)NULL,\n", cfile);
+            current++;
+        }
+        if (msfile) {
+            if (current > 0)
+#ifndef sun
+                fprintf(msfile, "%d\t%s\n", current, description);
+#else
+                fprintf(msfile, "%d %s\n", current, description);
+#endif /* ! sun */
+        } else {       
+           fprintf(cfile, "\t\"%s\",\n", description);
+       }
+       if (error_codes == (char **)NULL) {
+               error_codes = (char **)malloc(sizeof(char *));
+               *error_codes = (char *)NULL;
+       }
+       error_codes = (char **)realloc((char *)error_codes,
+                                      (current + 2)*sizeof(char *));
+       error_codes[current++] = ds(name);
+       error_codes[current] = (char *)NULL;
+} 
+
+void put_ecs(void)
+{
+       int i;
+       for (i = 0; i < current; i++) {
+            if (error_codes[i] != (char *)NULL)
+                 fprintf(hfile, "#define %-40s (%ldL)\n",
+                         error_codes[i], table_number + i);
+       }
+}
+
+/*
+ * char_to_num -- maps letters and numbers into a small numbering space
+ *     uppercase ->  1-26
+ *     lowercase -> 27-52
+ *     digits    -> 53-62
+ *     underscore-> 63
+ */
+
+static const char char_set[] =
+       "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
+
+int char_to_num(char c)
+{
+       const char *where;
+       int diff;
+
+       where = strchr (char_set, c);
+       if (where) {
+               diff = where - char_set + 1;
+               assert (diff < (1 << ERRCODE_RANGE));
+               return diff;
+       }
+       else if (isprint (c))
+               fprintf (stderr,
+                        "Illegal character `%c' in error table name\n",
+                        c);
+       else
+               fprintf (stderr,
+                        "Illegal character %03o in error table name\n",
+                        c);
+       exit (1);
+}
+
+void set_table_num(char *string)
+{
+        if (msfile) {
+           set_table_1num(string);
+           return;
+       }
+       if (strlen(string) > 4) {
+               fprintf(stderr, "Table name %s too long, truncated ",
+                       string);
+               string[4] = '\0';
+               fprintf(stderr, "to %s\n", string);
+       }
+       if (char_to_num (string[0]) > char_to_num ('z')) {
+               fprintf (stderr, "%s%s%s%s",
+                        "First character of error table name must be ",
+                        "a letter; name ``",
+                        string, "'' rejected\n");
+               exit (1);
+       }
+       while (*string != '\0') {
+               table_number = (table_number << BITS_PER_CHAR)
+                       + char_to_num(*string);
+               string++;
+       }
+       table_number = table_number << ERRCODE_RANGE;
+}
+
+void set_table_fun(char *astring)
+{
+    register char *tp;
+    unsigned int tc;
+
+    for(tp=astring; (tc = *tp) != 0; tp++) {
+        if (!isdigit(tc)) {
+            fprintf(stderr, "Table function '%s' must be a decimal integer.\n",
+                    astring);
+            exit(1);
+        }
+    }
+    if (msfile) 
+       table_number += (atoi(astring)) << 28;
+}
+
+/* for compatibility with old comerr's, we truncate package name to 4
+ * characters, but only store first 3 in the error code.  Note that this
+ * function, as a side effect, truncates the table name down to 4 chars.
+ */
+void set_table_1num(char *string)
+{
+        afs_int32 temp;
+        int ctr;
+
+        if ((temp = strlen(string)) > 4) {
+                fprintf(stderr, "Table name %s too long, truncated ",
+                        string);
+                string[4] = '\0';
+                fprintf(stderr, "to %s\n", string);
+        }
+        if (temp == 4) {
+            fprintf(stderr, "Table name %s too long, only 3 characters fit in error code.\n",
+                    string);
+        }
+        if (char_to_1num (string[0]) > char_to_1num ('z')) {
+                fprintf (stderr, "%s%s%s%s",
+                         "First character of error table name must be ",
+                         "a letter; name ``",
+                         string, "'' rejected\n");
+                exit (1);
+        }
+        temp = 0;
+        for(ctr=0; ctr < 3; ctr++) {            /* copy at most 3 chars to integer */
+            if (*string == '\0') break;         /* and watch for early end */
+            temp = (temp * 050)                 /* "radix fifty" is base 050 = 40 */
+                + char_to_1num(*string);
+            string++;
+        }
+        table_number += temp << 12;
+}
+
+/*
+ * char_to_num -- maps letters and numbers into very small space
+ *      0-9        -> 0-9
+ *      mixed case -> 10-35
+ *      _          -> 36
+ *      others are reserved
+ */
+
+static const char char_1set[] =
+        "abcdefghijklmnopqrstuvwxyz_0123456789";
+
+int char_to_1num(char c)
+{
+        const char *where;
+        int diff;
+
+        if (isupper(c)) c = tolower(c);
+
+        where = strchr (char_1set, c);
+        if (where) {
+                /* start at 1 so we can decode */
+                diff = where - char_1set;
+                assert (diff < 050);    /* it is radix 50, after all */
+                return diff;
+        }
+        else if (isprint (c))
+                fprintf (stderr,
+                         "Illegal character `%c' in error table name\n",
+                         c);
+        else
+                fprintf (stderr,
+                         "Illegal character %03o in error table name\n",
+                         c);
+        exit (1);
+}
+
+#ifdef AFS_NT40_ENV
+#include "et_lex.lex_nt.c"
+#else
+#include "et_lex.lex.c"
+#endif
index 58c1788..44810be 100644 (file)
@@ -27,18 +27,18 @@ main()
 
        printf("With 0: tgt-expired -> %s\n", error_message(KRB_MK_AP_TGTEXP));
 
-       initialize_krb_error_table();
-       initialize_krb_error_table();
+       initialize_KRB_error_table();
+       initialize_KRB_error_table();
        printf("KRB error table initialized:  base %d (%s), name %s\n",
-              ERROR_TABLE_BASE_krb, error_message(ERROR_TABLE_BASE_krb),
-              error_table_name(ERROR_TABLE_BASE_krb));
+              ERROR_TABLE_BASE_KRB, error_message(ERROR_TABLE_BASE_KRB),
+              error_table_name(ERROR_TABLE_BASE_KRB));
        printf("With krb: tgt-expired -> %s\n",
               error_message(KRB_MK_AP_TGTEXP));
 
-       initialize_quux_error_table();
+       initialize_QUUX_error_table();
        printf("QUUX error table initialized: base %d (%s), name %s\n",
-              ERROR_TABLE_BASE_quux, error_message(ERROR_TABLE_BASE_quux),
-              error_table_name(ERROR_TABLE_BASE_quux));
+              ERROR_TABLE_BASE_QUUX, error_message(ERROR_TABLE_BASE_QUUX),
+              error_table_name(ERROR_TABLE_BASE_QUUX));
 
        printf("Msg for TGT-expired is '%s'\n",
               error_message(KRB_MK_AP_TGTEXP));
index 4c7b77f..b66a4e9 100644 (file)
@@ -1,4 +1,4 @@
-       error_table     krb
+       error_table     KRB
 
        error_code      KRB_MK_AP_TKFIL,
                        "Can't read ticket file"
index 55ad74e..549e14c 100644 (file)
@@ -1,4 +1,4 @@
-       error_table     quux
+       error_table     QUUX
 
        ec      FOO_ERR, "foo"
 
index 7354d44..a5bb28b 100644 (file)
@@ -400,9 +400,9 @@ main (argc, argv)
     zero_argc = argc;
     zero_argv = argv;
 
-    initialize_u_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
+    initialize_U_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
 
     ts = cmd_CreateSyntax((char *) 0, CommandProc, 0, "obtain Kerberos authentication");
 
index 6ea5da4..7340170 100644 (file)
@@ -55,16 +55,16 @@ main (argc, argv)
     nsa.sa_flags = SA_FULLDUMP;
     sigaction(SIGSEGV, &nsa, NULL);
 #endif
-    initialize_ka_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
-    initialize_cmd_error_table();
-    initialize_vl_error_table();
-    initialize_pt_error_table();
-    initialize_bz_error_table();
-    initialize_u_error_table();
-    initialize_vols_error_table();
+    initialize_KA_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
+    initialize_CMD_error_table();
+    initialize_VL_error_table();
+    initialize_PT_error_table();
+    initialize_BZ_error_table();
+    initialize_U_error_table();
+    initialize_VOLS_error_table();
 
     if (argc < 2) {
        fprintf (stderr, "Usage is: %s [<code>]+\n", argv[0]);
index 1a29000..c16c3d5 100644 (file)
@@ -294,11 +294,11 @@ afs_int32 ka_Init(int flags)                      /* reserved for future use. */
        return 0;
     }
     inited++;
-    initialize_u_error_table();
-    initialize_ka_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
+    initialize_U_error_table();
+    initialize_KA_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
     code = ka_CellConfig (AFSDIR_CLIENT_ETC_DIRPATH);
     UNLOCK_GLOBAL_MUTEX
 
index 7fec697..22f5257 100644 (file)
@@ -35,8 +35,8 @@ int main (
     char bob[KA_TIMESTR_LEN];
 
     whoami = argv[0];
-    initialize_rxk_error_table();
-    initialize_ka_error_table();
+    initialize_RXK_error_table();
+    initialize_KA_error_table();
 
     if (argc != 3) {
        printf ("Usage is %s key ticket\n", whoami);
index 1051410..910dac9 100644 (file)
@@ -12,7 +12,7 @@
 # NOTE: KANOAUTH value is hardcoded in audit/audit.h, so if you make
 # changes here, make sure that audit/audit.h is kept up to date.
 
-error_table ka
+error_table KA
        ec KADATABASEINCONSISTENT, "AuthServer database is inconsistent"
        ec KAEXIST, "user already exists"
        ec KAIO, "Ubik I/O error"
index 076a22b..b769419 100644 (file)
@@ -59,11 +59,11 @@ int main (
     sigaction(SIGABRT, &nsa, NULL);
     sigaction(SIGSEGV, &nsa, NULL);
 #endif
-    initialize_cmd_error_table();
-    initialize_ktc_error_table();
-    initialize_ka_error_table();
-    initialize_acfg_error_table();
-    initialize_u_error_table();
+    initialize_CMD_error_table();
+    initialize_KTC_error_table();
+    initialize_KA_error_table();
+    initialize_ACFG_error_table();
+    initialize_U_error_table();
 
 #ifdef AFS_NT40_ENV
     /* initialize winsock */
index da3756c..717775f 100644 (file)
@@ -428,10 +428,10 @@ struct ka_getTicketAnswer {
     char ticket[MAXKTCTICKETLEN];
 };
 
-#ifndef ERROR_TABLE_BASE_ka
+#ifndef ERROR_TABLE_BASE_KA
 #define ka_ErrorString error_message
 #undef  KAMINERROR
-#define KAMINERROR ERROR_TABLE_BASE_ka
+#define KAMINERROR ERROR_TABLE_BASE_KA
 #define KAMAXERROR (KAMINERROR+255)
 #endif
 
index 454037d..fa71291 100644 (file)
@@ -472,12 +472,12 @@ int main(argc, argv)
     register struct cmd_syndesc *ts;
     long code;
 
-    initialize_u_error_table();
-    initialize_cmd_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
-    initialize_ka_error_table();
+    initialize_U_error_table();
+    initialize_CMD_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
+    initialize_KA_error_table();
 
     ts = cmd_CreateSyntax (0, Main, 0, "Main program");
     /* 0 */ cmd_AddParm (ts, "-patient", CMD_FLAG, CMD_OPTIONAL,
index 467dc8a..6ee1a74 100644 (file)
@@ -733,11 +733,11 @@ main (argc, argv)
     srandom (1);
 
     /* Initialize com_err error code hacking */
-    initialize_u_error_table();
-    initialize_ka_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
+    initialize_U_error_table();
+    initialize_KA_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
 
     /* set defaults */
     strcpy (cell, "");
index e99ea54..50d065c 100644 (file)
@@ -340,12 +340,12 @@ int main(argc, argv)
     register struct cmd_syndesc *ts;
     long code;
 
-    initialize_u_error_table();
-    initialize_cmd_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
-    initialize_ka_error_table();
+    initialize_U_error_table();
+    initialize_CMD_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
+    initialize_KA_error_table();
 
     ts = cmd_CreateSyntax (0, Main, 0, "Main program");
     /* 0 */ cmd_AddParm (ts, "-number", CMD_SINGLE, CMD_OPTIONAL,
index bbb11ab..1d4a554 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table ab
+error_table AB
         ec ADMBOSSERVERNAMENULL, "the bos server name cannot be NULL"
         ec ADMBOSSERVERHANDLEPNULL, "the bos server handle cannot be NULL"
         ec ADMBOSSERVERHANDLENULL, "the bos server handle cannot be NULL"
index 1ba3328..5872998 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table af
+error_table AF
        ec ADMCFGNOTSUPPORTED, "the specified configuration option is not yet supported"
        ec ADMCFGHOSTNAMENULL, "the host name parameter cannot be NULL"
        ec ADMCFGHOSTNAMETOOLONG, "the host name parameter exceeds the maximum allowed length"
index 98b2609..b76513f 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table al
+error_table AL
         ec ADMCLIENTCELLHANDLENULL, "the cell handle parameter cannot be NULL"
         ec ADMCLIENTCELLHANDLEPNULL, "the cell handle reference parameter cannot be NULL"
         ec ADMCLIENTCELLHANDLEBADMAGIC, "the server handle parameter failed to pass the magic number test.  Most likely the server handle is invalid, or has been overwritten by mistake."
index a20f420..1f54af6 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table ac
+error_table AC
     ec ADMNOMEM, "couldn't allocate memory necessary to fulfill request"
     ec ADMNOPRIV, "insufficient privilege to complete operation"
     ec ADMMUTEXINIT, "failed to initialize a mutex"
index bd1c6e5..d6fdce3 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table ak
+error_table AK
         ec ADMKASSERVERHANDLENULL, "the server handle parameter cannot be NULL"
         ec ADMKASSERVERHANDLEBADMAGIC, "the server handle parameter failed to pass the magic number test.  Most likely the server handle is invalid, or has been overwritten by mistake."
         ec ADMKASSERVERHANDLENOTVALID, "the server handle parameter is marked invalid"
index 9dd9a4a..2dcb393 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table am
+error_table AM
         ec ADMMISCDIRECTORYNULL, "the directory parameter cannot be NULL."
         ec ADMMISCUSERNULL, "the user parameter cannot be NULL."
         ec ADMMISCACLNULL, "the acl parameter cannot be NULL."
index c751e28..72a1dcd 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table ap
+error_table AP
         ec ADMPTSSERVERNULL, "the protection server parameter cannot be NULL"
         ec ADMPTSUSERNAMENULL, "the user name parameter cannot be NULL"
         ec ADMPTSUSERNAMETOOLONG, "the user name parameter is too long"
index d139ecc..e60c2e5 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table au
+error_table AU
     ec ADMUTILSERVERENTRYPNULL, "the server entry parameter cannot be NULL"
     ec ADMUTILSERVERNAMENULL, "the server name parameter cannot be NULL"
     ec ADMUTILSERVERADDRESSNULL, "the server address parameter cannot be NULL"
index 0e560c1..158688a 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table av
+error_table AV
         ec ADMVOSSERVERNULL, "the volume server parameter cannot be NULL"
         ec ADMVOSCELLHANDLENULL, "the cell handle parameter cannot be NULL"
         ec ADMVOSCELLHANDLEBADMAGIC, "the cell handle parameter failed to pass the magic number test.  Most likely the cell handle is invalid, or has been overwritten by mistake."
index ef7b070..efbfa9e 100644 (file)
@@ -59,25 +59,25 @@ static int error_init_done;
 
 static void init_once(void) {
 
-    initialize_ka_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
-    initialize_cmd_error_table();
-    initialize_vl_error_table();
-    initialize_pt_error_table();
-    initialize_bz_error_table();
-    initialize_u_error_table();
-    initialize_ab_error_table();
-    initialize_af_error_table();
-    initialize_al_error_table();
-    initialize_ac_error_table();
-    initialize_ak_error_table();
-    initialize_am_error_table();
-    initialize_ap_error_table();
-    initialize_au_error_table();
-    initialize_av_error_table();
-    initialize_vols_error_table();
+    initialize_KA_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
+    initialize_CMD_error_table();
+    initialize_VL_error_table();
+    initialize_PT_error_table();
+    initialize_BZ_error_table();
+    initialize_U_error_table();
+    initialize_AB_error_table();
+    initialize_AF_error_table();
+    initialize_AL_error_table();
+    initialize_AC_error_table();
+    initialize_AK_error_table();
+    initialize_AM_error_table();
+    initialize_AP_error_table();
+    initialize_AU_error_table();
+    initialize_AV_error_table();
+    initialize_VOLS_error_table();
     error_init_done = 1;
 }
 
index ca74bd3..3bb55b0 100644 (file)
@@ -338,7 +338,7 @@ main(argc, argv)
     /*
      * Set up the appropriate error tables.
      */
-    initialize_cmd_error_table();
+    initialize_CMD_error_table();
 
     /*
      * Parse command line switches & execute the command, then get the
index cb365a2..bf9eb2d 100644 (file)
@@ -147,7 +147,7 @@ ubik.o: ubik.c ${INCLS}
 
 prerror.h: pterror.h
        ${INSTALL} $? $@
-       echo '#define ERROR_TABLE_BASE_pr ERROR_TABLE_BASE_pt' >> $@
+       echo '#define ERROR_TABLE_BASE_pr ERROR_TABLE_BASE_PT' >> $@
 
 #
 # Installation targets
index 7c9d2bf..02ea656 100644 (file)
@@ -51,7 +51,7 @@ PTSERVER_EXEOBJS =\
        ptprocs.obj \
        utils.obj \
        ptserver.res
-       
+
 
 PTSERVER_EXELIBS =\
        $(DESTDIR)\lib\afsubik.lib \
@@ -163,7 +163,7 @@ $(INCFILEDIR)\afs\prerror.h: $(INCFILEDIR)\afs\pterror.h
 
 $(INCFILEDIR)\afs\prclient.h: $(INCFILEDIR)\afs\ptclient.h
        $(COPY) $(INCFILEDIR)\afs\ptclient.h $(INCFILEDIR)\afs\prclient.h
-       $(ECHO) #define ERROR_TABLE_BASE_pr ERROR_TABLE_BASE_pt >> $(INCFILEDIR)\afs\prclient.h
+       $(ECHO) #define ERROR_TABLE_BASE_pr ERROR_TABLE_BASE_PT >> $(INCFILEDIR)\afs\prclient.h
 
 ############################################################################
 # clean up
@@ -180,7 +180,7 @@ TEST_LIBS = $(PTS_EXELIBS)
 
 readgroup.exe: readgroup.obj $(LIBFILE) $(TEST_LIBS)
        $(EXECONLINK)
-       
+
 readpwd.exe: readpwd.obj $(LIBFILE) $(TEST_LIBS)
        $(EXECONLINK)
 
index 666df82..3bddbe6 100644 (file)
@@ -1044,8 +1044,8 @@ WorkerBee (as, arock)
     char *recreateFile;
     struct misc_data misc;             /* info & statistics */
 
-    initialize_pt_error_table();
-    initialize_u_error_table();
+    initialize_PT_error_table();
+    initialize_U_error_table();
     
     pr_dbaseName = AFSDIR_SERVER_PRDB_FILEPATH;
     memset(&misc, 0, sizeof(misc));
index 3b709b0..8a5cae4 100644 (file)
@@ -193,7 +193,7 @@ char **argv;
     }
 
     Initdb();
-    initialize_pt_error_table();
+    initialize_PT_error_table();
 
     if (wflag) {
        struct usr_list *u;
index e05639e..7311c2d 100644 (file)
@@ -184,7 +184,7 @@ char **argv;
 #endif
     whoami = argv[0];
 
-    initialize_pt_error_table();
+    initialize_PT_error_table();
 
     strcpy(confdir, AFSDIR_CLIENT_ETC_DIRPATH);
     cell = 0;
index 8fa8cb6..c1537bc 100644 (file)
@@ -12,7 +12,7 @@
 # NOTE: PRPERM value is hardcoded in audit/audit.h, so if you make
 # changes here, make sure that audit/audit.h is kept up to date.
 
-error_table pt
+error_table PT
        ec PREXIST, "Entry for name already exists"
        ec PRIDEXIST, "Entry for id already exists"
        ec PRNOIDS, "Couldn't allocate an id for this entry"
index 0d4b6b5..cea872b 100644 (file)
@@ -71,14 +71,10 @@ afs_int32 pr_Initialize (secLevel, confDir, cell)
     afs_int32 i;
     char cellstr[64];
 
-    initialize_pt_error_table();
-    initialize_rxk_error_table();
-    initialize_acfg_error_table();
-    initialize_ktc_error_table();
-/*
-    initialize_lwp_error_table();
-    initialize_rx_error_table();
-*/
+    initialize_PT_error_table();
+    initialize_RXK_error_table();
+    initialize_ACFG_error_table();
+    initialize_KTC_error_table();
 
     if (strcmp(confDir, tconfDir)) {
        /*
index 490eb43..1ba7e8d 100644 (file)
@@ -990,12 +990,12 @@ main (argc, argv)
     struct cmd_syndesc *ts;        /* ptr to parsed command line syntax */
 
     whoami = argv[0];
-    initialize_cmd_error_table();
-    initialize_acfg_error_table();
-    initialize_ktc_error_table();
-    initialize_u_error_table();
-    initialize_pt_error_table();
-    initialize_rxk_error_table();
+    initialize_CMD_error_table();
+    initialize_ACFG_error_table();
+    initialize_KTC_error_table();
+    initialize_U_error_table();
+    initialize_PT_error_table();
+    initialize_RXK_error_table();
 
 #ifdef AFS_NT40_ENV 
     /* initialize winsock */
index 349f74e..6d0133f 100644 (file)
@@ -880,7 +880,7 @@ PRIVATE void WriteCltTrailer(char *serverName, int first, int last, FILE *itl_h)
     fprintf(itl_h,
            "int main (int argc, char *argv[]) {\n"
            "\tint code;\n\n"
-           "\tinitialize_cmd_error_table();\n"
+           "\tinitialize_CMD_error_table();\n"
            "\tSetupRunCmd();\n"
            "\tcode = cmd_Dispatch(argc, argv);\n\n"
            "\treturn(code);\n"
@@ -1334,7 +1334,7 @@ PRIVATE void WriteServTrailer(FILE *srv_h) {
 
            "int main(int argc, char **argv) {\n"
            "\tint code;\n"
-           "\tinitialize_cmd_error_table();\n"
+           "\tinitialize_CMD_error_table();\n"
            "\tSetupRunCmd();\n"
            "\tcode = cmd_Dispatch(argc, argv);\n"
            "\treturn(code);\n"
index 32b2a5a..8199596 100644 (file)
@@ -10,7 +10,7 @@
 # NOTE: RXKADNOAUTH value is hardcoded in audit/audit.h, so if you make
 # changes here, make sure that audit/audit.h is kept up to date.
 
-error_table rxk
+error_table RXK
   ec RXKADINCONSISTENCY, "Security module structure inconsistent"
   ec RXKADPACKETSHORT, "Packet too short for security challenge"
   ec RXKADLEVELFAIL, "Security level negotiation failed"
index 3491765..8c4ff04 100644 (file)
@@ -265,9 +265,9 @@ void main (argc, argv)
 
     whoami = argv[0];
 
-    initialize_rxk_error_table();
-    initialize_rks_error_table();
-    initialize_cmd_error_table();
+    initialize_RXK_error_table();
+    initialize_RKS_error_table();
+    initialize_CMD_error_table();
 
     code = rx_Init (0);
     rx_SetRxDeadTime(120);
index 215b8bd..9947e8e 100644 (file)
@@ -5,7 +5,7 @@
 # License.  For details, see the LICENSE file in the top-level source
 # directory or online at http://www.openafs.org/dl/license10.html
 
-error_table rks
+error_table RKS
   ec RXKST_PROCESSCREATED, "process created, not yet started"
   ec RXKST_PROCESSRUNNING, "process running, no error"
   ec RXKST_BADARGS, "arguments illegal or inconsistent"
index 4c37f83..a413ba3 100644 (file)
@@ -216,7 +216,7 @@ int ubik_ServerInitCommon(myHost, myPort, info, clones, serverList, pathName, db
     extern void rx_ServerProc();
     extern int rx_stackSize;
 
-    initialize_u_error_table();
+    initialize_U_error_table();
 
     tdb = (struct ubik_dbase *) malloc(sizeof(struct ubik_dbase));
     tdb->pathName = (char *) malloc(strlen(pathName)+1);
index 6679c11..46198b3 100644 (file)
@@ -200,7 +200,7 @@ int ubik_ClientInit(
     int offset;
     register struct ubik_client *tc;
 
-    initialize_u_error_table();
+    initialize_U_error_table();
 
     if ( *aclient ) {  /* the application is doing a re-initialization*/
        LOCK_UBIK_CLIENT((*aclient))
index e62e69b..0daa4ad 100644 (file)
@@ -9,7 +9,7 @@
 
 # Ubik error table
 
-error_table u
+error_table U
        ec UNOQUORUM, "no quorum elected"
        ec UNOTSYNC, "not synchronization site (should work on sync site)"
        ec UNHOSTS, "too many hosts"
index 765cff6..4eb12ff 100644 (file)
@@ -1782,14 +1782,14 @@ void InitETTables()
      * In order to get error code -> error message translations to work,
      * we have to initialize all error tables.
      */
-    initialize_cmd_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_ka_error_table();
-    initialize_acfg_error_table();
-    initialize_vl_error_table();
-    initialize_pt_error_table();
-    initialize_u_error_table();
+    initialize_CMD_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_KA_error_table();
+    initialize_ACFG_error_table();
+    initialize_VL_error_table();
+    initialize_PT_error_table();
+    initialize_U_error_table();
 
 } /*InitETTables*/
 
index 7b1a71f..ea17b30 100644 (file)
@@ -10,7 +10,7 @@
 # NOTE: VL_PERM value is hardcoded in audit/audit.h, so if you make
 # changes here, make sure that audit/audit.h is kept up to date.
 
-error_table vl
+error_table VL
   ec VL_IDEXIST, "Volume Id entry exists in vl database"
   ec VL_IO, "I/O related error"
   ec VL_NAMEEXIST, "Volume name entry exists in vl database"
index 9de0f30..51df3e4 100644 (file)
@@ -39,12 +39,12 @@ char *s;
 void
 InitErrTabs()
 {
-    initialize_ka_error_table();
-    initialize_rxk_error_table();
-    initialize_ktc_error_table();
-    initialize_acfg_error_table();
-    initialize_cmd_error_table();
-    initialize_vl_error_table();
-    initialize_vols_error_table();
+    initialize_KA_error_table();
+    initialize_RXK_error_table();
+    initialize_KTC_error_table();
+    initialize_ACFG_error_table();
+    initialize_CMD_error_table();
+    initialize_VL_error_table();
+    initialize_VOLS_error_table();
     return;
 }
index 20299b9..16db9f0 100644 (file)
@@ -10,7 +10,7 @@
 # NOTE: VOLSERBAD_ACCESS value is hardcoded in audit/audit.h, so if you
 # make changes here, make sure that audit/audit.h is kept up to date.
 
-error_table vols
+error_table VOLS
        ec VOLSERTRELE_ERROR, "internal error releasing transaction"
        ec VOLSERNO_OP, "unknown internal error"
        ec VOLSERREAD_DUMPERROR, "badly formatted dump"
index 1c776d4..5e5a9c0 100644 (file)
@@ -232,12 +232,12 @@ PrintError(msg, errcode)
 
                afs_int32 offset;
 
-               initialize_ka_error_table();
-               initialize_rxk_error_table();
-               initialize_ktc_error_table();
-               initialize_acfg_error_table();
-               initialize_cmd_error_table();
-               initialize_vl_error_table();
+               initialize_KA_error_table();
+               initialize_RXK_error_table();
+               initialize_KTC_error_table();
+               initialize_ACFG_error_table();
+               initialize_CMD_error_table();
+               initialize_VL_error_table();
                
                offset = errcode & ((1<<ERRCODE_RANGE)-1);
                fprintf(STDERR,"%s: %s\n",error_table_name (errcode), error_message (errcode));