fix bug 19581
[pspp] / src / language / lexer / q2c.c
index 4ba008fa3cacc668d9cb7374cf940dbf0e6378bf..90357ebf958dbdc9cc2a74753f43b6b42f4df086 100644 (file)
@@ -16,8 +16,6 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA. */
 
-#include <config.h>
-
 #include <assert.h>
 #include <ctype.h>
 #include <stdio.h>
 #include <errno.h>
 #include <unistd.h>
 
-#include <libpspp/assertion.h>
-#include <libpspp/compiler.h>
+/* GNU C allows the programmer to declare that certain functions take
+   printf-like arguments, never return, etc.  Conditionalize these
+   declarations on whether gcc is in use. */
+#if __GNUC__ > 1
+#define ATTRIBUTE(X) __attribute__ (X)
+#else
+#define ATTRIBUTE(X)
+#endif
+
+/* Marks a function argument as possibly not used. */
+#define UNUSED ATTRIBUTE ((unused))
+
+/* Marks a function that will never return. */
+#define NO_RETURN ATTRIBUTE ((noreturn))
+
+/* Mark a function as taking a printf- or scanf-like format
+   string as its FMT'th argument and that the FIRST'th argument
+   is the first one to be checked against the format string. */
+#define PRINTF_FORMAT(FMT, FIRST) ATTRIBUTE ((format (__printf__, FMT, FIRST)))
 
-#include "exit.h"
-     
 /* Max length of an input line. */
 #define MAX_LINE_LEN 1024
 
@@ -1121,12 +1134,12 @@ dump_declarations (void)
          case SBC_VARLIST:
            dump (0, "size_t %sn_%s;", st_lower (sbc->prefix),
                  st_lower (sbc->name));
-           dump (0, "struct variable **%sv_%s;", st_lower (sbc->prefix),
+           dump (0, "const struct variable **%sv_%s;", st_lower (sbc->prefix),
                  st_lower (sbc->name));
            break;
 
          case SBC_VAR:
-           dump (0, "struct variable *%sv_%s;", st_lower (sbc->prefix),
+           dump (0, "const struct variable *%sv_%s;", st_lower (sbc->prefix),
                  st_lower (sbc->name));
            break;
 
@@ -1322,7 +1335,7 @@ dump_vars_init (int persistent)
                break;
 
              default:
-               NOT_REACHED ();
+               abort ();
              }
          }
       }
@@ -1584,7 +1597,7 @@ dump_subcommand (const subcommand *sbc)
     }
   else if (sbc->type == SBC_VARLIST)
     {
-      dump (1, "if (!parse_variables (lexer, dataset_dict (ds), &p->%sv_%s, &p->%sn_%s, "
+      dump (1, "if (!parse_variables_const (lexer, dataset_dict (ds), &p->%sv_%s, &p->%sn_%s, "
            "PV_APPEND%s%s))",
            st_lower (sbc->prefix), st_lower (sbc->name),
            st_lower (sbc->prefix), st_lower (sbc->name),
@@ -1752,7 +1765,7 @@ dump_parser (int persistent)
        }
       dump (1, "{");
       dump (0, "p->sbc_%s++;", st_lower (def->name));
-      dump (1, "if (!parse_variables (lexer, dataset_dict (ds), &p->%sv_%s, &p->%sn_%s, "
+      dump (1, "if (!parse_variables_const (lexer, dataset_dict (ds), &p->%sv_%s, &p->%sn_%s, "
            "PV_APPEND))",
            st_lower (def->prefix), st_lower (def->name),
            st_lower (def->prefix), st_lower (def->name));