var_set_print_format (new_var, var_get_print_format (old_var));
var_set_write_format (new_var, var_get_write_format (old_var));
var_set_value_labels (new_var, var_get_value_labels (old_var));
- var_set_label (new_var, var_get_label (old_var), NULL, false);
+ var_set_label (new_var, var_get_label (old_var), false);
var_set_measure (new_var, var_get_measure (old_var));
var_set_display_width (new_var, var_get_display_width (old_var));
var_set_alignment (new_var, var_get_alignment (old_var));
empty string (after stripping white space), then V's variable label (if any)
is removed.
- Variable labels are limited to 255 bytes in the dictionary encoding, which
- should be specified as DICT_ENCODING. If LABEL fits within this limit, this
- function returns true. Otherwise, the variable label is set to a truncated
- value, this function returns false and, if ISSUE_WARNING is true, issues a
- warning. */
+ Variable labels are limited to 255 bytes in V's encoding (as returned by
+ var_get_encoding()). If LABEL fits within this limit, this function returns
+ true. Otherwise, the variable label is set to a truncated value, this
+ function returns false and, if ISSUE_WARNING is true, issues a warning. */
bool
-var_set_label (struct variable *v, const char *label,
- const char *dict_encoding, bool issue_warning)
+var_set_label (struct variable *v, const char *label, bool issue_warning)
{
bool truncated = false;
if (label != NULL)
{
+ const char *dict_encoding = var_get_encoding (v);
struct substring s = ss_cstr (label);
size_t trunc_len;
void
var_clear_label (struct variable *v)
{
- var_set_label (v, NULL, NULL, false);
+ var_set_label (v, NULL, false);
}
/* Returns true if V has a variable V,
return idx < var->short_name_cnt ? var->short_names[idx] : NULL;
}
-/* Sets VAR's short name with the given IDX to SHORT_NAME,
- truncating it to SHORT_NAME_LEN characters and converting it
- to uppercase in the process. Specifying a null pointer for
- SHORT_NAME clears the specified short name. */
+/* Sets VAR's short name with the given IDX to the UTF-8 string SHORT_NAME.
+ The caller must already have checked that, in the dictionary encoding,
+ SHORT_NAME is no more than SHORT_NAME_LEN bytes long. The new short name
+ will be converted to uppercase.
+
+ Specifying a null pointer for SHORT_NAME clears the specified short name. */
void
var_set_short_name (struct variable *var, size_t idx, const char *short_name)
{
for (i = old_cnt; i < var->short_name_cnt; i++)
var->short_names[i] = NULL;
}
- var->short_names[idx] = xstrndup (short_name, MAX_SHORT_STRING);
+ var->short_names[idx] = xstrdup (short_name);
str_uppercase (var->short_names[idx]);
}