/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation
+ Copyright (C) 2008, 2009, 2010, 2011 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
#include "language/data-io/data-parser.h"
#include "language/lexer/lexer.h"
#include "libpspp/assertion.h"
+#include "libpspp/i18n.h"
#include "libpspp/message.h"
#include "ui/gui/checkbox-treeview.h"
#include "ui/gui/descriptives-dialog.h"
gint column_idx);
static GtkTreeView *create_data_tree_view (bool input, GtkContainer *parent,
struct import_assistant *);
-static void escape_underscores (const char *in, char *out);
+static char *escape_underscores (const char *in);
static void push_watch_cursor (struct import_assistant *);
static void pop_watch_cursor (struct import_assistant *);
destroy_file (ia);
return false;
}
- ds_chomp (line, '\n');
- ds_chomp (line, '\r');
+ ds_chomp_byte (line, '\n');
+ ds_chomp_byte (line, '\r');
}
if (file->line_cnt == 0)
name_row = f->variable_names && f->skip_lines ? f->skip_lines : 0;
for (col = s->columns; col < &s->columns[s->column_cnt]; col++)
{
- char name[VAR_NAME_LEN + 1];
- char *hint;
+ char *hint, *name;
hint = name_row ? ss_xstrdup (col->contents[name_row - 1]) : NULL;
- if (!dict_make_unique_var_name (dict, hint, &generated_name_count, name))
- NOT_REACHED ();
+ name = dict_make_unique_var_name (dict, hint, &generated_name_count);
free (hint);
- col->name = xstrdup (name);
+ col->name = name;
dict_create_var_assert (dict, name, 0);
}
dict_destroy (dict);
for (column_idx = 0; column_idx < s->column_cnt; column_idx++)
{
struct variable *modified_var;
- char name[VAR_NAME_LEN + 1];
modified_var = (column_idx < p->modified_var_cnt
? p->modified_vars[column_idx] : NULL);
struct column *column = &s->columns[column_idx];
struct variable *var;
struct fmt_spec format;
+ char *name;
size_t row;
/* Choose variable name. */
- if (!dict_make_unique_var_name (dict, column->name, &number, name))
- NOT_REACHED ();
+ name = dict_make_unique_var_name (dict, column->name, &number);
/* Choose variable format. */
fmt_guesser_clear (fg);
/* Create variable. */
var = dict_create_var_assert (dict, name, fmt_var_width (&format));
var_set_both_formats (var, &format);
+
+ free (name);
}
else
{
- if (!dict_make_unique_var_name (dict, var_get_name (modified_var),
- &number, name))
- NOT_REACHED ();
+ char *name;
+
+ name = dict_make_unique_var_name (dict, var_get_name (modified_var),
+ &number);
dict_clone_var_as_assert (dict, modified_var, name);
+ free (name);
}
}
fmt_guesser_destroy (fg);
{
char *error;
- error = data_in (field, LEGACY_NATIVE, in->type, &val,
- var_get_width (var),
+ error = data_in (field, C_ENCODING, in->type, &val, var_get_width (var),
dict_get_encoding (ia->formats.dict));
if (error != NULL)
{
{
struct variable *var = NULL;
struct column *column = NULL;
- char name[(VAR_NAME_LEN * 2) + 1];
size_t char_cnt;
gint content_width, header_width;
GtkTreeViewColumn *tree_column;
+ char *name;
if (input)
column = &ia->separators.columns[dict_idx];
else
var = dict_get_var (ia->formats.dict, dict_idx);
- escape_underscores (input ? column->name : var_get_name (var), name);
+ name = escape_underscores (input ? column->name : var_get_name (var));
char_cnt = input ? column->width : var_get_print_format (var)->w;
content_width = get_monospace_width (tree_view, ia->asst.fixed_renderer,
char_cnt);
gtk_tree_view_column_set_fixed_width (tree_column, MAX (content_width,
header_width));
+ free (name);
+
return tree_column;
}
return tree_view;
}
-static void
-escape_underscores (const char *in, char *out)
+static char *
+escape_underscores (const char *in)
{
+ char *out = xmalloc (2 * strlen (in) + 1);
+ char *p;
+
+ p = out;
for (; *in != '\0'; in++)
{
if (*in == '_')
- *out++ = '_';
- *out++ = *in;
+ *p++ = '_';
+ *p++ = *in;
}
- *out = '\0';
+ *p = '\0';
+
+ return out;
}
\f
/* TextImportModel, a GtkTreeModel implementation used by some