X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Frepeat.c;h=593263f8c4d490f5e27f91db2b946594aadaa693;hb=3417680e253b1bfc4519347ef06536378026be2a;hp=3b57b66a7398db1b391e5cadc38eb8daa1e76faf;hpb=b321086267ad1014dc5d09886396cde30f094437;p=pspp diff --git a/src/repeat.c b/src/repeat.c index 3b57b66a73..593263f8c4 100644 --- a/src/repeat.c +++ b/src/repeat.c @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include #include "repeat.h" @@ -27,20 +27,23 @@ #include "command.h" #include "dictionary.h" #include "error.h" -#include "getline.h" +#include "getl.h" #include "lexer.h" #include "misc.h" #include "settings.h" #include "str.h" #include "var.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + #include "debug-print.h" /* Describes one DO REPEAT macro. */ struct repeat_entry { int type; /* 1=variable names, 0=any other. */ - char id[9]; /* Macro identifier. */ + char id[LONG_NAME_LEN + 1]; /* Macro identifier. */ char **replacement; /* Macro replacement. */ struct repeat_entry *next; }; @@ -125,7 +128,7 @@ static int internal_cmd_do_repeat (void) { /* Name of first DO REPEAT macro. */ - char first_name[9]; + char first_name[LONG_NAME_LEN + 1]; /* Current filename. */ const char *current_filename = NULL; @@ -146,7 +149,7 @@ internal_cmd_do_repeat (void) if (!lex_force_id ()) return 0; for (iter = repeat_tab; iter; iter = iter->next) - if (!strcmp (iter->id, tokid)) + if (!strcasecmp (iter->id, tokid)) { msg (SE, _("Identifier %s is given twice."), tokid); return 0; @@ -169,7 +172,7 @@ internal_cmd_do_repeat (void) if (token == T_ID) result = parse_ids (e); - else if (token == T_NUM) + else if (lex_is_number ()) result = parse_numbers (e); else if (token == T_STRING) result = parse_strings (e); @@ -338,8 +341,8 @@ internal_cmd_do_repeat (void) static int parse_ids (struct repeat_entry * e) { - int i; - int n = 0; + size_t i; + size_t n = 0; e->type = 1; e->replacement = NULL; @@ -347,7 +350,7 @@ parse_ids (struct repeat_entry * e) do { char **names; - int nnames; + size_t nnames; if (!parse_mixed_vars (&names, &nnames, PV_NONE)) return 0; @@ -553,12 +556,12 @@ perform_DO_REPEAT_substitutions (void) /* Collect an identifier. */ { - char name[9]; + char name[LONG_NAME_LEN + 1]; char *start = cp; char *np = name; char *substitution; - while (CHAR_IS_IDN (*cp) && np < &name[8]) + while (CHAR_IS_IDN (*cp) && np < &name[LONG_NAME_LEN]) *np++ = *cp++; while (CHAR_IS_IDN (*cp)) cp++; @@ -576,7 +579,7 @@ perform_DO_REPEAT_substitutions (void) } } if (dot) - ds_putc (&output, get_endcmd() ); + ds_putc (&output, get_endcmd ()); ds_destroy (&getl_buf); getl_buf = output;