- if (s->label && strcspn (s->label, " ") != strlen (s->label))
- {
- free (t->label);
- t->label = s->label;
- s->label = NULL;
- }
-
- if (val_labs_count (s->val_labs) && t->width > MAX_SHORT_STRING)
- msg (SW, _("Cannot add value labels from source file to "
- "long string variable %s."),
- s->name);
- else if (val_labs_count (s->val_labs))
+ if (var_get_label (s))
+ {
+ const char *label = var_get_label (s);
+ if (strcspn (label, " ") != strlen (label))
+ var_set_label (t, label);
+ }
+
+ if (var_has_value_labels (s))
+ {
+ const struct val_labs *value_labels = var_get_value_labels (s);
+ if (val_labs_can_set_width (value_labels, var_get_width (t)))
+ var_set_value_labels (s, value_labels);
+ }
+
+ if (var_has_missing_values (s))
+ {
+ const struct missing_values *miss = var_get_missing_values (s);
+ if (mv_is_resizable (miss, var_get_width (t)))
+ var_set_missing_values (t, miss);
+ }
+
+ if (var_is_numeric (s))