X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fsyntax-gen.c;h=aae8c972f95ac324c1da897b02fb83be7794691a;hb=38993354cabb6fc37bb882be92f9a49e9aeb4c88;hp=84415c3e92f38adac840c6842c433c2b8aeab49d;hpb=57e1bd2b5e86c0f47ed8fcc23c4945034afb2053;p=pspp diff --git a/src/ui/syntax-gen.c b/src/ui/syntax-gen.c index 84415c3e92..aae8c972f9 100644 --- a/src/ui/syntax-gen.c +++ b/src/ui/syntax-gen.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2010 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 @@ -21,13 +21,14 @@ #include #include -#include -#include -#include -#include -#include -#include -#include +#include "data/data-in.h" +#include "data/data-out.h" +#include "data/format.h" +#include "data/value.h" +#include "libpspp/assertion.h" +#include "libpspp/cast.h" +#include "libpspp/message.h" +#include "libpspp/str.h" /* Appends to OUTPUT a pair of hex digits for each byte in IN. */ static void @@ -146,20 +147,23 @@ syntax_gen_number (struct string *output, & (FMT_CAT_DATE | FMT_CAT_TIME | FMT_CAT_DATE_COMPONENT))) { union value v_in, v_out; - char buffer[FMT_MAX_NUMERIC_WIDTH]; + char *s; bool ok; v_in.f = number; - data_out (&v_in, format, buffer); + s = data_out (&v_in, "FIXME", format); msg_disable (); - ok = data_in (ss_buffer (buffer, format->w), LEGACY_NATIVE, - format->type, false, 0, 0, &v_out, 0); + /* FIXME: UTF8 encoded strings will fail here */ + ok = data_in (ss_cstr (s), LEGACY_NATIVE, + format->type, 0, 0, &v_out, 0, NULL); msg_enable (); if (ok && v_out.f == number) { - syntax_gen_string (output, ss_buffer (buffer, format->w)); + syntax_gen_string (output, ss_cstr (s)); + free (s); return; } + free (s); } if (number == SYSMIS) @@ -194,7 +198,10 @@ syntax_gen_value (struct string *output, const union value *value, int width, if (width == 0) syntax_gen_number (output, value->f, format); else - syntax_gen_string (output, ss_buffer (value->s, width)); + { + char *s = CHAR_CAST_BUG (char *, value_str (value, width)); + syntax_gen_string (output, ss_buffer (s, width)); + } } /* Appends THRU to OUTPUT. If LOW is LOWEST, then