/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2009 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 <data/procedure.h>
#include <data/value.h>
#include <data/variable.h>
+#include <data/format.h>
#include <language/command.h>
#include <language/lexer/lexer.h>
+#include <language/lexer/value-parser.h>
#include <language/lexer/variable-parser.h>
-#include <language/lexer/range-parser.h>
#include <libpspp/message.h>
#include <libpspp/message.h>
#include <libpspp/str.h>
ok = (x == y
? mv_add_num (&mv, x)
- : mv_add_num_range (&mv, x, y));
+ : mv_add_range (&mv, x, y));
if (!ok)
deferred_errors = true;
}
else
{
- struct string value;
-
- mv_init (&mv, MAX_SHORT_STRING);
+ mv_init (&mv, MV_MAX_STRING);
while (!lex_match (lexer, ')'))
{
+ uint8_t value[MV_MAX_STRING];
+ size_t length;
+
if (!lex_force_string (lexer))
{
deferred_errors = true;
break;
}
- ds_init_string (&value, lex_tokstr (lexer));
-
- if (ds_length (&value) > MAX_SHORT_STRING)
+ length = ds_length (lex_tokstr (lexer));
+ if (length > MV_MAX_STRING)
{
- ds_truncate (&value, MAX_SHORT_STRING);
- msg (SE, _("Truncating missing value to short string "
- "length (%d characters)."),
- MAX_SHORT_STRING);
+ msg (SE, _("Truncating missing value to maximum "
+ "acceptable length (%d bytes)."),
+ MV_MAX_STRING);
+ length = MV_MAX_STRING;
}
- else
- ds_rpad (&value, MAX_SHORT_STRING, ' ');
+ memset (value, ' ', MV_MAX_STRING);
+ memcpy (value, ds_data (lex_tokstr (lexer)), length);
- if (!mv_add_str (&mv, ds_data (&value)))
+ if (!mv_add_str (&mv, value))
deferred_errors = true;
- ds_destroy (&value);
lex_get (lexer);
lex_match (lexer, ',');
deferred_errors = true;
}
}
+
+ mv_destroy (&mv);
}
lex_match (lexer, '/');