X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fformats.c;h=e6c85a24e2a92e4b9ef1cb240e3dca625b16321e;hb=7dc203206d3f3172474a4ec0f4dcab5364f4ce26;hp=8d2918a769a2528da8d0673f4619ba09e274d256;hpb=4944c86a9318bc5b5578ab145a95c116ffd2c9fd;p=pspp diff --git a/src/formats.c b/src/formats.c index 8d2918a769..e6c85a24e2 100644 --- a/src/formats.c +++ b/src/formats.c @@ -28,14 +28,8 @@ #include "str.h" #include "var.h" -#undef DEBUGGING -/*#define DEBUGGING 1*/ #include "debug-print.h" -#if DEBUGGING -static void debug_print (void); -#endif - enum { FORMATS_PRINT = 001, @@ -47,21 +41,18 @@ static int internal_cmd_formats (int); int cmd_print_formats (void) { - lex_match_id ("FORMATS"); return internal_cmd_formats (FORMATS_PRINT); } int cmd_write_formats (void) { - lex_match_id ("FORMATS"); return internal_cmd_formats (FORMATS_WRITE); } int cmd_formats (void) { - lex_match_id ("FORMATS"); return internal_cmd_formats (FORMATS_PRINT | FORMATS_WRITE); } @@ -86,7 +77,7 @@ internal_cmd_formats (int which) if (token == '.') break; - if (!parse_variables (NULL, &v, &cv, PV_SAME_TYPE)) + if (!parse_variables (default_dict, &v, &cv, PV_NUMERIC)) return CMD_PART_SUCCESS_MAYBE; type = v[0]->type; @@ -95,31 +86,11 @@ internal_cmd_formats (int which) msg (SE, _("`(' expected after variable list")); goto fail; } - if (!parse_format_specifier (&f, 0) || !check_output_specifier (&f)) + if (!parse_format_specifier (&f, 0) + || !check_output_specifier (&f, true) + || !check_specifier_type (&f, NUMERIC, true)) goto fail; - /* Catch type mismatch errors. */ - if ((type == ALPHA) ^ (0 != (formats[f.type].cat & FCAT_STRING))) - { - msg (SE, _("Format %s may not be assigned to a %s variable."), - fmt_to_string (&f), type == NUMERIC ? _("numeric") : _("string")); - goto fail; - } - - /* This is an additional check for string variables. We can't - let the user specify an A8 format for a string variable with - width 4. */ - if (type == ALPHA) - { - /* Shortest string so far. */ - int min_len = INT_MAX; - - for (i = 0; i < cv; i++) - min_len = min (min_len, v[i]->width); - if (!check_string_specifier (&f, min_len)) - goto fail; - } - if (!lex_match (')')) { msg (SE, _("`)' expected after output format.")); @@ -136,30 +107,9 @@ internal_cmd_formats (int which) free (v); v = NULL; } -#if DEBUGGING - debug_print (); -#endif return CMD_SUCCESS; fail: free (v); return CMD_PART_SUCCESS_MAYBE; } - -#if DEBUGGING -static void -debug_print (void) -{ - int i; - - printf (_("Formats:\n")); - printf (_(" Name Print Write\n")); - printf (" -------- ------------ ------------\n"); - for (i = 0; i < default_dict.nvar; i++) - { - struct variable *v = default_dict.var[i]; - printf (" %-8s %-12s", v->name, fmt_to_string (&v->print)); - printf (" %-12s\n", fmt_to_string (&v->write)); - } -} -#endif /* DEBUGGING */