X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fsys-file-reader.c;h=1b66a4d27757a57e9c162738f12fe8b5e3f3856f;hb=19d0debdc5b72e1bb6c79956403a4d3bc054f300;hp=246448a1f2a4bd7a733c4b4e856ee95c14859d6f;hpb=a1a4228b112a6aca97fef5aaaf9ffa21271a1f72;p=pspp-builds.git diff --git a/src/data/sys-file-reader.c b/src/data/sys-file-reader.c index 246448a1..1b66a4d2 100644 --- a/src/data/sys-file-reader.c +++ b/src/data/sys-file-reader.c @@ -439,7 +439,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict, break; } - for ( i = 0 ; i < min(n_vars, dict_get_var_cnt(*dict)) ; ++i ) + for ( i = 0 ; i < MIN(n_vars, dict_get_var_cnt(*dict)) ; ++i ) { struct { @@ -1208,28 +1208,35 @@ static int parse_format_spec (struct sfm_reader *r, int32_t s, struct fmt_spec *f, const struct variable *v) { - f->type = translate_fmt ((s >> 16) & 0xff); - if (f->type == -1) + bool ok; + + if (!fmt_from_io ((s >> 16) & 0xff, &f->type)) lose ((ME, _("%s: Bad format specifier byte (%d)."), fh_get_file_name (r->fh), (s >> 16) & 0xff)); f->w = (s >> 8) & 0xff; f->d = s & 0xff; - if ((v->type == ALPHA) ^ ((formats[f->type].cat & FCAT_STRING) != 0)) + if ((v->type == ALPHA) ^ (fmt_is_string (f->type) != 0)) lose ((ME, _("%s: %s variable %s has %s format specifier %s."), fh_get_file_name (r->fh), v->type == ALPHA ? _("String") : _("Numeric"), v->name, - formats[f->type].cat & FCAT_STRING ? _("string") : _("numeric"), - formats[f->type].name)); + fmt_is_string (f->type) ? _("string") : _("numeric"), + fmt_name (f->type))); - if (!check_output_specifier (f, false) - || !check_specifier_width (f, v->width, false)) + msg_disable (); + ok = fmt_check_output (f) && fmt_check_width_compat (f, v->width); + msg_enable (); + + if (!ok) { + char fmt_string[FMT_STRING_LEN_MAX + 1]; msg (ME, _("%s variable %s has invalid format specifier %s."), v->type == NUMERIC ? _("Numeric") : _("String"), - v->name, fmt_to_string (f)); - *f = v->type == NUMERIC ? f8_2 : make_output_format (FMT_A, v->width, 0); + v->name, fmt_to_string (f, fmt_string)); + *f = (v->type == NUMERIC + ? fmt_for_output (FMT_F, 8, 2) + : fmt_for_output (FMT_A, v->width, 0)); } return 1; @@ -1375,7 +1382,7 @@ read_value_labels (struct sfm_reader *r, if (var[0]->type == ALPHA) { - const int copy_len = min (sizeof label->raw_value, + const int copy_len = MIN (sizeof label->raw_value, sizeof label->label); memcpy (label->value.s, label->raw_value, copy_len); } else { @@ -1439,7 +1446,7 @@ buf_read (struct sfm_reader *r, void *buf, size_t byte_cnt, size_t min_alloc) assert (r); if (buf == NULL && byte_cnt > 0 ) - buf = xmalloc (max (byte_cnt, min_alloc)); + buf = xmalloc (MAX (byte_cnt, min_alloc)); if ( byte_cnt == 0 ) return buf;