projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix TEMPORARY bug and add regression test.
[pspp-builds.git]
/
src
/
q2c.c
diff --git
a/src/q2c.c
b/src/q2c.c
index 197fd8d9ca00a843f9b9dee7306496c9c58832a2..20b245986b127b3bc8ddd703048d11def95f7682 100644
(file)
--- a/
src/q2c.c
+++ b/
src/q2c.c
@@
-99,9
+99,7
@@
finish_up (void)
fprintf (stderr, "%s: %s: remove: %s\n", pgmname, ofn, strerror (errno));
}
fprintf (stderr, "%s: %s: remove: %s\n", pgmname, ofn, strerror (errno));
}
-#if __GNUC__ >= 2
-void hcf (void) __attribute__ ((noreturn));
-#endif
+void hcf (void) NO_RETURN;
/* Terminate unsuccessfully. */
void
/* Terminate unsuccessfully. */
void
@@
-111,10
+109,8
@@
hcf (void)
exit (EXIT_FAILURE);
}
exit (EXIT_FAILURE);
}
-#if __GNUC__ >= 2
-int fail (const char *, ...) __attribute__ ((format (printf, 1, 2)));
-int error (const char *, ...) __attribute__ ((format (printf, 1, 2)));
-#endif
+int fail (const char *, ...) PRINTF_FORMAT (1, 2);
+int error (const char *, ...) PRINTF_FORMAT (1, 2);
/* Output an error message and terminate unsuccessfully. */
int
/* Output an error message and terminate unsuccessfully. */
int
@@
-859,9
+855,7
@@
parse_subcommands (void)
/* Size of the indent from the left margin. */
int indent;
/* Size of the indent from the left margin. */
int indent;
-#if __GNUC__ >= 2
-void dump (int, const char *, ...) __attribute__ ((format (printf, 2, 3)));
-#endif
+void dump (int, const char *, ...) PRINTF_FORMAT (2, 3);
/* Write line FORMAT to the output file, formatted as with printf,
indented `indent' characters from the left margin. If INDENTION is
/* Write line FORMAT to the output file, formatted as with printf,
indented `indent' characters from the left margin. If INDENTION is
@@
-1097,6
+1091,10
@@
dump_declarations (void)
dump (0, "long n_%s;", st_lower (sbc->name));
break;
dump (0, "long n_%s;", st_lower (sbc->name));
break;
+ case SBC_DBL:
+ dump (0, "double n_%s;", st_lower (sbc->name));
+ break;
+
default:;
/* nothing */
}
default:;
/* nothing */
}
@@
-1537,11
+1535,19
@@
dump_subcommand (const subcommand *sbc)
if (sbc->restriction)
dump (-1, "}");
}
if (sbc->restriction)
dump (-1, "}");
}
+ else if (sbc->type == SBC_DBL)
+ {
+ dump (1, "if (!lex_force_num ())");
+ dump (0, "goto lossage;");
+ dump (-1, "p->n_%s = lex_double ();", st_lower (sbc->name));
+ dump (0, "lex_get();");
+ }
else if (sbc->type == SBC_INT)
{
dump (1, "if (!lex_force_int ())");
dump (0, "goto lossage;");
dump (-1, "p->n_%s = lex_integer ();", st_lower (sbc->name));
else if (sbc->type == SBC_INT)
{
dump (1, "if (!lex_force_int ())");
dump (0, "goto lossage;");
dump (-1, "p->n_%s = lex_integer ();", st_lower (sbc->name));
+ dump (0, "lex_get();");
}
else if (sbc->type == SBC_PINT)
{
}
else if (sbc->type == SBC_PINT)
{
@@
-1698,7
+1704,7
@@
dump_header (void)
loctime = localtime (&curtime);
timep = asctime (loctime);
timep[strlen (timep) - 1] = 0;
loctime = localtime (&curtime);
timep = asctime (loctime);
timep[strlen (timep) - 1] = 0;
- dump (0, "/* %s", ofn);
+ dump (0, "/* %s
\t\t-*- mode: c; buffer-read-only: t -*-
", ofn);
dump (0, nullstr);
dump (0, " Generated by q2c from %s on %s.", ifn, timep);
dump (0, " Do not modify!");
dump (0, nullstr);
dump (0, " Generated by q2c from %s on %s.", ifn, timep);
dump (0, " Do not modify!");
@@
-1722,7
+1728,7
@@
dump_free (void)
dump (0, "static void");
dump (0, "free_%s (struct cmd_%s *p%s)", make_identifier (cmdname),
dump (0, "static void");
dump (0, "free_%s (struct cmd_%s *p%s)", make_identifier (cmdname),
- make_identifier (cmdname), used ? "" : "
unused
");
+ make_identifier (cmdname), used ? "" : "
UNUSED
");
dump (1, "{");
for (sbc = subcommands; sbc; sbc = sbc->next)
dump (1, "{");
for (sbc = subcommands; sbc; sbc = sbc->next)