- gchar *s;
- const struct missing_values *miss = var_get_missing_values (pv);
- if ( mv_is_empty (miss))
- return g_locale_to_utf8 (gettext (none), -1, 0, 0, err);
- else
- {
- if ( ! mv_has_range (miss))
- {
- GString *gstr = g_string_sized_new (10);
- const int n = mv_n_values (miss);
- gchar *mv[4] = {0,0,0,0};
- gint i;
- for (i = 0 ; i < n; ++i )
- {
- union value v;
- mv_peek_value (miss, &v, i);
- mv[i] = value_to_text (v, *write_spec);
- if ( i > 0 )
- g_string_append (gstr, ", ");
- g_string_append (gstr, mv[i]);
- g_free (mv[i]);
- }
- s = pspp_locale_to_utf8 (gstr->str, gstr->len, err);
- g_string_free (gstr, TRUE);
- }
- else
- {
- GString *gstr = g_string_sized_new (10);
- gchar *l, *h;
- union value low, high;
- mv_peek_range (miss, &low.f, &high.f);
-
- l = value_to_text (low, *write_spec);
- h = value_to_text (high, *write_spec);
-
- g_string_printf (gstr, "%s - %s", l, h);
- g_free (l);
- g_free (h);
-
- if ( mv_has_value (miss))
- {
- gchar *ss = 0;
- union value v;
- mv_peek_value (miss, &v, 0);
-
- ss = value_to_text (v, *write_spec);
-
- g_string_append (gstr, ", ");
- g_string_append (gstr, ss);
- free (ss);
- }
- s = pspp_locale_to_utf8 (gstr->str, gstr->len, err);
- g_string_free (gstr, TRUE);
- }
-
- return s;
- }