projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
value: Get rid of value_str(), value_str_rw(), value_num().
[pspp]
/
src
/
data
/
sys-file-reader.c
diff --git
a/src/data/sys-file-reader.c
b/src/data/sys-file-reader.c
index b2db755732311d6c6ba8dda47044225edffa80c2..e0b43b9205c59db8b777baacc7c65b1125f1b616 100644
(file)
--- a/
src/data/sys-file-reader.c
+++ b/
src/data/sys-file-reader.c
@@
-891,7
+891,7
@@
sfm_decode (struct any_reader *r_, const char *encoding,
error:
sfm_close (r_);
error:
sfm_close (r_);
- dict_
destroy
(dict);
+ dict_
unref
(dict);
*dictp = NULL;
return NULL;
}
*dictp = NULL;
return NULL;
}
@@
-1544,22
+1544,9
@@
parse_format_spec (struct sfm_reader *r, off_t pos, unsigned int format,
int *n_warnings)
{
const int max_warnings = 8;
int *n_warnings)
{
const int max_warnings = 8;
- uint8_t raw_type = format >> 16;
- uint8_t w = format >> 8;
- uint8_t d = format;
struct fmt_spec f;
struct fmt_spec f;
- bool ok;
-
- f.w = w;
- f.d = d;
-
- msg_disable ();
- ok = (fmt_from_io (raw_type, &f.type)
- && fmt_check_output (&f)
- && fmt_check_width_compat (&f, var_get_width (v)));
- msg_enable ();
- if (
ok
)
+ if (
fmt_from_u32 (format, var_get_width (v), false, &f)
)
{
if (which == PRINT_FORMAT)
var_set_print_format (v, &f);
{
if (which == PRINT_FORMAT)
var_set_print_format (v, &f);
@@
-1762,7
+1749,12
@@
parse_mrsets (struct sfm_reader *r, const struct sfm_extension_record *record,
}
number = text_get_token (text, ss_cstr (" "), NULL);
}
number = text_get_token (text, ss_cstr (" "), NULL);
- if (!strcmp (number, "11"))
+ if (!number)
+ sys_warn (r, record->pos,
+ _("Missing label source value "
+ "following `E' at offset %zu in MRSETS record."),
+ text_pos (text));
+ else if (!strcmp (number, "11"))
mrset->label_from_var_label = true;
else if (strcmp (number, "1"))
sys_warn (r, record->pos,
mrset->label_from_var_label = true;
else if (strcmp (number, "1"))
sys_warn (r, record->pos,
@@
-2221,7
+2213,7
@@
parse_value_labels (struct sfm_reader *r, struct dictionary *dict,
if (width == 0)
value.f = parse_float (r, label->value, 0);
else
if (width == 0)
value.f = parse_float (r, label->value, 0);
else
- memcpy (value
_str_rw (&value, width)
, label->value, width);
+ memcpy (value
.s
, label->value, width);
if (!var_add_value_label (var, &value, utf8_labels[j]))
{
if (!var_add_value_label (var, &value, utf8_labels[j]))
{
@@
-2240,8
+2232,7
@@
parse_value_labels (struct sfm_reader *r, struct dictionary *dict,
else
sys_warn (r, record->pos,
_("Duplicate value label for `%.*s' on %s."),
else
sys_warn (r, record->pos,
_("Duplicate value label for `%.*s' on %s."),
- width, value_str (&value, width),
- var_get_name (var));
+ width, value.s, var_get_name (var));
}
value_destroy (&value, width);
}
value_destroy (&value, width);
@@
-2334,7
+2325,7
@@
parse_attributes (struct sfm_reader *r, struct text_record *text,
if (text_match (text, ')'))
break;
}
if (text_match (text, ')'))
break;
}
- if (attrs != NULL)
+ if (attrs != NULL
&& attribute_get_n_values (attr) > 0
)
{
if (!attrset_try_add (attrs, attr))
{
{
if (!attrset_try_add (attrs, attr))
{
@@
-2388,7
+2379,7
@@
assign_variable_roles (struct sfm_reader *r, struct dictionary *dict)
struct variable *var = dict_get_var (dict, i);
struct attrset *attrs = var_get_attributes (var);
const struct attribute *attr = attrset_lookup (attrs, "$@Role");
struct variable *var = dict_get_var (dict, i);
struct attrset *attrs = var_get_attributes (var);
const struct attribute *attr = attrset_lookup (attrs, "$@Role");
- if (attr != NULL)
+ if (attr != NULL
&& attribute_get_n_values (attr) > 0
)
{
int value = atoi (attribute_get_value (attr, 0));
enum var_role role;
{
int value = atoi (attribute_get_value (attr, 0));
enum var_role role;
@@
-2528,8
+2519,7
@@
parse_long_string_value_labels (struct sfm_reader *r,
if (!skip)
{
if (value_length == width)
if (!skip)
{
if (value_length == width)
- memcpy (value_str_rw (&value, width),
- (const uint8_t *) record->data + ofs, width);
+ memcpy (value.s, (const uint8_t *) record->data + ofs, width);
else
{
sys_warn (r, record->pos + ofs,
else
{
sys_warn (r, record->pos + ofs,
@@
-2561,8
+2551,7
@@
parse_long_string_value_labels (struct sfm_reader *r,
if (!var_add_value_label (var, &value, label))
sys_warn (r, record->pos + ofs,
_("Duplicate value label for `%.*s' on %s."),
if (!var_add_value_label (var, &value, label))
sys_warn (r, record->pos + ofs,
_("Duplicate value label for `%.*s' on %s."),
- width, value_str (&value, width),
- var_get_name (var));
+ width, value.s, var_get_name (var));
pool_free (r->pool, label);
}
ofs += label_length;
pool_free (r->pool, label);
}
ofs += label_length;
@@
-2696,8
+2685,7
@@
sys_file_casereader_read (struct casereader *reader, void *r_)
retval = read_case_number (r, &v->f);
else
{
retval = read_case_number (r, &v->f);
else
{
- uint8_t *s = value_str_rw (v, sv->var_width);
- retval = read_case_string (r, s + sv->offset, sv->segment_width);
+ retval = read_case_string (r, v->s + sv->offset, sv->segment_width);
if (retval == 1)
{
retval = skip_whole_strings (r, ROUND_DOWN (sv->padding, 8));
if (retval == 1)
{
retval = skip_whole_strings (r, ROUND_DOWN (sv->padding, 8));
@@
-3188,7
+3176,6
@@
static void
sys_msg (struct sfm_reader *r, off_t offset,
int class, const char *format, va_list args)
{
sys_msg (struct sfm_reader *r, off_t offset,
int class, const char *format, va_list args)
{
- struct msg m;
struct string text;
ds_init_empty (&text);
struct string text;
ds_init_empty (&text);
@@
-3199,15
+3186,11
@@
sys_msg (struct sfm_reader *r, off_t offset,
ds_put_format (&text, _("`%s': "), fh_get_file_name (r->fh));
ds_put_vformat (&text, format, args);
ds_put_format (&text, _("`%s': "), fh_get_file_name (r->fh));
ds_put_vformat (&text, format, args);
- m.category = msg_class_to_category (class);
- m.severity = msg_class_to_severity (class);
- m.file_name = NULL;
- m.first_line = 0;
- m.last_line = 0;
- m.first_column = 0;
- m.last_column = 0;
- m.text = ds_cstr (&text);
-
+ struct msg m = {
+ .category = msg_class_to_category (class),
+ .severity = msg_class_to_severity (class),
+ .text = ds_cstr (&text),
+ };
msg_emit (&m);
}
msg_emit (&m);
}