]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-comerr-behave-like-the-rest-of-the-world-20010918
authorDerrick Brashear <shadow@dementia.org>
Wed, 19 Sep 2001 23:40:17 +0000 (23:40 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 19 Sep 2001 23:40:17 +0000 (23:40 +0000)
make afs's comerr implementation behave like every other one (don't
monkey with the case of table names as provided)

change all source to work properly in light of these changes

(cherry picked from commit ddb518c786d81c1dc9535101824f1d9bf14ffcfd)

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 5970cb49ebb6366e493e3d4f238160696cdba992..1761a76fa08f98e1eefb0fab9d6034ee5626b0ab 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 4184bf84eb614d4274df59cf6dc8855adf9f359c..2f514783ea57a09d325a79d0bb5b3614b535a309 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 c8d95cbb361631cf823e7b11be383b79ee1fed4c..a02b96eafa73d44aefbf1e06454ee541745dc19c 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 276ae4a63fb46284c36743970e322589ece752f0..95855aff17da41483e5c3a85ee881d306b252b8f 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 ad4fc975147bf8bc948243dc91ba39b54b094b5f..42dd715470054ca8998b18c3d58bac3efd1df6ad 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 6ca9dc66a2405bab0a6d7e01a123717fec52f7ef..46bc9ba8af2e927a146831712221f843b3293e6c 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 22ab2896214d5d740e52a86a09fe47a1f19b6089..913f21e56ed9eaaeee15a6755229ef97bd53474e 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 2de18f8a79b1c635fe47fc855e65b30ea75fe948..510a852e865b8a11e440ca7f2f64c67d4d5c2c2f 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 e9bc6406e43a0172da32c5cbaf4c3fad1fbf53ee..12b30692f460f7435446e67eacbba82bc079fc57 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 9bc9701eed5dfeca888439f67f35d622f72d4d27..458bbcadaa758f5a1f410299898a29fc10711ef7 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 9c1d7cf1039e5a214e99526cb3695c5e26767a22..65bc6d65d56b2259850610d5f7be19240fdfe032 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 641edeb0d8ba6166c8d26584dc56db959db439c9..3e72fdb5d7151ad888b1f8e3516b6151354b8846 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 ea839a7a8366511b1fd7fe55387645c6f786158b..428e72d1ca885a6c64d7862d014da68b7351942a 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 098801066095c8842367974e4f4b8e8f735e7190..5e3bbbeafb2c950641c76d584f9309e954c15d84 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 85925853ecfcd26a1708633a11e8f250324b299d..b47490440586e7d92708b998f04dfaf9e6e9bab9 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 5e58764ac1c97183c6bd9ee12d3de417140c6ac6..6d64c3469c232276c2608ac43c459fc71e17a11a 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 1ef804d3b33becf5d010493e3ac0b1117189e40c..5744234f9427267d02a1a5f44e45b6ac8a3fd253 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 d50d0d97a71ca3067da284fb37ab5b1d646164a2..db5d084be6b5380323ee71b12db8e7d19108dbb4 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 2b971c8e3cc8e2663a648aa7c14e0eb988af629f..04b55445e0f161df5bc6cadcb73048213bb1a215 100644 (file)
@@ -71,7 +71,7 @@ main (argc, argv)
     /* -------------
      * General Setup 
      * ------------- */
-    initialize_butm_error_table();
+    initialize_BUTM_error_table();
 
     tapeInfo.structVersion = BUTM_MAJORVERSION;
 
index 59b9ffc4fea0e584103599e8633cface83628830..333f0e14cb79d3c402d39f426dfe1db561066a35 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 5b20ff6dd42285925fd712e65a3642b9b88e1cac..91834975ceb00fb26ae9b115c0d67bc5116c1aab 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 a75ecb085b102b50a1225e267a02b8203870d20b..3e3123d5ee1002328fa88a7bfb0606db7458f7e3 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 082d16167da5fa0acfccae2a18adfd162d4da266..b2915f4b00672d47cf79873e0216898018276b5b 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 67b79f8ede7c4ed6b1d301165707505aceff17bd..7fba9de16a3842a3239e917b4f0e69d61f2d6531 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 c657b75076d5b7b440ae206e92236242dfba9cfd..362d3b00b759efa8ac66800e3b9715aa84b5c03a 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 58c178826ce993b493cdfb684d7460041df87ea6..44810be310a9a960bb593b06ec8dd9d4ea2855db 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 4c7b77f0e25566531f339560e7ed34d8c29f50bb..b66a4e98b2776f27bacdd2b7d15e67dd03cc55c4 100644 (file)
@@ -1,4 +1,4 @@
-       error_table     krb
+       error_table     KRB
 
        error_code      KRB_MK_AP_TKFIL,
                        "Can't read ticket file"
index 55ad74ead07174a15dafdd8438aeaa0b83f6f308..549e14c829a11fa542e89d29f3d110c6b56395d1 100644 (file)
@@ -1,4 +1,4 @@
-       error_table     quux
+       error_table     QUUX
 
        ec      FOO_ERR, "foo"
 
index 7354d447fe07c7cd2f37fa3aa7636e3dcd100af4..a5bb28beae644d4cc13295677d46e16ae4f6abdc 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 6ea5da48c5fd8df1d34881d635da30ff583886fa..73401702fa5e1bb781e9bfb6573fb9944907af81 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 1a290005c6c31d591d8b4434c74959e0157d7b65..c16c3d54b71136000a7c845434c4871668566237 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 7fec6974da1641f3dd58d4651686239aa620b170..22f5257d75c74a50a41548d0786ad68089123fbf 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 1051410b69c72cdec3c9306d8c1841555baa9500..910dac92e82a976aa7384841daab99d2a61e8831 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 076a22b07eb9172994f0e04e83d913281b9f8ae2..b7694199fc7f752b0fd65b8f7dc2db9a876b19e6 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 da3756c97ddb3af15363089390e58251894f0131..717775f87b8002ae224f88caba233a9ffa3aac26 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 454037d392e0949bf836d13ecb5dbd2aae4b82e5..fa7129120b134dfe6e35d7ea3cab8614fc38f5bf 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 467dc8a82617b29244d6b4952d6ea7daaf888234..6ee1a7421de3ee1dee9af0943052b5c66160ac6d 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 e99ea54806ec2a1c56f7c478ab249d63dd0b8349..50d065ca2307e33f38fd41aaeecce59d637def01 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 bbb11ab7b8a26025e2400361fbaf0ff52dee0812..1d4a55466d27b4e8c4e49c269e70669375b3894f 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 1ba332802ec721903ea799d46c135e3074c0ccae..58729984bf9a2ab21416f4adce28cdb26164de89 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 98b2609b9d80d4cb70d2e9c504ca8ecde230fa9a..b76513f24b2a990bc5fde02eae161b527ab497be 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 a20f420a9ea1cd9406c6637a505e3a52b09fe4bc..1f54af665dbf1f988482135e55db759402dc9b6f 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 bd1c6e5e84f3fbf7fcfed21a7e743fe5c536cdf1..d6fdce39142b208e8ab07f250b4b530bc43b4339 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 9dd9a4a417cde1f3972fe879ee4e12cdb0ed0b78..2dcb393c58483950b61969198a6ea3c7f4f07ddb 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 c751e28992ab2301deb341a140c3405285facb36..72a1dcdb8d42b1676d39ac73b9e46d236d2312a7 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 d139eccbe2964823d32f05cbd051cff76a607bc2..e60c2e5ea43b211976279e27de8caff1657cd5cf 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 0e560c158061926b039be701eb997935fdc73d75..158688adea8904f71824c20aea5ad598b8a5099b 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 ef7b070cd0efcf7702ecd38e5a3020022a1f9003..efbfa9e0763223b87c4febe8170c963c94d3f107 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 ca74bd302914289cb00204881a3a3a84f8f95b47..3bb55b05e4ec0c6300e3fe16349b15e6f36c206d 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 cb365a2eb5dbeffe9717efdf7b89cb92583a971c..bf9eb2d7679aa569951d20cb8162f169414b59af 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 7c9d2bfc91555ee4664c309dd66806616a3efe1a..02ea65629cda6b966b897408dd8d535ff4a9e893 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 666df8296c6005eb84fbc06259bd9e8a8c0f02e0..3bddbe67adba09be2f727e48adf8e1e521c15a06 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 3b709b01e061abda2b0512c0b30cfa26ccde1671..8a5cae4a2534b96ca62f2e861f06b118653a213f 100644 (file)
@@ -193,7 +193,7 @@ char **argv;
     }
 
     Initdb();
-    initialize_pt_error_table();
+    initialize_PT_error_table();
 
     if (wflag) {
        struct usr_list *u;
index e05639e7438621e0e4a62ae553341f24c5a7a96b..7311c2d2a1209da1aeb527ea2eeefb0c13cd00fd 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 8fa8cb65d3ba1a584c36b6f06d4c4247a90cf748..c1537bc1e70f42a08572a2856128d385c800821f 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 0d4b6b571dd872fdb1afe50844c97e4c86e3c6cb..cea872b55baf4f98656298b59cd8f571b1b4c4d6 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 490eb439f2eb56a9b603f5cd67380af20235cdfe..1ba7e8d44d176bd7eb121bf5423d43d9c9c0fb0d 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 349f74e59c22b880c572f7ce485062df6958845c..6d0133fbde797fddbf82b85e86c8751830a730b5 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 32b2a5a2ed8522e88b3f75e10b621703142ef7e5..819959673aada58d1c6cf9a700a361d9757d0b3a 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 3491765c02d8a539affd9c9b62d1f24cde334a49..8c4ff04c4fcaf8ddf239691ea7770898917b4e74 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 215b8bd6cd3208367350b9a1ac8fac0b62c452c0..9947e8edd349e3a38279714a985a5da46c07fb94 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 4c37f83401414aa8c3d5294d90086e43ce0bb8f3..a413ba3e9084f1c3c68f79de503e92525ea44feb 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 6679c116ed6e760082b97fa144274f299fbaaf2b..46198b3603b3291a6fb774862f2899dc266f417c 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 e62e69b5f7c6b1c018885bea50aa13842405a398..0daa4adefd61e615f349e89b25d904418085a2af 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 765cff6afba437ca01122d1bbfea4616e1358d29..4eb12ff47aada489e0477f4417bd51cb136c6cd3 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 7b1a71f8dfc9dba521f85262eea767f2d86a52b3..ea17b303d97558d1b0ab6b952819dfa125a7cabb 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 9de0f305d0ab5ae73d4a8daddd71894d2b20ba0f..51df3e4205862af716cad8ba61a963a9230df474 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 20299b9713d0cb5a6a3dc2b331bc5b4838d274d8..16db9f0c0c44d3149240de722ba03060cabf1458 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 1c776d43f7475f5068c78ebf3d095f0206c990a3..5e5a9c022600d21624a92f4de1a92c4d016ebcbc 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));