projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
format: Create a new "struct fmt_affix" for prefix and suffix strings.
[pspp]
/
src
/
language
/
dictionary
/
value-labels.c
diff --git
a/src/language/dictionary/value-labels.c
b/src/language/dictionary/value-labels.c
index 5e3ea11f24654d0af73ff4cc1113123134bca00b..8c312ab8cee23ebec567ac3e1a8189285aa80e47 100644
(file)
--- a/
src/language/dictionary/value-labels.c
+++ b/
src/language/dictionary/value-labels.c
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2009
, 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
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
@@
-26,7
+26,6
@@
#include <language/lexer/lexer.h>
#include <language/lexer/value-parser.h>
#include <language/lexer/variable-parser.h>
#include <language/lexer/lexer.h>
#include <language/lexer/value-parser.h>
#include <language/lexer/variable-parser.h>
-#include <libpspp/hash.h>
#include <libpspp/message.h>
#include <libpspp/str.h>
#include <libpspp/message.h>
#include <libpspp/str.h>
@@
-65,9
+64,9
@@
do_value_labels (struct lexer *lexer, const struct dictionary *dict, bool erase)
size_t var_cnt; /* Number of variables. */
int parse_err=0; /* true if error parsing variables */
size_t var_cnt; /* Number of variables. */
int parse_err=0; /* true if error parsing variables */
- lex_match (lexer,
'/'
);
+ lex_match (lexer,
T_SLASH
);
- while (lex_token (lexer) !=
'.'
)
+ while (lex_token (lexer) !=
T_ENDCMD
)
{
parse_err = !parse_variables (lexer, dict, &vars, &var_cnt,
PV_SAME_WIDTH);
{
parse_err = !parse_variables (lexer, dict, &vars, &var_cnt,
PV_SAME_WIDTH);
@@
-78,11
+77,11
@@
do_value_labels (struct lexer *lexer, const struct dictionary *dict, bool erase)
}
if (erase)
erase_labels (vars, var_cnt);
}
if (erase)
erase_labels (vars, var_cnt);
- while (lex_token (lexer) !=
'/' && lex_token (lexer) != '.'
)
+ while (lex_token (lexer) !=
T_SLASH && lex_token (lexer) != T_ENDCMD
)
if (!get_label (lexer, vars, var_cnt))
goto lossage;
if (!get_label (lexer, vars, var_cnt))
goto lossage;
- if (lex_token (lexer) !=
'/'
)
+ if (lex_token (lexer) !=
T_SLASH
)
{
free (vars);
break;
{
free (vars);
break;
@@
-122,6
+121,7
@@
get_label (struct lexer *lexer, struct variable **vars, size_t var_cnt)
/* Parse all the labels and add them to the variables. */
do
{
/* Parse all the labels and add them to the variables. */
do
{
+ enum { MAX_LABEL_LEN = 255 };
int width = var_get_width (vars[0]);
union value value;
struct string label;
int width = var_get_width (vars[0]);
union value value;
struct string label;
@@
-134,7
+134,7
@@
get_label (struct lexer *lexer, struct variable **vars, size_t var_cnt)
value_destroy (&value, width);
return 0;
}
value_destroy (&value, width);
return 0;
}
- lex_match (lexer,
','
);
+ lex_match (lexer,
T_COMMA
);
/* Set label. */
if (lex_token (lexer) != T_ID && !lex_force_string (lexer))
/* Set label. */
if (lex_token (lexer) != T_ID && !lex_force_string (lexer))
@@
-143,12
+143,12
@@
get_label (struct lexer *lexer, struct variable **vars, size_t var_cnt)
return 0;
}
return 0;
}
- ds_init_s
tring (&label, lex_tokstr
(lexer));
+ ds_init_s
ubstring (&label, lex_tokss
(lexer));
- if (ds_length (&label) >
60
)
+ if (ds_length (&label) >
MAX_LABEL_LEN
)
{
{
- msg (SW, _("Truncating value label to
60 characters.")
);
- ds_truncate (&label,
60
);
+ msg (SW, _("Truncating value label to
%d bytes."), MAX_LABEL_LEN
);
+ ds_truncate (&label,
MAX_LABEL_LEN
);
}
for (i = 0; i < var_cnt; i++)
}
for (i = 0; i < var_cnt; i++)
@@
-158,9
+158,9
@@
get_label (struct lexer *lexer, struct variable **vars, size_t var_cnt)
value_destroy (&value, width);
lex_get (lexer);
value_destroy (&value, width);
lex_get (lexer);
- lex_match (lexer,
','
);
+ lex_match (lexer,
T_COMMA
);
}
}
- while (lex_token (lexer) !=
'/' && lex_token (lexer) != '.'
);
+ while (lex_token (lexer) !=
T_SLASH && lex_token (lexer) != T_ENDCMD
);
return 1;
}
return 1;
}