#include <config.h>
-#include <errno.h>
-#include <fcntl.h>
#include <gtk/gtk.h>
-#include <sys/stat.h>
#include "data/casereader.h"
#include "data/data-in.h"
#include "data/value-labels.h"
#include "data/casereader-provider.h"
-#include "gl/intprops.h"
-
#include "libpspp/i18n.h"
#include "libpspp/line-reader.h"
#include "libpspp/message.h"
#include "libpspp/str.h"
#include "builder-wrapper.h"
-#include "helper.h"
-#include "psppire-import-assistant.h"
-#include "psppire-scanf.h"
+
+#include "psppire-data-sheet.h"
+#include "psppire-data-store.h"
#include "psppire-dialog.h"
+#include "psppire-delimited-text.h"
+#include "psppire-dict.h"
#include "psppire-encoding-selector.h"
+#include "psppire-import-assistant.h"
+#include "psppire-scanf.h"
#include "psppire-spreadsheet-model.h"
#include "psppire-text-file.h"
-#include "psppire-delimited-text.h"
-#include "psppire-data-sheet.h"
-#include "psppire-data-store.h"
-#include "psppire-dict.h"
#include "psppire-variable-sheet.h"
#include "ui/syntax-gen.h"
enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */
-/* Sets IA's separators substructure to match the widgets. */
-static void split_fields (PsppireImportAssistant *ia);
-
/* Chooses a name for each column on the separators page */
static void choose_column_names (PsppireImportAssistant *ia);
-
-
static void intro_page_create (PsppireImportAssistant *ia);
static void first_line_page_create (PsppireImportAssistant *ia);
static void separators_page_create (PsppireImportAssistant *ia);
static void formats_page_create (PsppireImportAssistant *ia);
-static void push_watch_cursor (PsppireImportAssistant *ia);
-static void pop_watch_cursor (PsppireImportAssistant *ia);
-
-
-
static void psppire_import_assistant_init (PsppireImportAssistant *act);
static void psppire_import_assistant_class_init (PsppireImportAssistantClass *class);
gboolean valid;
GtkTreeIter iter;
- int i = 0;
-
int j;
struct hmap count_map[SEPARATOR_CNT];
valid;
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (ia->text_file), &iter))
{
- int j;
-
gchar *line_text = NULL;
gtk_tree_model_get (GTK_TREE_MODEL (ia->text_file), &iter, 1, &line_text, -1);
gint *counts = xzalloc (sizeof *counts * SEPARATOR_CNT);
- for (j = 0; j < strlen (line_text); ++j)
+
+ struct substring cs = ss_cstr (line_text);
+ for (;
+ UINT32_MAX != ss_first_mb (cs);
+ ss_get_mb (&cs))
{
+ ucs4_t character = ss_first_mb (cs);
+
int s;
for (s = 0; s < SEPARATOR_CNT; ++s)
{
- // FIXME do this in UTF8 encoding
- if (line_text[j] == separators[s].c)
+ if (character == separators[s].c)
counts[s]++;
}
}
+ int j;
for (j = 0; j < SEPARATOR_CNT; ++j)
{
if (counts[j] > 0)