Lines Matching +full:assoc +full:- +full:select
2 * Copyright 2020-2022,2023 Thomas E. Dickey *
3 * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
31 * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
33 * and: Thomas E. Dickey 1996-on *
37 * infocmp.c -- decompile an entry, or compare two entries
64 static bool limited = TRUE; /* "-r" option is not set */
84 #define C_USEALL 4 /* generate relative use-form entry */
133 while (--limit > 0) { in canonical_name()
216 * be 'each capability gets the first non-default value found in use_predicate()
225 if (idx < NUM_BOOLEANS(&(ep->tterm)) in use_predicate()
226 && (is_set = ep->tterm.Booleans[idx])) { in use_predicate()
242 * capability gets the first non-default value found in use_predicate()
247 if (idx < NUM_NUMBERS(&(ep->tterm)) in use_predicate()
248 && VALID_NUMERIC(ep->tterm.Numbers[idx])) { in use_predicate()
249 value = ep->tterm.Numbers[idx]; in use_predicate()
266 * capability gets the first non-default value found in use_predicate()
271 if (idx < NUM_STRINGS(&(ep->tterm)) in use_predicate()
272 && ep->tterm.Strings[idx]) { in use_predicate()
273 usestr = ep->tterm.Strings[idx]; in use_predicate()
303 if (e1->nuses != e2->nuses) in useeq()
307 for (i = 0; i < e1->nuses; i++) { in useeq()
311 for (j = 0; j < e2->nuses; j++) in useeq()
312 if (!strcmp(e1->uses[i].name, e2->uses[j].name)) { in useeq()
331 if (t1->Booleans[i] != t2->Booleans[i]) in entryeq()
335 if (t1->Numbers[i] != t2->Numbers[i]) in entryeq()
339 if (capcmp((PredIdx) i, t1->Strings[i], t2->Strings[i])) in entryeq()
351 if (!ep->nuses) { in print_uses()
356 for (i = 0; i < ep->nuses; i++) { in print_uses()
357 fputs(ep->uses[i].name, fp); in print_uses()
358 if (i < ep->nuses - 1) in print_uses()
409 "'%.*s'", MAX_STRING - 3, TIC_EXPAND(val)); in dump_string()
447 * ncurses stores two types of non-standard capabilities:
448 * a) capabilities listed past the "STOP-HERE" comment in the Caps file.
451 * widely-used non-standard capabilities.
452 * b) user-definable capabilities, via "tic -x".
454 * However, if "-x" is omitted from the tic command, both types of
455 * non-standard capability are not loaded into the terminfo database. This
456 * macro is used for limit-checks against the symbols that tic uses to omit
457 * the two types of non-standard entry.
488 b1 = e1->tterm.Booleans[idx]; in compare_predicate()
491 b2 = next_entry->Booleans[idx]; in compare_predicate()
504 b2 = next_entry->Booleans[idx]; in compare_predicate()
520 b2 = next_entry->Booleans[idx]; in compare_predicate()
536 n1 = e1->tterm.Numbers[idx]; in compare_predicate()
539 n2 = next_entry->Numbers[idx]; in compare_predicate()
551 n2 = next_entry->Numbers[idx]; in compare_predicate()
568 n2 = next_entry->Numbers[idx]; in compare_predicate()
584 s1 = e1->tterm.Strings[idx]; in compare_predicate()
587 s2 = next_entry->Strings[idx]; in compare_predicate()
600 s2 = next_entry->Strings[idx]; in compare_predicate()
616 s2 = next_entry->Strings[idx]; in compare_predicate()
644 if (e1->nuses) { in compare_predicate()
648 if (e2->nuses != e1->nuses || !useeq(e1, e2)) { in compare_predicate()
662 if (!e1->nuses) { in compare_predicate()
666 if (e2->nuses != e1->nuses) { in compare_predicate()
692 } assoc; typedef
694 static const assoc std_caps[] =
717 DATA("\033 F", "S7C1T"), /* 7-bit controls */
722 static const assoc std_modes[] =
732 static const assoc private_modes[] =
737 DATA("3", "COLM"), /* 132-column mode */
742 DATA("8", "ARM"), /* auto-repeat mode */
746 static const assoc ecma_highlights[] =
759 DATA("10", "MAIN-FONT"), /* select primary font */
760 DATA("11", "ALT-FONT-1"), /* select alternate font 1 */
761 DATA("12", "ALT-FONT-2"), /* select alternate font 2 */
762 DATA("13", "ALT-FONT-3"), /* select alternate font 3 */
763 DATA("14", "ALT-FONT-4"), /* select alternate font 4 */
764 DATA("15", "ALT-FONT-5"), /* select alternate font 5 */
765 DATA("16", "ALT-FONT-6"), /* select alternate font 6 */
766 DATA("17", "ALT-FONT-7"), /* select alternate font 7 */
767 DATA("18", "ALT-FONT-1"), /* select alternate font 1 */
768 DATA("19", "ALT-FONT-1"), /* select alternate font 1 */
771 DATA("22", "-DIM"), /* dim off */
772 DATA("23", "-ITALIC"), /* italic off */
773 DATA("24", "-UNDERLINE"), /* underline off */
774 DATA("25", "-BLINK"), /* blink off */
775 DATA("26", "-FASTBLINK"), /* fastblink off */
776 DATA("27", "-REVERSE"), /* reverse off */
777 DATA("28", "-INVISIBLE"), /* invisible off */
778 DATA("29", "-DELETED"), /* deleted off */
806 lookup_params(const assoc * table, char *dst, char *src) in lookup_params()
812 const assoc *ap; in lookup_params()
817 for (ap = table; ap->from[0]; ap++) { in lookup_params()
818 size_t tlen = strlen(ap->from); in lookup_params()
820 if (same_param(ap->from, ep, tlen)) { in lookup_params()
821 _nc_STRCAT(dst, ap->to, MAX_TERMINFO_LENGTH); in lookup_params()
833 dst[strlen(dst) - 1] = '\0'; in lookup_params()
845 const assoc *ap; in analyze_string()
846 int tp_lines = tp->Numbers[2]; in analyze_string()
862 char *cp = tp->Strings[i]; in analyze_string()
864 /* don't use function-key capabilities */ in analyze_string()
901 for (ap = std_caps; ap->from[0]; ap++) { in analyze_string()
904 len = strlen(ap->from); in analyze_string()
905 if (csi && skip_csi(ap->from) != csi) in analyze_string()
908 && strncmp(ap->from + adj, sp + csi, len - adj) == 0) { in analyze_string()
909 expansion = ap->to; in analyze_string()
910 len -= adj; in analyze_string()
917 /* now check for standard-mode sequences */ in analyze_string()
928 : "ECMA-"), in analyze_string()
936 /* now check for private-mode sequences */ in analyze_string()
948 : "DEC-"), in analyze_string()
996 /* now check for home-down */ in analyze_string()
1016 sp += len - 1; in analyze_string()
1062 (void) fprintf(stderr, "Resolving file %d...\n", n - 0); in file_comparison()
1070 if (qp->nuses) { in file_comparison()
1071 (void) fputs(qp->tterm.term_names, stderr); in file_comparison()
1086 /* The entry-matching loop. Sigh, this is intrinsically quadratic. */ in file_comparison()
1087 for (qp = heads[0]; qp; qp = qp->next) { in file_comparison()
1088 for (rp = heads[1]; rp; rp = rp->next) in file_comparison()
1089 if (_nc_entry_match(qp->tterm.term_names, rp->tterm.term_names)) { in file_comparison()
1090 if (qp->ncrosslinks < MAX_CROSSLINKS) in file_comparison()
1091 qp->crosslinks[qp->ncrosslinks] = rp; in file_comparison()
1092 qp->ncrosslinks++; in file_comparison()
1094 if (rp->ncrosslinks < MAX_CROSSLINKS) in file_comparison()
1095 rp->crosslinks[rp->ncrosslinks] = qp; in file_comparison()
1096 rp->ncrosslinks++; in file_comparison()
1104 for (qp = heads[0]; qp; qp = qp->next) { in file_comparison()
1105 if (qp->ncrosslinks > 1) { in file_comparison()
1108 _nc_first_name(qp->tterm.term_names), in file_comparison()
1110 qp->ncrosslinks, in file_comparison()
1112 for (i = 0; i < qp->ncrosslinks; i++) in file_comparison()
1115 _nc_first_name((qp->crosslinks[i])->tterm.term_names)); in file_comparison()
1119 for (rp = heads[1]; rp; rp = rp->next) { in file_comparison()
1120 if (rp->ncrosslinks > 1) { in file_comparison()
1123 _nc_first_name(rp->tterm.term_names), in file_comparison()
1125 rp->ncrosslinks, in file_comparison()
1127 for (i = 0; i < rp->ncrosslinks; i++) in file_comparison()
1130 _nc_first_name((rp->crosslinks[i])->tterm.term_names)); in file_comparison()
1135 for (qp = heads[0]; qp; qp = qp->next) in file_comparison()
1136 if (qp->ncrosslinks == 0) in file_comparison()
1138 _nc_first_name(qp->tterm.term_names)); in file_comparison()
1141 for (rp = heads[1]; rp; rp = rp->next) in file_comparison()
1142 if (rp->ncrosslinks == 0) in file_comparison()
1144 _nc_first_name(rp->tterm.term_names)); in file_comparison()
1147 for (qp = heads[0]; qp; qp = qp->next) { in file_comparison()
1148 if (qp->ncrosslinks == 1) { in file_comparison()
1149 rp = qp->crosslinks[0]; in file_comparison()
1151 repair_acsc(&qp->tterm); in file_comparison()
1152 repair_acsc(&rp->tterm); in file_comparison()
1154 _nc_align_termtype(&qp->tterm, &rp->tterm); in file_comparison()
1156 if (entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp)) { in file_comparison()
1159 canonical_name(qp->tterm.term_names, name1); in file_comparison()
1160 canonical_name(rp->tterm.term_names, name2); in file_comparison()
1169 for (qp = heads[0]; qp; qp = qp->next) { in file_comparison()
1171 if (qp->ncrosslinks == 1) { in file_comparison()
1172 rp = qp->crosslinks[0]; in file_comparison()
1174 /* sorry - we have to do this on each pass */ in file_comparison()
1175 _nc_align_termtype(&qp->tterm, &rp->tterm); in file_comparison()
1177 if (!(entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp))) { in file_comparison()
1188 canonical_name(qp->tterm.term_names, name1); in file_comparison()
1189 canonical_name(rp->tterm.term_names, name2); in file_comparison()
1194 compare_entry(compare_predicate, &entries->tterm, quiet); in file_comparison()
1199 compare_entry(compare_predicate, &entries->tterm, quiet); in file_comparison()
1204 compare_entry(compare_predicate, &entries->tterm, quiet); in file_comparison()
1219 DATA("Usage: infocmp [options] [-A directory] [-B directory] [termname...]") in usage()
1228 " -0 print single-row" in usage()
1229 ," -1 print single-column" in usage()
1230 ," -C use termcap-names" in usage()
1231 ," -D print database locations" in usage()
1232 ," -E format output as C tables" in usage()
1233 ," -F compare terminfo-files" in usage()
1234 ," -G format %{number} to %'char'" in usage()
1235 ," -I use terminfo-names" in usage()
1236 ," -K use termcap-names and BSD syntax" in usage()
1237 ," -L use long names" in usage()
1238 ," -R subset (see manpage)" in usage()
1239 ," -T eliminate size limits (test)" in usage()
1240 ," -U do not post-process entries" in usage()
1241 ," -V print version" in usage()
1242 ," -W wrap long strings per -w[n]" in usage()
1244 ," -a with -F, list commented-out caps" in usage()
1246 ," -c list common capabilities" in usage()
1247 ," -d list different capabilities" in usage()
1248 ," -e format output for C initializer" in usage()
1249 ," -f with -1, format complex strings" in usage()
1250 ," -g format %'char' to %{number}" in usage()
1251 ," -i analyze initialization/reset" in usage()
1252 ," -l output terminfo names" in usage()
1253 ," -n list capabilities in neither" in usage()
1254 ," -p ignore padding specifiers" in usage()
1255 ," -Q number dump compiled description" in usage()
1256 ," -q brief listing, removes headers" in usage()
1257 ," -r with -C, output in termcap form" in usage()
1258 ," -r with -F, resolve use-references" in usage()
1259 ," -s [d|i|l|c] sort fields" in usage()
1261 ," -t suppress commented-out capabilities" in usage()
1263 ," -u produce source with 'use='" in usage()
1264 ," -v number (verbose)" in usage()
1265 ," -w number (width)" in usage()
1267 ," -x unknown capabilities are user-defined" in usage()
1279 fprintf(stderr, "%-40.40s%s\n", options[n], options[m]); in usage()
1294 need = (strlen(entries->tterm.term_names) in any_initializer()
1302 _nc_STRCPY(initializer, entries->tterm.term_names, need); in any_initializer()
1332 name_initializer("alias"), entries->tterm.term_names); in dump_initializers()
1335 if (VALID_STRING(term->Strings[n])) { in dump_initializers()
1339 #define TP_LIMIT ((MAX_STRING - 5) - (size_t)(tp - buf)) in dump_initializers()
1341 for (sp = term->Strings[n]; in dump_initializers()
1356 (void) printf("static char %-20s[] = %s;\n", in dump_initializers()
1366 switch ((int) (term->Booleans[n])) { in dump_initializers()
1383 (void) printf("\t/* %3u: %-8s */\t%s,\n", in dump_initializers()
1392 switch (term->Numbers[n]) { in dump_initializers()
1400 _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "%d", term->Numbers[n]); in dump_initializers()
1404 (void) printf("\t/* %3u: %-8s */\t%s,\n", n, in dump_initializers()
1413 if (term->Strings[n] == ABSENT_STRING) in dump_initializers()
1415 else if (term->Strings[n] == CANCELLED_STRING) in dump_initializers()
1420 (void) printf("\t/* %3u: %-8s */\t%s,\n", n, in dump_initializers()
1475 NUM_BOOLEANS(term) - BOOLCOUNT); in dump_termtype()
1477 NUM_NUMBERS(term) - NUMCOUNT); in dump_termtype()
1479 NUM_STRINGS(term) - STRCOUNT); in dump_termtype()
1590 "01A:aB:CcDdEeFfGgIiKLlnpQ:qR:rs:TtUuVv:Ww:x")) != -1) { in main()
1659 numbers = -1; in main()
1697 s_absent = "-"; in main()
1774 maxterms = (size_t) (argc + 2 - optind); in main()
1802 if (compare != C_DEFAULT && optind >= argc - 1) in main()
1806 /* exactly two terminal names with no options means do -d */ in main()
1808 switch (argc - optind) { in main()
1887 * User-defined capabilities in different terminal descriptions in main()
1890 * entries to compare when processing the "-u" option. in main()
1950 compare_entry(compare_predicate, &entries->tterm, quiet); in main()
1955 compare_entry(compare_predicate, &entries->tterm, quiet); in main()
1960 compare_entry(compare_predicate, &entries->tterm, quiet); in main()
1981 (void) fprintf(stderr, "Sorry, -u doesn't work with -F\n"); in main()
1983 (void) fprintf(stderr, "Use `tic -[CI] <file>' for this.\n"); in main()
1984 } else if (argc - optind != 2) { in main()
1988 file_comparison(argc - optind, argv + optind); in main()