X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fsort-criteria.c;h=bbb33f23883c3718be065f1fe97144c661c4c1cb;hb=e66ec694c4237bbc9e77bb3822a333377318ef94;hp=b09dee3943f347cbc2622d845078257877f97d24;hpb=e9aa6e433b846849da90550f6800095d569fb549;p=pspp-builds.git diff --git a/src/language/stats/sort-criteria.c b/src/language/stats/sort-criteria.c index b09dee39..bbb33f23 100644 --- a/src/language/stats/sort-criteria.c +++ b/src/language/stats/sort-criteria.c @@ -1,6 +1,5 @@ /* PSPP - computes sample statistics. Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. - Written by Ben Pfaff . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -50,7 +49,7 @@ static bool is_terminator(int tok, const int *terminators); */ struct sort_criteria * -sort_parse_criteria (const struct dictionary *dict, +sort_parse_criteria (struct lexer *lexer, const struct dictionary *dict, struct variable ***vars, size_t *var_cnt, bool *saw_direction, const int *terminators @@ -82,23 +81,23 @@ sort_parse_criteria (const struct dictionary *dict, enum sort_direction direction; /* Variables. */ - if (!parse_variables (dict, vars, var_cnt, + if (!parse_variables (lexer, dict, vars, var_cnt, PV_NO_DUPLICATE | PV_APPEND | PV_NO_SCRATCH)) goto error; /* Sort direction. */ - if (lex_match ('(')) + if (lex_match (lexer, '(')) { - if (lex_match_id ("D") || lex_match_id ("DOWN")) + if (lex_match_id (lexer, "D") || lex_match_id (lexer, "DOWN")) direction = SRT_DESCEND; - else if (lex_match_id ("A") || lex_match_id ("UP")) + else if (lex_match_id (lexer, "A") || lex_match_id (lexer, "UP")) direction = SRT_ASCEND; else { msg (SE, _("`A' or `D' expected inside parentheses.")); goto error; } - if (!lex_match (')')) + if (!lex_match (lexer, ')')) { msg (SE, _("`)' expected.")); goto error; @@ -115,12 +114,12 @@ sort_parse_criteria (const struct dictionary *dict, for (; prev_var_cnt < criteria->crit_cnt; prev_var_cnt++) { struct sort_criterion *c = &criteria->crits[prev_var_cnt]; - c->fv = (*vars)[prev_var_cnt]->fv; - c->width = (*vars)[prev_var_cnt]->width; + c->fv = var_get_case_index ((*vars)[prev_var_cnt]); + c->width = var_get_width ((*vars)[prev_var_cnt]); c->dir = direction; } } - while (token != '.' && token != '/' && !is_terminator(token, terminators)); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/' && !is_terminator(lex_token (lexer), terminators)); free (local_vars); return criteria;