/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
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 <stdlib.h>
-#include <data/case.h>
-#include <data/data-out.h>
-#include <data/procedure.h>
-#include <data/transformations.h>
-#include <data/variable.h>
-#include <data/format.h>
-#include <language/command.h>
-#include <language/data-io/data-writer.h>
-#include <language/data-io/file-handle.h>
-#include <language/data-io/placement-parser.h>
-#include <language/lexer/format-parser.h>
-#include <language/lexer/lexer.h>
-#include <language/lexer/variable-parser.h>
-#include <libpspp/assertion.h>
-#include <libpspp/i18n.h>
-#include <libpspp/compiler.h>
-#include <libpspp/ll.h>
-#include <libpspp/message.h>
-#include <libpspp/misc.h>
-#include <libpspp/pool.h>
-#include <output/text-item.h>
-#include <output/tab.h>
-
-#include "xalloc.h"
+#include "data/case.h"
+#include "data/data-out.h"
+#include "data/format.h"
+#include "data/procedure.h"
+#include "data/transformations.h"
+#include "data/variable.h"
+#include "language/command.h"
+#include "language/data-io/data-writer.h"
+#include "language/data-io/file-handle.h"
+#include "language/data-io/placement-parser.h"
+#include "language/lexer/format-parser.h"
+#include "language/lexer/lexer.h"
+#include "language/lexer/variable-parser.h"
+#include "libpspp/assertion.h"
+#include "libpspp/compiler.h"
+#include "libpspp/i18n.h"
+#include "libpspp/ll.h"
+#include "libpspp/message.h"
+#include "libpspp/misc.h"
+#include "libpspp/pool.h"
+#include "output/tab.h"
+#include "output/text-item.h"
+
+#include "gl/xalloc.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
trns->encoding = dfm_writer_get_legacy_encoding (trns->writer);
}
else
- trns->encoding = LEGACY_NATIVE;
+ trns->encoding = UTF8;
/* Output the variable table if requested. */
if (print_table)
spec->type = PRT_LITERAL;
spec->record = record;
spec->first_column = *column;
- ds_init_string (&spec->string, lex_tokstr (lexer));
+ ds_init_substring (&spec->string, lex_tokss (lexer));
ds_register_pool (&spec->string, trns->pool);
lex_get (lexer);
{
struct print_trns *trns = trns_;
bool eject = trns->eject;
- char encoded_space = legacy_from_native (trns->encoding, ' ');
+ char encoded_space = recode_byte (trns->encoding, C_ENCODING, ' ');
int record = 1;
struct prt_out_spec *spec;
if (spec->type == PRT_VAR)
{
const union value *input = case_data (*c, spec->var);
- char *output = ds_put_uninit (&trns->line, spec->format.w);
if (!spec->sysmis_as_spaces || input->f != SYSMIS)
- data_out_legacy (input, trns->encoding, &spec->format, output);
+ data_out_recode (input, var_get_encoding (spec->var),
+ &spec->format, &trns->line, trns->encoding);
else
- memset (output, encoded_space, spec->format.w);
+ ds_put_byte_multiple (&trns->line, encoded_space, spec->format.w);
if (spec->add_space)
ds_put_byte (&trns->line, encoded_space);
}
else
{
ds_put_substring (&trns->line, ds_ss (&spec->string));
- if (0 != strcmp (trns->encoding, LEGACY_NATIVE))
+ if (0 != strcmp (trns->encoding, C_ENCODING))
{
size_t length = ds_length (&spec->string);
char *data = ss_data (ds_tail (&trns->line, length));
- char *s = recode_string (trns->encoding, LEGACY_NATIVE, data, length);
+ char *s = recode_string (trns->encoding, C_ENCODING, data, length);
memcpy (data, s, length);
free (s);
}
else
leader = '1';
}
- line[0] = legacy_from_native (trns->encoding, leader);
+ line[0] = recode_byte (trns->encoding, C_ENCODING, leader);
if (trns->writer == NULL)
tab_output_text (TAB_FIX, &line[1]);