projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve error messages for missing subcommands.
[pspp]
/
src
/
language
/
dictionary
/
mrsets.c
diff --git
a/src/language/dictionary/mrsets.c
b/src/language/dictionary/mrsets.c
index 97ab2c1fb4ffdded42110f9812ef73d3454a777b..1f281221a258c6e49d3a0183ccb74c01321008fb 100644
(file)
--- a/
src/language/dictionary/mrsets.c
+++ b/
src/language/dictionary/mrsets.c
@@
-79,11
+79,10
@@
parse_group (struct lexer *lexer, struct dictionary *dict,
enum mrset_type type)
{
const char *subcommand_name = type == MRSET_MD ? "MDGROUP" : "MCGROUP";
enum mrset_type type)
{
const char *subcommand_name = type == MRSET_MD ? "MDGROUP" : "MCGROUP";
- struct mrset *mrset;
bool labelsource_varlabel;
bool has_value;
bool labelsource_varlabel;
bool has_value;
-
mrset = xzalloc (sizeof *
mrset);
+
struct mrset *mrset = XZALLOC (struct
mrset);
mrset->type = type;
mrset->cat_source = MRSET_VARLABELS;
mrset->type = type;
mrset->cat_source = MRSET_VARLABELS;
@@
-93,10
+92,16
@@
parse_group (struct lexer *lexer, struct dictionary *dict,
{
if (lex_match_id (lexer, "NAME"))
{
{
if (lex_match_id (lexer, "NAME"))
{
- if (!lex_force_match (lexer, T_EQUALS) || !lex_force_id (lexer)
- || !mrset_is_valid_name (lex_tokcstr (lexer),
- dict_get_encoding (dict), true))
+ if (!lex_force_match (lexer, T_EQUALS) || !lex_force_id (lexer))
goto error;
goto error;
+ char *error = mrset_is_valid_name__ (lex_tokcstr (lexer),
+ dict_get_encoding (dict));
+ if (error)
+ {
+ lex_error (lexer, "%s", error);
+ free (error);
+ goto error;
+ }
free (mrset->name);
mrset->name = xstrdup (lex_tokcstr (lexer));
free (mrset->name);
mrset->name = xstrdup (lex_tokcstr (lexer));
@@
-147,7
+152,7
@@
parse_group (struct lexer *lexer, struct dictionary *dict,
{
if (!lex_is_integer (lexer))
{
{
if (!lex_is_integer (lexer))
{
-
msg (SE
, _("Numeric VALUE must be an integer."));
+
lex_error (lexer
, _("Numeric VALUE must be an integer."));
goto error;
}
value_destroy (&mrset->counted, mrset->width);
goto error;
}
value_destroy (&mrset->counted, mrset->width);
@@
-170,7
+175,7
@@
parse_group (struct lexer *lexer, struct dictionary *dict,
value_destroy (&mrset->counted, mrset->width);
value_init (&mrset->counted, width);
value_destroy (&mrset->counted, mrset->width);
value_init (&mrset->counted, width);
- memcpy (
value_str_rw (&mrset->counted, width)
, s, width);
+ memcpy (
mrset->counted.s
, s, width);
mrset->width = width;
free (s);
mrset->width = width;
free (s);
@@
-421,7
+426,8
@@
parse_group (struct lexer *lexer, struct dictionary *dict,
if (!c->warned && utf8_strcasecmp (c->label, label))
{
char *s = data_out (value, var_get_encoding (var),
if (!c->warned && utf8_strcasecmp (c->label, label))
{
char *s = data_out (value, var_get_encoding (var),
- var_get_print_format (var));
+ var_get_print_format (var),
+ settings_get_fmt_settings ());
c->warned = true;
msg (SW, _("Variables specified on MCGROUP should "
"have the same categories, but %s and %s "
c->warned = true;
msg (SW, _("Variables specified on MCGROUP should "
"have the same categories, but %s and %s "
@@
-481,8
+487,8
@@
parse_mrset_names (struct lexer *lexer, struct dictionary *dict,
return false;
if (dict_lookup_mrset (dict, lex_tokcstr (lexer)) == NULL)
{
return false;
if (dict_lookup_mrset (dict, lex_tokcstr (lexer)) == NULL)
{
-
msg (SE
, _("No multiple response set named %s."),
- lex_tokcstr (lexer));
+
lex_error (lexer
, _("No multiple response set named %s."),
+
lex_tokcstr (lexer));
stringi_set_destroy (mrset_names);
return false;
}
stringi_set_destroy (mrset_names);
return false;
}