X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Faggregate.c;h=86f35287c01f7a9ade2982728e8f8ebfede67e97;hb=17896e38991000673747aa115b3f7aeb9a57a40f;hp=154256f5e59b96260b2c4ea713f427ee44e7c78a;hpb=1339492699ce7e12c9bf9fa17f9d60a66024cbd1;p=pspp-builds.git diff --git a/src/aggregate.c b/src/aggregate.c index 154256f5..86f35287 100644 --- a/src/aggregate.c +++ b/src/aggregate.c @@ -33,12 +33,16 @@ #include "pool.h" #include "settings.h" #include "sfm-write.h" +#include "sort-prs.h" #include "sort.h" #include "str.h" #include "var.h" #include "vfm.h" #include "vfmP.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + /* Specifies how to make an aggregate variable. */ struct agr_var { @@ -73,7 +77,7 @@ enum struct agr_func { const char *name; /* Aggregation function name. */ - int n_args; /* Number of arguments. */ + size_t n_args; /* Number of arguments. */ int alpha_type; /* When given ALPHA arguments, output type. */ struct fmt_spec format; /* Format spec if alpha_type != ALPHA. */ }; @@ -208,7 +212,7 @@ cmd_aggregate (void) lex_match ('='); agr.sort = sort_parse_criteria (default_dict, &agr.break_vars, &agr.break_var_cnt, - &saw_direction); + &saw_direction, NULL); if (agr.sort == NULL) goto error; @@ -274,7 +278,8 @@ cmd_aggregate (void) } else { - agr.writer = sfm_open_writer (out_file, agr.dict, get_scompression (), 0); + agr.writer = sfm_open_writer (out_file, agr.dict, + sfm_writer_default_options ()); if (agr.writer == NULL) goto error; @@ -331,7 +336,7 @@ parse_aggregate_functions (struct agr_proc *agr) { char **dest; char **dest_label; - int n_dest; + size_t n_dest; int include_missing; const struct agr_func *function; @@ -340,9 +345,9 @@ parse_aggregate_functions (struct agr_proc *agr) union value arg[2]; struct variable **src; - int n_src; + size_t n_src; - int i; + size_t i; dest = NULL; dest_label = NULL; @@ -356,7 +361,7 @@ parse_aggregate_functions (struct agr_proc *agr) /* Parse the list of target variables. */ while (!lex_match ('=')) { - int n_dest_prev = n_dest; + size_t n_dest_prev = n_dest; if (!parse_DATA_LIST_vars (&dest, &n_dest, PV_APPEND | PV_SINGLE | PV_NO_SCRATCH)) @@ -366,7 +371,7 @@ parse_aggregate_functions (struct agr_proc *agr) { int j; - dest_label = xrealloc (dest_label, sizeof *dest_label * n_dest); + dest_label = xnrealloc (dest_label, n_dest, sizeof *dest_label); for (j = n_dest_prev; j < n_dest; j++) dest_label[j] = NULL; } @@ -481,9 +486,9 @@ parse_aggregate_functions (struct agr_proc *agr) like `unknown variable t'. */ if (n_src != n_dest) { - msg (SE, _("Number of source variables (%d) does not match " - "number of target variables (%d)."), - n_src, n_dest); + msg (SE, _("Number of source variables (%u) does not match " + "number of target variables (%u)."), + (unsigned) n_src, (unsigned) n_dest); goto error; } @@ -491,8 +496,7 @@ parse_aggregate_functions (struct agr_proc *agr) || func_index == FIN || func_index == FOUT) && ((src[0]->type == NUMERIC && arg[0].f > arg[1].f) || (src[0]->type == ALPHA - && st_compare_pad (arg[0].c, strlen (arg[0].c), - arg[1].c, strlen (arg[1].c)) > 0))) + && str_compare_rpad (arg[0].c, arg[1].c) > 0))) { union value t = arg[0]; arg[0] = arg[1]; @@ -523,7 +527,6 @@ parse_aggregate_functions (struct agr_proc *agr) /* Create the target variable in the aggregate dictionary. */ { - static const struct fmt_spec f8_2 = {FMT_F, 8, 2}; struct variable *destvar; v->function = func_index; @@ -660,8 +663,8 @@ agr_destroy (struct agr_proc *agr) if (iter->function & FSTRING) { - int n_args; - int i; + size_t n_args; + size_t i; n_args = agr_func_tab[iter->function & FUNC].n_args; for (i = 0; i < n_args; i++) @@ -724,7 +727,8 @@ accumulate_aggregate_info (struct agr_proc *agr, { const union value *v = case_data (input, iter->src->fv); - if ((!iter->include_missing && is_missing (v, iter->src)) + if ((!iter->include_missing + && mv_is_value_missing (&iter->src->miss, v)) || (iter->include_missing && iter->src->type == NUMERIC && v->f == SYSMIS)) {