X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=progs%2Finfocmp.c;h=e034a58596fc9fd4a90f02be7a80a08992590557;hp=a34153edbe98b4d84394b03e252848dce36812aa;hb=331f875facea2b7897c1ce0425ce0d111cc4175b;hpb=8f527f87c0b979d9c2598ef5c3394463af288468 diff --git a/progs/infocmp.c b/progs/infocmp.c index a34153ed..e034a585 100644 --- a/progs/infocmp.c +++ b/progs/infocmp.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -42,7 +42,7 @@ #include -MODULE_ID("$Id: infocmp.c,v 1.102 2008/08/04 13:05:18 tom Exp $") +MODULE_ID("$Id: infocmp.c,v 1.106 2011/05/14 22:51:04 tom Exp $") #define L_CURL "{" #define R_CURL "}" @@ -70,7 +70,7 @@ static const char *bool_sep = ":"; static const char *s_absent = "NULL"; static const char *s_cancel = "NULL"; static const char *tversion; /* terminfo version selected */ -static int itrace; /* trace flag for debugging */ +static unsigned itrace; /* trace flag for debugging */ static int mwidth = 60; static int numbers = 0; /* format "%'char'" to/from "%{number}" */ static int outform = F_TERMINFO; /* output format */ @@ -221,7 +221,7 @@ static bool useeq(ENTRY * e1, ENTRY * e2) /* are the use references in two entries equivalent? */ { - int i, j; + unsigned i, j; if (e1->nuses != e2->nuses) return (FALSE); @@ -271,7 +271,7 @@ static void print_uses(ENTRY * ep, FILE *fp) /* print an entry's use references */ { - int i; + unsigned i; if (!ep->nuses) fputs("NULL", fp); @@ -556,7 +556,7 @@ skip_csi(const char *cap) } static bool -same_param(const char *table, const char *param, unsigned length) +same_param(const char *table, const char *param, size_t length) { bool result = FALSE; if (strncmp(table, param, length) == 0) { @@ -659,7 +659,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) if (!expansion) { csi = skip_csi(sp); for (ap = std_caps; ap->from; ap++) { - size_t adj = (size_t)(csi ? 2 : 0); + size_t adj = (size_t) (csi ? 2 : 0); len = strlen(ap->from); if (csi && skip_csi(ap->from) != csi) @@ -894,8 +894,6 @@ file_comparison(int argc, char *argv[]) (void) printf("The following entries are equivalent:\n"); for (qp = heads[0]; qp; qp = qp->next) { - rp = qp->crosslinks[0]; - if (qp->ncrosslinks == 1) { rp = qp->crosslinks[0]; @@ -1092,7 +1090,8 @@ dump_initializers(TERMTYPE *term) *tp++ = '"'; *tp = '\0'; (void) printf("static char %-20s[] = %s;\n", - string_variable(ExtStrname(term, n, strnames)), buf); + string_variable(ExtStrname(term, (int) n, strnames)), + buf); } } printf("\n"); @@ -1118,7 +1117,7 @@ dump_initializers(TERMTYPE *term) break; } (void) printf("\t/* %3u: %-8s */\t%s,\n", - n, ExtBoolname(term, n, boolnames), str); + n, ExtBoolname(term, (int) n, boolnames), str); } (void) printf("%s;\n", R_CURL); @@ -1139,7 +1138,7 @@ dump_initializers(TERMTYPE *term) break; } (void) printf("\t/* %3u: %-8s */\t%s,\n", n, - ExtNumname(term, n, numnames), str); + ExtNumname(term, (int) n, numnames), str); } (void) printf("%s;\n", R_CURL); @@ -1152,10 +1151,10 @@ dump_initializers(TERMTYPE *term) else if (term->Strings[n] == CANCELLED_STRING) str = "CANCELLED_STRING"; else { - str = string_variable(ExtStrname(term, n, strnames)); + str = string_variable(ExtStrname(term, (int) n, strnames)); } (void) printf("\t/* %3u: %-8s */\t%s,\n", n, - ExtStrname(term, n, strnames), str); + ExtStrname(term, (int) n, strnames), str); } (void) printf("%s;\n", R_CURL); @@ -1167,15 +1166,15 @@ dump_initializers(TERMTYPE *term) name_initializer("string_ext"), L_CURL); for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) { (void) printf("\t/* %3u: bool */\t\"%s\",\n", - n, ExtBoolname(term, n, boolnames)); + n, ExtBoolname(term, (int) n, boolnames)); } for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) { (void) printf("\t/* %3u: num */\t\"%s\",\n", - n, ExtNumname(term, n, numnames)); + n, ExtNumname(term, (int) n, numnames)); } for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) { (void) printf("\t/* %3u: str */\t\"%s\",\n", - n, ExtStrname(term, n, strnames)); + n, ExtStrname(term, (int) n, strnames)); } (void) printf("%s;\n", R_CURL); } @@ -1255,6 +1254,15 @@ terminal_env(void) * ***************************************************************************/ +#if NO_LEAKS +#define MAIN_LEAKS() \ + free(myargv); \ + free(tfile); \ + free(tname) +#else +#define MAIN_LEAKS() /* nothing */ +#endif + int main(int argc, char *argv[]) { @@ -1262,7 +1270,7 @@ main(int argc, char *argv[]) /* Also avoid overflowing smaller stacks on systems like AmigaOS */ path *tfile = 0; char **tname = 0; - int maxterms; + size_t maxterms; char **myargv; @@ -1284,7 +1292,7 @@ main(int argc, char *argv[]) _nc_progname = _nc_rootname(argv[0]); /* make sure we have enough space to add two terminal entries */ - myargv = typeCalloc(char *, (size_t)(argc + 3)); + myargv = typeCalloc(char *, (size_t) (argc + 3)); memcpy(myargv, argv, (sizeof(char *) * (size_t) argc)); argv = myargv; @@ -1434,7 +1442,7 @@ main(int argc, char *argv[]) ExitProgram(EXIT_SUCCESS); case 'v': - itrace = optarg_to_number(); + itrace = (unsigned) optarg_to_number(); set_trace_level(itrace); break; @@ -1453,7 +1461,7 @@ main(int argc, char *argv[]) } } - maxterms = (argc + 2 - optind); + maxterms = (size_t) (argc + 2 - optind); tfile = typeMalloc(path, maxterms); tname = typeCalloc(char *, maxterms); entries = typeCalloc(ENTRY, maxterms); @@ -1514,6 +1522,7 @@ main(int argc, char *argv[]) #else (void) fprintf(stderr, "%s: terminfo files not supported\n", _nc_progname); + MAIN_LEAKS(); ExitProgram(EXIT_FAILURE); #endif } else { @@ -1526,7 +1535,6 @@ main(int argc, char *argv[]) status = _nc_read_entry(tname[termcount], tfile[termcount], &entries[termcount].tterm); - directory = TERMINFO; /* for error message */ } if (status <= 0) { @@ -1534,6 +1542,7 @@ main(int argc, char *argv[]) "%s: couldn't open terminfo file %s.\n", _nc_progname, tfile[termcount]); + MAIN_LEAKS(); ExitProgram(EXIT_FAILURE); } repair_acsc(&entries[termcount].tterm); @@ -1642,11 +1651,7 @@ main(int argc, char *argv[]) else file_comparison(argc - optind, argv + optind); -#if NO_LEAKS - free(myargv); - free(tfile); - free(tname); -#endif + MAIN_LEAKS(); ExitProgram(EXIT_SUCCESS); }