X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=progs%2Finfocmp.c;h=c1b95088b113e23c0cbb990032a719a35aa9194c;hp=adc53ba0de66d9774a2b5ed6fb74b14541350a2b;hb=d761c922d94448b16b71061ee5efeb346b744f13;hpb=a5fe3726f7d4374e9b1551b535c8617b423996f2 diff --git a/progs/infocmp.c b/progs/infocmp.c index adc53ba0..c1b95088 100644 --- a/progs/infocmp.c +++ b/progs/infocmp.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2020-2021,2022 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -43,7 +43,7 @@ #include -MODULE_ID("$Id: infocmp.c,v 1.149 2021/04/17 15:24:04 tom Exp $") +MODULE_ID("$Id: infocmp.c,v 1.155 2022/09/03 23:28:48 tom Exp $") #define MAX_STRING 1024 /* maximum formatted string */ @@ -124,17 +124,19 @@ failed(const char *s) ExitProgram(EXIT_FAILURE); } -static char * -canonical_name(char *ptr, char *buf) +static void +canonical_name(char *source, char *target) /* extract the terminal type's primary name */ { - char *bp; - - _nc_STRCPY(buf, ptr, NAMESIZE); - if ((bp = strchr(buf, '|')) != 0) - *bp = '\0'; + int limit = NAMESIZE; - return (buf); + while (--limit > 0) { + char ch = *source++; + if (ch == '|') + break; + *target++ = ch; + } + *target = '\0'; } static bool @@ -419,7 +421,7 @@ show_comparing(char **names) /* * ncurses stores two types of non-standard capabilities: - * a) capabilities listed past the "STOP-HERE" comment in the Caps file. + * a) capabilities listed past the "STOP-HERE" comment in the Caps file. * These are used in the terminfo source file to provide data for termcaps, * e.g., when there is no equivalent capability in terminfo, as well as for * widely-used non-standard capabilities. @@ -1132,8 +1134,8 @@ file_comparison(int argc, char *argv[]) if (entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp)) { char name1[NAMESIZE], name2[NAMESIZE]; - (void) canonical_name(qp->tterm.term_names, name1); - (void) canonical_name(rp->tterm.term_names, name2); + canonical_name(qp->tterm.term_names, name1); + canonical_name(rp->tterm.term_names, name2); (void) printf("%s = %s\n", name1, name2); } @@ -1161,8 +1163,8 @@ file_comparison(int argc, char *argv[]) entries[0] = *qp; entries[1] = *rp; - (void) canonical_name(qp->tterm.term_names, name1); - (void) canonical_name(rp->tterm.term_names, name2); + canonical_name(qp->tterm.term_names, name1); + canonical_name(rp->tterm.term_names, name2); switch (compare) { case C_DIFFERENCE: @@ -1513,6 +1515,8 @@ show_databases(void) #if NO_LEAKS #define MAIN_LEAKS() \ + _nc_free_termtype2(&entries[0].tterm); \ + _nc_free_termtype2(&entries[1].tterm); \ free(myargv); \ free(tfile); \ free(tname) @@ -1723,7 +1727,7 @@ main(int argc, char *argv[]) case 'v': itrace = (unsigned) optarg_to_number(); - set_trace_level(itrace); + use_verbosity(itrace); break; case 'W':