X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcount.c;h=8988f3cb6e73e36f4e12fecaa9411fd41e310c6d;hb=6ac27d1da3fdebee275343fcf7b6625fc1f1da79;hp=1697c0fbd3a32db806a66b2f304ff19f9281ac58;hpb=4fdeb2145d081ff1b84e3f6c99f9d1c048c0d64a;p=pspp-builds.git diff --git a/src/count.c b/src/count.c index 1697c0fb..8988f3cb 100644 --- a/src/count.c +++ b/src/count.c @@ -29,6 +29,9 @@ #include "str.h" #include "var.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + /* Implementation details: The S?SS manuals do not specify the order that COUNT subcommands are @@ -88,7 +91,7 @@ struct counting /* variables to count */ struct variable **v; - int n; + size_t n; /* values to count */ int missing; /* (numeric only) @@ -108,7 +111,7 @@ struct cnt_var_info struct cnt_var_info *next; struct variable *d; /* Destination variable. */ - char n[SHORT_NAME_LEN + 1]; /* Name of dest var. */ + char n[LONG_NAME_LEN + 1]; /* Name of dest var. */ struct counting *c; /* The counting specifications. */ }; @@ -145,7 +148,7 @@ cmd_count (void) cnt->d = NULL; cnt->c = NULL; - /* Get destination struct variable, or at least its name. */ + /* Get destination variable, or at least its name. */ if (!lex_force_id ()) goto fail; cnt->d = dict_lookup_var (default_dict, tokid); @@ -158,7 +161,7 @@ cmd_count (void) } } else - strcpy (cnt->n, tokid); + str_copy_trunc (cnt->n, sizeof cnt->n, tokid); lex_get (); if (!lex_force_match ('=')) @@ -229,15 +232,15 @@ fail: static int parse_numeric_criteria (struct counting * c) { - int n = 0; - int m = 0; + size_t n = 0; + size_t m = 0; c->crit.n = 0; c->missing = 0; for (;;) { struct cnt_num *cur; - if (n >= m - 1) + if (n + 1 >= m) { m += 16; c->crit.n = xrealloc (c->crit.n, m * sizeof (struct cnt_num)); @@ -325,10 +328,10 @@ parse_string_criteria (struct counting * c) { int len = 0; - int n = 0; - int m = 0; + size_t n = 0; + size_t m = 0; - int i; + size_t i; for (i = 0; i < c->n; i++) if (c->v[i]->width > len) @@ -338,7 +341,7 @@ parse_string_criteria (struct counting * c) for (;;) { struct cnt_str *cur; - if (n >= m - 1) + if (n + 1 >= m) { m += 16; c->crit.n = xrealloc (c->crit.n, m * sizeof (struct cnt_str)); @@ -349,7 +352,7 @@ parse_string_criteria (struct counting * c) cur = &c->crit.s[n++]; cur->type = CNT_SINGLE; cur->s = malloc (len + 1); - st_pad_copy (cur->s, ds_c_str (&tokstr), len + 1); + str_copy_rpad (cur->s, len + 1, ds_c_str (&tokstr)); lex_get (); lex_match (','); @@ -368,7 +371,7 @@ static inline int count_numeric (struct counting * cnt, struct ccase * c) { int counter = 0; - int i; + size_t i; for (i = 0; i < cnt->n; i++) { @@ -382,7 +385,7 @@ count_numeric (struct counting * cnt, struct ccase * c) counter++; continue; } - if (cnt->missing >= 2 && is_num_user_missing (cmp, cnt->v[i])) + if (cnt->missing >= 2 && mv_is_num_user_missing (&cnt->v[i]->miss, cmp)) { counter++; continue; @@ -433,7 +436,7 @@ static inline int count_string (struct counting * cnt, struct ccase * c) { int counter = 0; - int i; + size_t i; for (i = 0; i < cnt->n; i++) {