projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lexer: Reimplement for better testability and internationalization.
[pspp-builds.git]
/
src
/
language
/
data-io
/
save-translate.c
diff --git
a/src/language/data-io/save-translate.c
b/src/language/data-io/save-translate.c
index 3e33ff112536c539d94fd1b66844c8e98b67d2f0..d4c67b02b69bdd59a23587ee2eded16688a37f05 100644
(file)
--- a/
src/language/data-io/save-translate.c
+++ b/
src/language/data-io/save-translate.c
@@
-84,7
+84,7
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
case_map_prepare_dict (dict);
dict_delete_scratch_vars (dict);
case_map_prepare_dict (dict);
dict_delete_scratch_vars (dict);
- while (lex_match (lexer,
'/'
))
+ while (lex_match (lexer,
T_SLASH
))
{
if (lex_match_id (lexer, "OUTFILE"))
{
{
if (lex_match_id (lexer, "OUTFILE"))
{
@@
-94,7
+94,7
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
goto error;
}
goto error;
}
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
handle = fh_parse (lexer, FH_REF_FILE);
if (handle == NULL)
handle = fh_parse (lexer, FH_REF_FILE);
if (handle == NULL)
@@
-108,7
+108,7
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
goto error;
}
goto error;
}
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
if (lex_match_id (lexer, "CSV"))
type = CSV_FILE;
else if (lex_match_id (lexer, "TAB"))
if (lex_match_id (lexer, "CSV"))
type = CSV_FILE;
else if (lex_match_id (lexer, "TAB"))
@@
-125,7
+125,7
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
include_var_names = true;
else if (lex_match_id (lexer, "MISSING"))
{
include_var_names = true;
else if (lex_match_id (lexer, "MISSING"))
{
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
if (lex_match_id (lexer, "IGNORE"))
recode_user_missing = false;
else if (lex_match_id (lexer, "RECODE"))
if (lex_match_id (lexer, "IGNORE"))
recode_user_missing = false;
else if (lex_match_id (lexer, "RECODE"))
@@
-138,7
+138,7
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
}
else if (lex_match_id (lexer, "CELLS"))
{
}
else if (lex_match_id (lexer, "CELLS"))
{
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
if (lex_match_id (lexer, "VALUES"))
use_value_labels = false;
else if (lex_match_id (lexer, "LABELS"))
if (lex_match_id (lexer, "VALUES"))
use_value_labels = false;
else if (lex_match_id (lexer, "LABELS"))
@@
-151,40
+151,42
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
}
else if (lex_match_id (lexer, "TEXTOPTIONS"))
{
}
else if (lex_match_id (lexer, "TEXTOPTIONS"))
{
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
for (;;)
{
if (lex_match_id (lexer, "DELIMITER"))
{
for (;;)
{
if (lex_match_id (lexer, "DELIMITER"))
{
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
if (!lex_force_string (lexer))
goto error;
if (!lex_force_string (lexer))
goto error;
- if (ds_length (lex_tokstr (lexer)) != 1)
+ /* XXX should support multibyte UTF-8 delimiters */
+ if (ss_length (lex_tokss (lexer)) != 1)
{
msg (SE, _("The %s string must contain exactly one "
"character."), "DELIMITER");
goto error;
}
{
msg (SE, _("The %s string must contain exactly one "
"character."), "DELIMITER");
goto error;
}
- delimiter =
ds_first (lex_tokstr
(lexer));
+ delimiter =
ss_first (lex_tokss
(lexer));
lex_get (lexer);
}
else if (lex_match_id (lexer, "QUALIFIER"))
{
lex_get (lexer);
}
else if (lex_match_id (lexer, "QUALIFIER"))
{
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
if (!lex_force_string (lexer))
goto error;
if (!lex_force_string (lexer))
goto error;
- if (ds_length (lex_tokstr (lexer)) != 1)
+ /* XXX should support multibyte UTF-8 qualifiers */
+ if (ss_length (lex_tokss (lexer)) != 1)
{
msg (SE, _("The %s string must contain exactly one "
"character."), "QUALIFIER");
goto error;
}
{
msg (SE, _("The %s string must contain exactly one "
"character."), "QUALIFIER");
goto error;
}
- qualifier =
ds_first (lex_tokstr
(lexer));
+ qualifier =
ss_first (lex_tokss
(lexer));
lex_get (lexer);
}
else if (lex_match_id (lexer, "DECIMAL"))
{
lex_get (lexer);
}
else if (lex_match_id (lexer, "DECIMAL"))
{
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
if (lex_match_id (lexer, "DOT"))
decimal = '.';
else if (lex_match_id (lexer, "COMMA"))
if (lex_match_id (lexer, "DOT"))
decimal = '.';
else if (lex_match_id (lexer, "COMMA"))
@@
-198,7
+200,7
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
}
else if (lex_match_id (lexer, "FORMAT"))
{
}
else if (lex_match_id (lexer, "FORMAT"))
{
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
if (lex_match_id (lexer, "PLAIN"))
use_print_formats = false;
else if (lex_match_id (lexer, "VARIABLE"))
if (lex_match_id (lexer, "PLAIN"))
use_print_formats = false;
else if (lex_match_id (lexer, "VARIABLE"))
@@
-216,7
+218,7
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
}
else if (lex_match_id (lexer, "UNSELECTED"))
{
}
else if (lex_match_id (lexer, "UNSELECTED"))
{
- lex_match (lexer,
'='
);
+ lex_match (lexer,
T_EQUALS
);
if (lex_match_id (lexer, "RETAIN"))
retain_unselected = true;
else if (lex_match_id (lexer, "DELETE"))
if (lex_match_id (lexer, "RETAIN"))
retain_unselected = true;
else if (lex_match_id (lexer, "DELETE"))
@@
-245,7
+247,7
@@
cmd_save_translate (struct lexer *lexer, struct dataset *ds)
}
else if (!replace && fn_exists (fh_get_file_name (handle)))
{
}
else if (!replace && fn_exists (fh_get_file_name (handle)))
{
- msg (SE, _("Output file
\"%s\"
exists but REPLACE was not specified."),
+ msg (SE, _("Output file
`%s'
exists but REPLACE was not specified."),
fh_get_file_name (handle));
goto error;
}
fh_get_file_name (handle));
goto error;
}