/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2010, 2011, 2012, 2014 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 "libpspp/pool.h"
#include "libpspp/str.h"
+#include "gl/c-strcase.h"
#include "gl/xalloc.h"
\f
/* Declarations. */
atom_type_name (actual_type));
return false;
}
- if (actual_type == OP_number && expected_type == OP_boolean)
- *n = expr_allocate_unary (e, OP_NUM_TO_BOOLEAN, *n);
+ if (actual_type == OP_number && expected_type == EXPR_BOOLEAN)
+ *n = expr_allocate_binary (e, OP_NUM_TO_BOOLEAN, *n,
+ expr_allocate_string (e, ss_empty ()));
break;
case EXPR_STRING:
dict_encoding = (e->ds != NULL
? dict_get_encoding (dataset_dict (e->ds))
: "UTF-8");
- s = recode_string (dict_encoding, "UTF-8", lex_tokcstr (lexer),
- ss_length (lex_tokss (lexer)));
+ s = recode_string_pool (dict_encoding, "UTF-8", lex_tokcstr (lexer),
+ ss_length (lex_tokss (lexer)), e->expr_pool);
node = expr_allocate_string (e, ss_cstr (s));
lex_get (lexer);
static int
compare_strings (const char *test, const char *name, bool abbrev_ok UNUSED)
{
- return strcasecmp (test, name);
+ return c_strcasecmp (test, name);
}
static bool
break;
else if (!lex_match (lexer, T_COMMA))
{
- lex_error_expecting (lexer, ",", ")", NULL_SENTINEL);
+ lex_error_expecting (lexer, "`,'", "`)'", NULL_SENTINEL);
goto fail;
}
}
msg (SW, _("%s is a PSPP extension."), f->prototype);
if (f->flags & OPF_UNIMPLEMENTED)
{
- msg (SE, _("%s is not yet implemented."), f->prototype);
+ msg (SE, _("%s is not available in this version of PSPP."),
+ f->prototype);
goto fail;
}
if ((f->flags & OPF_PERM_ONLY) &&
proc_in_temporary_transformations (e->ds))
{
- msg (SE, _("%s may not appear after TEMPORARY."), f->prototype);
+ msg (SE, _("%s may not appear after %s."), f->prototype, "TEMPORARY");
goto fail;
}