/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2006 Free Software Foundation
+ Copyright (C) 2006, 2009 Free Software Foundation
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
switch (col)
{
case PSPPIRE_VAR_STORE_COL_LABEL:
- var_set_label (pv, 0);
+ var_set_label (pv, NULL);
return TRUE;
break;
}
case PSPPIRE_VAR_STORE_COL_NAME:
{
gboolean ok;
- char *s = recode_string (psppire_dict_encoding (var_store->dict),
- UTF8,
- text, -1);
-
- ok = psppire_dict_rename_var (var_store->dict, pv, s);
-
- free (s);
+ ok = psppire_dict_rename_var (var_store->dict, pv, text);
return ok;
}
case PSPPIRE_VAR_STORE_COL_COLUMNS:
break;
case PSPPIRE_VAR_STORE_COL_WIDTH:
{
- int width = atoi (text);
- if ( ! text) return FALSE;
+ const int width = atoi (text);
+ if ( ! text)
+ return FALSE;
+
+ if (width < 0)
+ return FALSE;
+
if ( var_is_alpha (pv))
+ {
+ if ( width > MAX_STRING )
+ return FALSE;
var_set_width (pv, width);
+ }
else
{
bool for_input
break;
case PSPPIRE_VAR_STORE_COL_LABEL:
{
- gchar *s = recode_string (psppire_dict_encoding (var_store->dict),
- UTF8,
- text, -1);
- var_set_label (pv, s);
- free (s);
+ var_set_label (pv, text);
return TRUE;
}
break;
N_("Custom"),
N_("String")
};
+
enum {VT_NUMERIC, VT_COMMA, VT_DOT, VT_SCIENTIFIC, VT_DATE, VT_DOLLAR,
VT_CUSTOM, VT_STRING};
switch (c)
{
case PSPPIRE_VAR_STORE_COL_NAME:
- return recode_string (UTF8, psppire_dict_encoding (dict),
- var_get_name (pv), -1);
+ return xstrdup (var_get_name (pv));
break;
case PSPPIRE_VAR_STORE_COL_TYPE:
{
}
break;
case PSPPIRE_VAR_STORE_COL_LABEL:
- return recode_string (UTF8, psppire_dict_encoding (dict),
- var_get_label (pv), -1);
+ {
+ const char *label = var_get_label (pv);
+ if (label)
+ return xstrdup (label);
+ return NULL;
+ }
break;
case PSPPIRE_VAR_STORE_COL_MISSING:
return g_locale_to_utf8 (gettext (none), -1, 0, 0, err);
else
{
- gchar *ss;
- GString *gstr = g_string_sized_new (10);
const struct val_labs *vls = var_get_value_labels (pv);
- struct val_labs_iterator *ip = 0;
- struct val_lab *vl = val_labs_first_sorted (vls, &ip);
+ const struct val_lab **labels = val_labs_sorted (vls);
+ const struct val_lab *vl = labels[0];
+ free (labels);
g_assert (vl);
{
- gchar *const vstr = value_to_text (vl->value, *write_spec);
+ gchar *const vstr = value_to_text (vl->value, dict, *write_spec);
- g_string_printf (gstr, "{%s,\"%s\"}_", vstr, vl->label);
- g_free (vstr);
+ return g_strdup_printf ( "{%s,\"%s\"}_", vstr, val_lab_get_label (vl));
}
-
- val_labs_done (&ip);
-
- ss = recode_string (UTF8, psppire_dict_encoding (dict),
- gstr->str, gstr->len);
- g_string_free (gstr, TRUE);
- return ss;
}
}
break;