X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=progs%2Ftoe.c;h=3d35fcd3f08143618d141ec56eeda14da9e483d1;hp=6f45992f712416ceb837b6d7a4dbfb1194685ab9;hb=03f728e5bb3630a54fffc4a2ff2f8dbfcce9088e;hpb=92e187a3459ab7ce1613a3684ca6642447c73620 diff --git a/progs/toe.c b/progs/toe.c index 6f45992f..3d35fcd3 100644 --- a/progs/toe.c +++ b/progs/toe.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2010 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 * @@ -44,7 +44,7 @@ #include #endif -MODULE_ID("$Id: toe.c,v 1.52 2010/05/01 22:04:08 tom Exp $") +MODULE_ID("$Id: toe.c,v 1.58 2011/08/07 18:36:31 tom Exp $") #define isDotname(name) (!strcmp(name, ".") || !strcmp(name, "..")) @@ -61,6 +61,8 @@ ExitProgram(int code) } #endif +static void failed(const char *) GCC_NORETURN; + static void failed(const char *msg) { @@ -179,8 +181,10 @@ typelist(int eargc, char *eargv[], (void) fprintf(stderr, "%s: can't open terminfo directory %s\n", _nc_progname, eargv[i]); - return (EXIT_FAILURE); - } else if (verbosity) + continue; + } + + if (verbosity) (void) printf("#\n#%s:\n#\n", eargv[i]); while ((subdir = readdir(termdir)) != 0) { @@ -242,12 +246,16 @@ typelist(int eargc, char *eargv[], closedir(termdir); if (cwd_buf != 0) free(cwd_buf); + continue; } #if USE_HASHED_DB else { DB *capdbp; char filename[PATH_MAX]; + if (verbosity) + (void) printf("#\n#%s:\n#\n", eargv[i]); + if (make_db_name(filename, eargv[i], sizeof(filename))) { if ((capdbp = _nc_db_open(filename, FALSE)) != 0) { DBT key, data; @@ -273,6 +281,7 @@ typelist(int eargc, char *eargv[], } _nc_db_close(capdbp); + continue; } } } @@ -280,30 +289,36 @@ typelist(int eargc, char *eargv[], #endif #if USE_TERMCAP #if HAVE_BSD_CGETENT - char *db_array[2]; - char *buffer = 0; + { + CGETENT_CONST char *db_array[2]; + char *buffer = 0; - if (verbosity) - (void) printf("#\n#%s:\n#\n", eargv[i]); + if (verbosity) + (void) printf("#\n#%s:\n#\n", eargv[i]); - db_array[0] = eargv[i]; - db_array[1] = 0; + db_array[0] = eargv[i]; + db_array[1] = 0; - if (cgetfirst(&buffer, db_array)) { - show_termcap(buffer, hook); - free(buffer); - while (cgetnext(&buffer, db_array)) { + if (cgetfirst(&buffer, db_array) > 0) { show_termcap(buffer, hook); free(buffer); + while (cgetnext(&buffer, db_array) > 0) { + show_termcap(buffer, hook); + free(buffer); + } + cgetclose(); + continue; } } - cgetclose(); #else /* scan termcap text-file only */ if (_nc_is_file_path(eargv[i])) { char buffer[2048]; FILE *fp; + if (verbosity) + (void) printf("#\n#%s:\n#\n", eargv[i]); + if ((fp = fopen(eargv[i], "r")) != 0) { while (fgets(buffer, sizeof(buffer), fp) != 0) { if (*buffer == '#') @@ -340,7 +355,7 @@ main(int argc, char *argv[]) unsigned i; int code; int this_opt, last_opt = '?'; - int v_opt = 0; + unsigned v_opt = 0; _nc_progname = _nc_rootname(argv[0]); @@ -349,14 +364,14 @@ main(int argc, char *argv[]) if (isdigit(this_opt)) { switch (last_opt) { case 'v': - v_opt = (this_opt - '0'); + v_opt = (unsigned) (this_opt - '0'); break; default: if (isdigit(last_opt)) v_opt *= 10; else v_opt = 0; - v_opt += (this_opt - '0'); + v_opt += (unsigned) (this_opt - '0'); last_opt = this_opt; } continue;