X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=progs%2Finfocmp.c;h=7b52dded11c65a40776f9a0047673e75b63533e6;hp=e034a58596fc9fd4a90f02be7a80a08992590557;hb=01433b4eede468929bccc74b22324cb44540e990;hpb=3f20704179ae1f625bd7bc75829929ccf46b25c3 diff --git a/progs/infocmp.c b/progs/infocmp.c index e034a585..7b52dded 100644 --- a/progs/infocmp.c +++ b/progs/infocmp.c @@ -42,7 +42,7 @@ #include -MODULE_ID("$Id: infocmp.c,v 1.106 2011/05/14 22:51:04 tom Exp $") +MODULE_ID("$Id: infocmp.c,v 1.110 2011/12/17 23:59:50 tom Exp $") #define L_CURL "{" #define R_CURL "}" @@ -72,6 +72,7 @@ static const char *s_cancel = "NULL"; static const char *tversion; /* terminfo version selected */ static unsigned itrace; /* trace flag for debugging */ static int mwidth = 60; +static int mheight = 65535; static int numbers = 0; /* format "%'char'" to/from "%{number}" */ static int outform = F_TERMINFO; /* output format */ static int sortmode; /* sort_mode */ @@ -795,7 +796,7 @@ file_comparison(int argc, char *argv[]) int i, n; memset(heads, 0, sizeof(heads)); - dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, itrace, FALSE); + dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, 65535, itrace, FALSE); for (n = 0; n < argc && n < MAXCOMPARE; n++) { if (freopen(argv[n], "r", stdin) == 0) @@ -974,7 +975,9 @@ usage(void) "Usage: infocmp [options] [-A directory] [-B directory] [termname...]" ,"" ,"Options:" + ," -0 print single-row" ," -1 print single-column" + ," -K use termcap-names and BSD syntax" ," -C use termcap-names" ," -F compare terminfo-files" ," -I use terminfo-names" @@ -1248,6 +1251,23 @@ terminal_env(void) return terminal; } +/* + * Show the databases that infocmp knows about. The location to which it writes is + */ +static void +show_databases(void) +{ + DBDIRS state; + int offset; + const char *path2; + + _nc_first_db(&state, &offset); + while ((path2 = _nc_next_db(&state, &offset)) != 0) { + printf("%s\n", path2); + } + _nc_last_db(); +} + /*************************************************************************** * * Main sequence @@ -1288,6 +1308,7 @@ main(int argc, char *argv[]) #if NCURSES_XNAMES use_extended_names(FALSE); #endif + _nc_strict_bsd = 0; _nc_progname = _nc_rootname(argv[0]); @@ -1298,8 +1319,13 @@ main(int argc, char *argv[]) while ((c = getopt(argc, argv, - "1A:aB:CcdEeFfGgIiLlnpqR:rs:TtUuVv:w:x")) != -1) { + "01A:aB:CcDdEeFfGgIiKLlnpqR:rs:TtUuVv:w:x")) != -1) { switch (c) { + case '0': + mwidth = 65535; + mheight = 1; + break; + case '1': mwidth = 0; break; @@ -1318,6 +1344,9 @@ main(int argc, char *argv[]) restdir = optarg; break; + case 'K': + _nc_strict_bsd = 1; + /* FALLTHRU */ case 'C': outform = F_TERMCAP; tversion = "BSD"; @@ -1325,6 +1354,11 @@ main(int argc, char *argv[]) sortmode = S_TERMCAP; break; + case 'D': + show_databases(); + ExitProgram(EXIT_SUCCESS); + break; + case 'c': compare = C_COMMON; break; @@ -1478,7 +1512,7 @@ main(int argc, char *argv[]) sortmode = S_TERMINFO; /* set up for display */ - dump_init(tversion, outform, sortmode, mwidth, itrace, formatted); + dump_init(tversion, outform, sortmode, mwidth, mheight, itrace, formatted); /* make sure we have at least one terminal name to work with */ if (optind >= argc)