diff options
author | rafan <rafan@FreeBSD.org> | 2008-11-15 09:23:48 +0000 |
---|---|---|
committer | rafan <rafan@FreeBSD.org> | 2008-11-15 09:23:48 +0000 |
commit | f5d83322529691706652e1ae0137d16f59d4e367 (patch) | |
tree | b736f10477d660dd3f6822f50c28f2899139567c /contrib/ncurses/progs | |
parent | fe573b41d7842682795440ba8e319fc72acc3bf8 (diff) | |
parent | d078158b4620b1f1230c46d47fefc1263619ac98 (diff) | |
download | FreeBSD-src-f5d83322529691706652e1ae0137d16f59d4e367.zip FreeBSD-src-f5d83322529691706652e1ae0137d16f59d4e367.tar.gz |
- Update ncurses to 5.7-20081102 (5.7 release) and build glue
- This also removes $FreeBSD$ from two now unmodifed source files
ncurses/tinfo/lib_raw.c and ncurses/tinfo/lib_baudrate.c
MFC after: 2 months (after 7.1 and 6.4 are released)
Diffstat (limited to 'contrib/ncurses/progs')
-rwxr-xr-x | contrib/ncurses/progs/MKtermsort.sh | 22 | ||||
-rw-r--r-- | contrib/ncurses/progs/Makefile.in | 2 | ||||
-rw-r--r-- | contrib/ncurses/progs/dump_entry.c | 77 | ||||
-rw-r--r-- | contrib/ncurses/progs/dump_entry.h | 6 | ||||
-rw-r--r-- | contrib/ncurses/progs/infocmp.c | 89 | ||||
-rw-r--r-- | contrib/ncurses/progs/progs.priv.h | 5 | ||||
-rw-r--r-- | contrib/ncurses/progs/tic.c | 86 | ||||
-rw-r--r-- | contrib/ncurses/progs/toe.c | 25 | ||||
-rw-r--r-- | contrib/ncurses/progs/tput.c | 5 | ||||
-rw-r--r-- | contrib/ncurses/progs/tset.c | 90 |
10 files changed, 233 insertions, 174 deletions
diff --git a/contrib/ncurses/progs/MKtermsort.sh b/contrib/ncurses/progs/MKtermsort.sh index 18b90ac..2247f14 100755 --- a/contrib/ncurses/progs/MKtermsort.sh +++ b/contrib/ncurses/progs/MKtermsort.sh @@ -1,10 +1,10 @@ #!/bin/sh -# $Id: MKtermsort.sh,v 1.9 2003/01/11 22:23:50 tom Exp $ +# $Id: MKtermsort.sh,v 1.10 2008/07/12 20:22:54 tom Exp $ # # MKtermsort.sh -- generate indirection vectors for the various sort methods # ############################################################################## -# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. # +# Copyright (c) 1998-2003,2008 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 "Software"), # @@ -56,7 +56,7 @@ echo " *"; echo " * Note: this file is generated using MKtermsort.sh, do not edit by hand."; echo " */"; -echo "static const int bool_terminfo_sort[] = {"; +echo "static const PredIdx bool_terminfo_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} @@ -65,7 +65,7 @@ $3 == "bool" {printf("%s\t%d\n", $2, i++);} echo "};"; echo ""; -echo "static const int num_terminfo_sort[] = {"; +echo "static const PredIdx num_terminfo_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} @@ -74,7 +74,7 @@ $3 == "num" {printf("%s\t%d\n", $2, i++);} echo "};"; echo ""; -echo "static const int str_terminfo_sort[] = {"; +echo "static const PredIdx str_terminfo_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} @@ -83,7 +83,7 @@ $3 == "str" {printf("%s\t%d\n", $2, i++);} echo "};"; echo ""; -echo "static const int bool_variable_sort[] = {"; +echo "static const PredIdx bool_variable_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} @@ -92,7 +92,7 @@ $3 == "bool" {printf("%s\t%d\n", $1, i++);} echo "};"; echo ""; -echo "static const int num_variable_sort[] = {"; +echo "static const PredIdx num_variable_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} @@ -101,7 +101,7 @@ $3 == "num" {printf("%s\t%d\n", $1, i++);} echo "};"; echo ""; -echo "static const int str_variable_sort[] = {"; +echo "static const PredIdx str_variable_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} @@ -110,7 +110,7 @@ $3 == "str" {printf("%s\t%d\n", $1, i++);} echo "};"; echo ""; -echo "static const int bool_termcap_sort[] = {"; +echo "static const PredIdx bool_termcap_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} @@ -119,7 +119,7 @@ $3 == "bool" {printf("%s\t%d\n", $4, i++);} echo "};"; echo ""; -echo "static const int num_termcap_sort[] = {"; +echo "static const PredIdx num_termcap_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} @@ -128,7 +128,7 @@ $3 == "num" {printf("%s\t%d\n", $4, i++);} echo "};"; echo ""; -echo "static const int str_termcap_sort[] = {"; +echo "static const PredIdx str_termcap_sort[] = {"; $AWK <$DATA ' BEGIN {i = 0;} /^#/ {next;} diff --git a/contrib/ncurses/progs/Makefile.in b/contrib/ncurses/progs/Makefile.in index 38f4e74..886fd5b 100644 --- a/contrib/ncurses/progs/Makefile.in +++ b/contrib/ncurses/progs/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.77 2007/10/13 22:25:53 tom Exp $ +# $Id: Makefile.in,v 1.79 2008/09/07 13:58:55 tom Exp $ ############################################################################## # Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. # # # diff --git a/contrib/ncurses/progs/dump_entry.c b/contrib/ncurses/progs/dump_entry.c index eeee5db..bd24220 100644 --- a/contrib/ncurses/progs/dump_entry.c +++ b/contrib/ncurses/progs/dump_entry.c @@ -29,7 +29,7 @@ /**************************************************************************** * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * * and: Eric S. Raymond <esr@snark.thyrsus.com> * - * and: Thomas E. Dickey 1996 on * + * and: Thomas E. Dickey 1996 on * ****************************************************************************/ #define __INTERNAL_CAPS_VISIBLE @@ -39,12 +39,14 @@ #include "termsort.c" /* this C file is generated */ #include <parametrized.h> /* so is this */ -MODULE_ID("$Id: dump_entry.c,v 1.82 2008/04/19 22:27:04 tom Exp $") +MODULE_ID("$Id: dump_entry.c,v 1.88 2008/08/04 12:36:12 tom Exp $") #define INDENT 8 #define DISCARD(string) string = ABSENT_STRING #define PRINTF (void) printf +#define OkIndex(index,array) ((int)(index) >= 0 && (int)(index) < (int) SIZEOF(array)) + typedef struct { char *text; size_t used; @@ -140,6 +142,11 @@ _nc_leaks_dump_entry(void) } #endif +#define NameTrans(check,result) \ + if (OkIndex(np->nte_index, check) \ + && check[np->nte_index]) \ + return (result[np->nte_index]) + NCURSES_CONST char * nametrans(const char *name) /* translate a capability name from termcap to terminfo */ @@ -149,18 +156,15 @@ nametrans(const char *name) if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0) switch (np->nte_type) { case BOOLEAN: - if (bool_from_termcap[np->nte_index]) - return (boolcodes[np->nte_index]); + NameTrans(bool_from_termcap, boolcodes); break; case NUMBER: - if (num_from_termcap[np->nte_index]) - return (numcodes[np->nte_index]); + NameTrans(num_from_termcap, numcodes); break; case STRING: - if (str_from_termcap[np->nte_index]) - return (strcodes[np->nte_index]); + NameTrans(str_from_termcap, strcodes); break; } @@ -293,9 +297,9 @@ static void set_obsolete_termcaps(TERMTYPE *tp); * If we configure with a different Caps file, the offsets into the arrays * will change. So we use an address expression. */ -#define BOOL_IDX(name) (&(name) - &(CUR Booleans[0])) -#define NUM_IDX(name) (&(name) - &(CUR Numbers[0])) -#define STR_IDX(name) (&(name) - &(CUR Strings[0])) +#define BOOL_IDX(name) (PredType) (&(name) - &(CUR Booleans[0])) +#define NUM_IDX(name) (PredType) (&(name) - &(CUR Numbers[0])) +#define STR_IDX(name) (PredType) (&(name) - &(CUR Strings[0])) static bool version_filter(PredType type, PredIdx idx) @@ -352,7 +356,7 @@ version_filter(PredType type, PredIdx idx) } break; -#define is_termcap(type) (idx < (int) sizeof(type##_from_termcap) && \ +#define is_termcap(type) (OkIndex(idx, type##_from_termcap) && \ type##_from_termcap[idx]) case V_BSD: /* BSD */ @@ -389,22 +393,22 @@ force_wrap(void) static void wrap_concat(const char *src) { - int need = strlen(src); - int want = strlen(separator) + need; + unsigned need = strlen(src); + unsigned want = strlen(separator) + need; if (column > INDENT - && column + want > width) { + && column + (int) want > width) { force_wrap(); } strcpy_DYN(&outbuf, src); strcpy_DYN(&outbuf, separator); - column += need; + column += (int) need; } #define IGNORE_SEP_TRAIL(first,last,sep_trail) \ if ((size_t)(last - first) > sizeof(sep_trail)-1 \ && !strncmp(first, sep_trail, sizeof(sep_trail)-1)) \ - first += sizeof(sep_trail)-2 + first += sizeof(sep_trail)-2 /* Returns the nominal length of the buffer assuming it is termcap format, * i.e., the continuation sequence is treated as a single character ":". @@ -448,7 +452,7 @@ static bool has_params(const char *src) { bool result = FALSE; - int len = strlen(src); + int len = (int) strlen(src); int n; bool ifthen = FALSE; bool params = FALSE; @@ -553,6 +557,7 @@ fmt_complex(char *src, int level) } #define SAME_CAP(n,cap) (&tterm->Strings[n] == &cap) +#define EXTRA_CAP 20 int fmt_entry(TERMTYPE *tterm, @@ -563,7 +568,7 @@ fmt_entry(TERMTYPE *tterm, int numbers) { PredIdx i, j; - char buffer[MAX_TERMINFO_LENGTH]; + char buffer[MAX_TERMINFO_LENGTH + EXTRA_CAP]; char *capability; NCURSES_CONST char *name; int predval, len; @@ -589,13 +594,14 @@ fmt_entry(TERMTYPE *tterm, } else { strcpy_DYN(&outbuf, tterm->term_names); strcpy_DYN(&outbuf, separator); - column = outbuf.used; + column = (int) outbuf.used; force_wrap(); } for_each_boolean(j, tterm) { i = BoolIndirect(j); name = ExtBoolname(tterm, i, bool_names); + assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); if (!version_filter(BOOLEAN, i)) continue; @@ -619,6 +625,7 @@ fmt_entry(TERMTYPE *tterm, for_each_number(j, tterm) { i = NumIndirect(j); name = ExtNumname(tterm, i, num_names); + assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); if (!version_filter(NUMBER, i)) continue; @@ -641,9 +648,9 @@ fmt_entry(TERMTYPE *tterm, if (column != INDENT) force_wrap(); - len += num_bools - + num_values * 2 - + strlen(tterm->term_names) + 1; + len += (int) (num_bools + + num_values * 2 + + strlen(tterm->term_names) + 1); if (len & 1) len++; @@ -664,6 +671,8 @@ fmt_entry(TERMTYPE *tterm, for_each_string(j, tterm) { i = StrIndirect(j); name = ExtStrname(tterm, i, str_names); + assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); + capability = tterm->Strings[i]; if (!version_filter(STRING, i)) @@ -762,7 +771,7 @@ fmt_entry(TERMTYPE *tterm, } else { sprintf(buffer, "%s=%s", name, cv); } - len += strlen(capability) + 1; + len += (int) strlen(capability) + 1; WRAP_CONCAT; } else { char *src = _nc_tic_expand(capability, @@ -778,7 +787,7 @@ fmt_entry(TERMTYPE *tterm, } else { strcpy_DYN(&tmpbuf, src); } - len += strlen(capability) + 1; + len += (int) strlen(capability) + 1; wrap_concat(tmpbuf.text); outcount = TRUE; } @@ -787,7 +796,7 @@ fmt_entry(TERMTYPE *tterm, if (capability != tterm->Strings[i]) free(capability); } - len += num_strings * 2; + len += (int) (num_strings * 2); /* * This piece of code should be an effective inverse of the functions @@ -877,7 +886,7 @@ fmt_entry(TERMTYPE *tterm, static bool kill_string(TERMTYPE *tterm, char *cap) { - int n; + unsigned n; for (n = 0; n < NUM_STRINGS(tterm); ++n) { if (cap == tterm->Strings[n]) { tterm->Strings[n] = ABSENT_STRING; @@ -920,7 +929,7 @@ kill_labels(TERMTYPE *tterm, int target) sprintf(name, "lf%d", n); if ((cap = find_string(tterm, name)) != ABSENT_STRING && kill_string(tterm, cap)) { - target -= (strlen(cap) + 5); + target -= (int) (strlen(cap) + 5); ++result; if (target < 0) break; @@ -945,7 +954,7 @@ kill_fkeys(TERMTYPE *tterm, int target) sprintf(name, "kf%d", n); if ((cap = find_string(tterm, name)) != ABSENT_STRING && kill_string(tterm, cap)) { - target -= (strlen(cap) + 5); + target -= (int) (strlen(cap) + 5); ++result; if (target < 0) break; @@ -1053,7 +1062,7 @@ dump_entry(TERMTYPE *tterm, * Extended names are most likely function-key definitions. Drop * those first. */ - int n; + unsigned n; for (n = STRCOUNT; n < NUM_STRINGS(tterm); n++) { const char *name = ExtStrname(tterm, n, strnames); @@ -1145,7 +1154,7 @@ show_entry(void) trim_trailing(); (void) fputs(outbuf.text, stdout); putchar('\n'); - return outbuf.used; + return (int) outbuf.used; } void @@ -1244,15 +1253,15 @@ repair_acsc(TERMTYPE *tp) for (n = 0; acs_chars[n] != 0; n++) { source = UChar(acs_chars[n]); if ((target = (unsigned char) acs_chars[n + 1]) != 0) { - mapped[source] = target; + mapped[source] = (char) target; n++; } else { - extra = source; + extra = (char) source; } } for (n = m = 0; n < sizeof(mapped); n++) { if (mapped[n]) { - acs_chars[m++] = n; + acs_chars[m++] = (char) n; acs_chars[m++] = mapped[n]; } } diff --git a/contrib/ncurses/progs/dump_entry.h b/contrib/ncurses/progs/dump_entry.h index f802ecb..b99a37a 100644 --- a/contrib/ncurses/progs/dump_entry.h +++ b/contrib/ncurses/progs/dump_entry.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2002,2004 Free Software Foundation, Inc. * + * Copyright (c) 1998-2006,2008 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 * @@ -34,7 +34,7 @@ /* - * $Id: dump_entry.h,v 1.29 2006/08/19 21:11:14 tom Exp $ + * $Id: dump_entry.h,v 1.30 2008/07/12 20:23:03 tom Exp $ * * Dump control definitions and variables */ @@ -63,7 +63,7 @@ #define CMP_USE 3 /* comparison on use capabilities */ typedef unsigned PredType; -typedef int PredIdx; +typedef unsigned PredIdx; typedef int (*PredFunc)(PredType, PredIdx); extern NCURSES_CONST char *nametrans(const char *); diff --git a/contrib/ncurses/progs/infocmp.c b/contrib/ncurses/progs/infocmp.c index 8680df3..84989ff 100644 --- a/contrib/ncurses/progs/infocmp.c +++ b/contrib/ncurses/progs/infocmp.c @@ -42,7 +42,7 @@ #include <dump_entry.h> -MODULE_ID("$Id: infocmp.c,v 1.96 2008/01/19 21:08:07 tom Exp $") +MODULE_ID("$Id: infocmp.c,v 1.103 2008/08/16 22:04:56 tom Exp $") #define L_CURL "{" #define R_CURL "}" @@ -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); @@ -568,37 +568,41 @@ same_param(const char *table, const char *param, unsigned length) static char * lookup_params(const assoc * table, char *dst, char *src) { + char *result = 0; const char *ep = strtok(src, ";"); - const assoc *ap; - do { - bool found = FALSE; + if (ep != 0) { + const assoc *ap; - for (ap = table; ap->from; ap++) { - size_t tlen = strlen(ap->from); + do { + bool found = FALSE; - if (same_param(ap->from, ep, tlen)) { - (void) strcat(dst, ap->to); - found = TRUE; - break; + for (ap = table; ap->from; ap++) { + size_t tlen = strlen(ap->from); + + if (same_param(ap->from, ep, tlen)) { + (void) strcat(dst, ap->to); + found = TRUE; + break; + } } - } - if (!found) - (void) strcat(dst, ep); - (void) strcat(dst, ";"); - } while - ((ep = strtok((char *) 0, ";"))); + if (!found) + (void) strcat(dst, ep); + (void) strcat(dst, ";"); + } while + ((ep = strtok((char *) 0, ";"))); - dst[strlen(dst) - 1] = '\0'; + dst[strlen(dst) - 1] = '\0'; - return dst; + result = dst; + } + return result; } static void analyze_string(const char *name, const char *cap, TERMTYPE *tp) { - char buf[MAX_TERMINFO_LENGTH]; char buf2[MAX_TERMINFO_LENGTH]; const char *sp; const assoc *ap; @@ -608,7 +612,6 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) return; (void) printf("%s: ", name); - buf[0] = '\0'; for (sp = cap; *sp; sp++) { int i; int csi; @@ -656,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 = csi ? 2 : 0; + size_t adj = (size_t) (csi ? 2 : 0); len = strlen(ap->from); if (csi && skip_csi(ap->from) != csi) @@ -665,7 +668,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) && strncmp(ap->from + adj, sp + csi, len - adj) == 0) { expansion = ap->to; len -= adj; - len += csi; + len += (size_t) csi; break; } } @@ -675,13 +678,14 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) if (!expansion && (csi = skip_csi(sp)) != 0 && (len = strspn(sp + csi, "0123456789;")) - && (next = csi + len) + && (len < sizeof(buf3)) + && (next = (size_t) csi + len) && ((sp[next] == 'h') || (sp[next] == 'l'))) { (void) strcpy(buf2, (sp[next] == 'h') ? "ECMA+" : "ECMA-"); (void) strncpy(buf3, sp + csi, len); buf3[len] = '\0'; - len += csi + 1; + len += (size_t) csi + 1; expansion = lookup_params(std_modes, buf2, buf3); } @@ -691,13 +695,14 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) && (csi = skip_csi(sp)) != 0 && sp[csi] == '?' && (len = strspn(sp + csi + 1, "0123456789;")) - && (next = csi + 1 + len) + && (len < sizeof(buf3)) + && (next = (size_t) csi + 1 + len) && ((sp[next] == 'h') || (sp[next] == 'l'))) { (void) strcpy(buf2, (sp[next] == 'h') ? "DEC+" : "DEC-"); (void) strncpy(buf3, sp + csi + 1, len); buf3[len] = '\0'; - len += csi + 2; + len += (size_t) csi + 2; expansion = lookup_params(private_modes, buf2, buf3); } @@ -706,13 +711,14 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) if (!expansion && (csi = skip_csi(sp)) != 0 && (len = strspn(sp + csi, "0123456789;")) != 0 - && (next = csi + len) + && (len < sizeof(buf3)) + && (next = (size_t) csi + len) && sp[next] == 'm') { (void) strcpy(buf2, "SGR:"); (void) strncpy(buf3, sp + csi, len); buf3[len] = '\0'; - len += csi + 1; + len += (size_t) csi + 1; expansion = lookup_params(ecma_highlights, buf2, buf3); } @@ -720,7 +726,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) if (!expansion && (csi = skip_csi(sp)) != 0 && sp[csi] == 'm') { - len = csi + 1; + len = (size_t) csi + 1; (void) strcpy(buf2, "SGR:"); strcat(buf2, ecma_highlights[0].to); expansion = buf2; @@ -738,7 +744,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) if (strncmp(buf2, sp + csi, len) == 0) expansion = "RSR"; } - len += csi; + len += (size_t) csi; } /* now check for home-down */ @@ -755,22 +761,21 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp) expansion = "LL"; } } - len += csi; + len += (size_t) csi; } /* now look at the expansion we got, if any */ if (expansion) { - (void) sprintf(buf + strlen(buf), "{%s}", expansion); + printf("{%s}", expansion); sp += len - 1; - continue; } else { /* couldn't match anything */ buf2[0] = *sp; buf2[1] = '\0'; - (void) strcat(buf, TIC_EXPAND(buf2)); + fputs(TIC_EXPAND(buf2), stdout); } } - (void) printf("%s\n", buf); + putchar('\n'); } /*************************************************************************** @@ -789,6 +794,7 @@ file_comparison(int argc, char *argv[]) ENTRY *qp, *rp; int i, n; + memset(heads, 0, sizeof(heads)); dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, itrace, FALSE); for (n = 0; n < argc && n < MAXCOMPARE; n++) { @@ -1059,7 +1065,6 @@ static void dump_initializers(TERMTYPE *term) { unsigned n; - int size; const char *str = 0; printf("\nstatic char %s[] = \"%s\";\n\n", @@ -1138,10 +1143,6 @@ dump_initializers(TERMTYPE *term) } (void) printf("%s;\n", R_CURL); - size = (sizeof(TERMTYPE) - + (NUM_BOOLEANS(term) * sizeof(term->Booleans[0])) - + (NUM_NUMBERS(term) * sizeof(term->Numbers[0]))); - (void) printf("static char * %s[] = %s\n", name_initializer("string"), L_CURL); for_each_string(n, term) { @@ -1283,8 +1284,8 @@ 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 *, argc + 3); - memcpy(myargv, argv, sizeof(char *) * argc); + myargv = typeCalloc(char *, (size_t) (argc + 3)); + memcpy(myargv, argv, (sizeof(char *) * (size_t) argc)); argv = myargv; while ((c = getopt(argc, diff --git a/contrib/ncurses/progs/progs.priv.h b/contrib/ncurses/progs/progs.priv.h index d445c33..f0ea460 100644 --- a/contrib/ncurses/progs/progs.priv.h +++ b/contrib/ncurses/progs/progs.priv.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. * + * Copyright (c) 1998-2007,2008 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 * @@ -30,7 +30,7 @@ * Author: Thomas E. Dickey 1997-on * ****************************************************************************/ /* - * $Id: progs.priv.h,v 1.33 2007/10/13 20:33:53 tom Exp $ + * $Id: progs.priv.h,v 1.34 2008/08/03 17:43:05 tom Exp $ * * progs.priv.h * @@ -90,6 +90,7 @@ # endif #endif +#include <assert.h> #include <errno.h> #if DECL_ERRNO diff --git a/contrib/ncurses/progs/tic.c b/contrib/ncurses/progs/tic.c index 8478102..82bc3ea 100644 --- a/contrib/ncurses/progs/tic.c +++ b/contrib/ncurses/progs/tic.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. * + * Copyright (c) 1998-2007,2008 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 * @@ -29,7 +29,7 @@ /**************************************************************************** * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * * and: Eric S. Raymond <esr@snark.thyrsus.com> * - * and: Thomas E. Dickey 1996 on * + * and: Thomas E. Dickey 1996 on * ****************************************************************************/ /* @@ -44,7 +44,7 @@ #include <dump_entry.h> #include <transform.h> -MODULE_ID("$Id: tic.c,v 1.133 2007/07/21 17:45:59 tom Exp $") +MODULE_ID("$Id: tic.c,v 1.137 2008/09/13 16:59:24 tom Exp $") const char *_nc_progname = "tic"; @@ -85,9 +85,25 @@ x\ ] \ source-file\n"; +#if NO_LEAKS +static void +free_namelist(char **src) +{ + if (src != 0) { + int n; + for (n = 0; src[n] != 0; ++n) + free(src[n]); + free(src); + } +} +#endif + static void -cleanup(void) +cleanup(char **namelst GCC_UNUSED) { +#if NO_LEAKS + free_namelist(namelst); +#endif if (tmp_fp != 0) fclose(tmp_fp); if (to_remove != 0) { @@ -103,7 +119,7 @@ static void failed(const char *msg) { perror(msg); - cleanup(); + cleanup((char **) 0); ExitProgram(EXIT_FAILURE); } @@ -178,7 +194,7 @@ write_it(ENTRY * ep) d = result; t = s; while ((ch = *t++) != 0) { - *d++ = ch; + *d++ = (char) ch; if (ch == '\\') { *d++ = *t++; } else if ((ch == '%') @@ -192,7 +208,7 @@ write_it(ENTRY * ep) && value < 127 && isprint((int) value)) { *d++ = S_QUOTE; - *d++ = (int) value; + *d++ = (char) value; *d++ = S_QUOTE; t = (v + 1); } @@ -280,7 +296,7 @@ put_translate(int c) putchar(c); in_name = FALSE; } else if (c != '>') { - namebuf[used++] = c; + namebuf[used++] = (char) c; } else { /* ah! candidate name! */ char *up; NCURSES_CONST char *tp; @@ -353,19 +369,6 @@ open_input(const char *filename) return fp; } -#if NO_LEAKS -static void -free_namelist(char **src) -{ - if (src != 0) { - int n; - for (n = 0; src[n] != 0; ++n) - free(src[n]); - free(src); - } -} -#endif - /* Parse the "-e" option-value into a list of names */ static char ** make_namelist(char *src) @@ -558,7 +561,8 @@ main(int argc, char *argv[]) break; case 'V': puts(curses_version()); - return EXIT_SUCCESS; + cleanup(namelst); + ExitProgram(EXIT_SUCCESS); case 'c': check_only = TRUE; break; @@ -628,7 +632,7 @@ main(int argc, char *argv[]) if (namelst && (!infodump && !capdump)) { (void) fprintf(stderr, "Sorry, -e can't be used without -I or -C\n"); - cleanup(); + cleanup(namelst); ExitProgram(EXIT_FAILURE); } #endif /* HAVE_BIG_CORE */ @@ -671,7 +675,7 @@ main(int argc, char *argv[]) _nc_progname, _nc_progname, usage_string); - cleanup(); + cleanup(namelst); ExitProgram(EXIT_FAILURE); } } @@ -705,7 +709,7 @@ main(int argc, char *argv[]) /* do use resolution */ if (check_only || (!infodump && !capdump) || forceresolve) { if (!_nc_resolve_uses2(TRUE, literal) && !check_only) { - cleanup(); + cleanup(namelst); ExitProgram(EXIT_FAILURE); } } @@ -755,7 +759,7 @@ main(int argc, char *argv[]) dump_entry(&qp->tterm, suppress_untranslatable, limited, numbers, NULL); - for (j = 0; j < qp->nuses; j++) + for (j = 0; j < (int) qp->nuses; j++) dump_uses(qp->uses[j].name, !capdump); len = show_entry(); if (debug_level != 0 && !limited) @@ -799,10 +803,7 @@ main(int argc, char *argv[]) else fprintf(log_fp, "No entries written\n"); } -#if NO_LEAKS - free_namelist(namelst); -#endif - cleanup(); + cleanup(namelst); ExitProgram(EXIT_SUCCESS); } @@ -835,15 +836,19 @@ check_acs(TERMTYPE *tp) } mapped[UChar(p[0])] = p[1]; } + if (mapped[UChar('I')] && !mapped[UChar('i')]) { _nc_warning("acsc refers to 'I', which is probably an error"); } + for (p = boxes, q = missing; *p != '\0'; ++p) { if (!mapped[UChar(p[0])]) { *q++ = p[0]; } - *q = '\0'; } + *q = '\0'; + + assert(strlen(missing) <= strlen(boxes)); if (*missing != '\0' && strcmp(missing, boxes)) { _nc_warning("acsc is missing some line-drawing mapping: %s", missing); } @@ -887,10 +892,10 @@ check_colors(TERMTYPE *tp) } } -static int +static char keypad_final(const char *string) { - int result = '\0'; + char result = '\0'; if (VALID_STRING(string) && *string++ == '\033' @@ -918,6 +923,7 @@ keypad_index(const char *string) return result; } +#define MAX_KP 5 /* * Do a quick sanity-check for vt100-style keypads to see if the 5-key keypad * is mapped inconsistently. @@ -932,8 +938,8 @@ check_keypad(TERMTYPE *tp) VALID_STRING(key_b2) && VALID_STRING(key_c1) && VALID_STRING(key_c3)) { - char final[6]; - int list[5]; + char final[MAX_KP + 1]; + int list[MAX_KP]; int increase = 0; int j, k, kk; int last; @@ -947,6 +953,7 @@ check_keypad(TERMTYPE *tp) final[5] = '\0'; /* special case: legacy coding using 1,2,3,0,. on the bottom */ + assert(strlen(final) <= MAX_KP); if (!strcmp(final, "qsrpn")) return; @@ -957,22 +964,22 @@ check_keypad(TERMTYPE *tp) list[4] = keypad_index(key_c3); /* check that they're all vt100 keys */ - for (j = 0; j < 5; ++j) { + for (j = 0; j < MAX_KP; ++j) { if (list[j] < 0) { return; } } /* check if they're all in increasing order */ - for (j = 1; j < 5; ++j) { + for (j = 1; j < MAX_KP; ++j) { if (list[j] > list[j - 1]) { ++increase; } } - if (increase != 4) { + if (increase != (MAX_KP - 1)) { show[0] = '\0'; - for (j = 0, last = -1; j < 5; ++j) { + for (j = 0, last = -1; j < MAX_KP; ++j) { for (k = 0, kk = -1, test = 100; k < 5; ++k) { if (list[k] > last && list[k] < test) { @@ -981,6 +988,7 @@ check_keypad(TERMTYPE *tp) } } last = test; + assert(strlen(show) < (MAX_KP * 4)); switch (kk) { case 0: strcat(show, " ka1"); diff --git a/contrib/ncurses/progs/toe.c b/contrib/ncurses/progs/toe.c index 38b85cb..8af6f37 100644 --- a/contrib/ncurses/progs/toe.c +++ b/contrib/ncurses/progs/toe.c @@ -44,7 +44,7 @@ #include <hashed_db.h> #endif -MODULE_ID("$Id: toe.c,v 1.48 2008/01/05 20:41:26 tom Exp $") +MODULE_ID("$Id: toe.c,v 1.51 2008/08/16 21:53:25 tom Exp $") #define isDotname(name) (!strcmp(name, ".") || !strcmp(name, "..")) @@ -163,6 +163,7 @@ typelist(int eargc, char *eargv[], for (i = 0; i < eargc; i++) { #if USE_DATABASE if (_nc_is_dir_path(eargv[i])) { + char *cwd_buf = 0; DIR *termdir; DIRENT *subdir; @@ -177,20 +178,30 @@ typelist(int eargc, char *eargv[], while ((subdir = readdir(termdir)) != 0) { size_t len = NAMLEN(subdir); - char buf[PATH_MAX]; + size_t cwd_len = len + strlen(eargv[i]) + 3; char name_1[PATH_MAX]; DIR *entrydir; DIRENT *entry; + cwd_buf = typeRealloc(char, cwd_len, cwd_buf); + if (cwd_buf == 0) { + perror("realloc cwd_buf"); + continue; + } + strncpy(name_1, subdir->d_name, len)[len] = '\0'; if (isDotname(name_1)) continue; - (void) sprintf(buf, "%s/%s/", eargv[i], name_1); - if (chdir(buf) != 0) + (void) sprintf(cwd_buf, "%s/%.*s/", eargv[i], (int) len, name_1); + if (chdir(cwd_buf) != 0) continue; entrydir = opendir("."); + if (entrydir == 0) { + perror(cwd_buf); + continue; + } while ((entry = readdir(entrydir)) != 0) { char name_2[PATH_MAX]; TERMTYPE lterm; @@ -222,6 +233,8 @@ typelist(int eargc, char *eargv[], closedir(entrydir); } closedir(termdir); + if (cwd_buf != 0) + free(cwd_buf); } #if USE_HASHED_DB else { @@ -317,7 +330,7 @@ main(int argc, char *argv[]) bool invert_dependencies = FALSE; bool header = FALSE; char *report_file = 0; - int i; + unsigned i; int code; int this_opt, last_opt = '?'; int v_opt = 0; @@ -386,7 +399,7 @@ main(int argc, char *argv[]) for_entry_list(qp) { if (qp->nuses) { - int j; + unsigned j; (void) printf("%s:", _nc_first_name(qp->tterm.term_names)); for (j = 0; j < qp->nuses; j++) diff --git a/contrib/ncurses/progs/tput.c b/contrib/ncurses/progs/tput.c index 8745cc9..022d494 100644 --- a/contrib/ncurses/progs/tput.c +++ b/contrib/ncurses/progs/tput.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. * + * Copyright (c) 1998-2007,2008 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,11 +42,12 @@ #include <progs.priv.h> #if !PURE_TERMINFO +#include <dump_entry.h> #include <termsort.c> #endif #include <transform.h> -MODULE_ID("$Id: tput.c,v 1.41 2007/10/13 20:34:16 tom Exp $") +MODULE_ID("$Id: tput.c,v 1.42 2008/07/13 11:05:12 tom Exp $") #define PUTS(s) fputs(s, stdout) #define PUTCHAR(c) putchar(c) diff --git a/contrib/ncurses/progs/tset.c b/contrib/ncurses/progs/tset.c index 3d60912..6a4d2d61 100644 --- a/contrib/ncurses/progs/tset.c +++ b/contrib/ncurses/progs/tset.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. * + * Copyright (c) 1998-2007,2008 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 * @@ -89,9 +89,12 @@ char *ttyname(int fd); #endif -/* this is just to stifle a missing-prototype warning */ -#ifdef linux -# include <sys/ioctl.h> +#if HAVE_SIZECHANGE +# if !defined(sun) || !TERMIOS +# if HAVE_SYS_IOCTL_H +# include <sys/ioctl.h> +# endif +# endif #endif #if NEED_PTEM_H @@ -104,7 +107,27 @@ char *ttyname(int fd); #include <dump_entry.h> #include <transform.h> -MODULE_ID("$Id: tset.c,v 1.70 2007/10/13 22:22:04 tom Exp $") +MODULE_ID("$Id: tset.c,v 1.76 2008/10/11 19:26:19 tom Exp $") + +/* + * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, + * Solaris, IRIX) define TIOCGWINSZ and struct winsize. + */ +#ifdef TIOCGSIZE +# define IOCTL_GET_WINSIZE TIOCGSIZE +# define IOCTL_SET_WINSIZE TIOCSSIZE +# define STRUCT_WINSIZE struct ttysize +# define WINSIZE_ROWS(n) n.ts_lines +# define WINSIZE_COLS(n) n.ts_cols +#else +# ifdef TIOCGWINSZ +# define IOCTL_GET_WINSIZE TIOCGWINSZ +# define IOCTL_SET_WINSIZE TIOCSWINSZ +# define STRUCT_WINSIZE struct winsize +# define WINSIZE_ROWS(n) n.ws_row +# define WINSIZE_COLS(n) n.ws_col +# endif +#endif extern char **environ; @@ -168,7 +191,7 @@ failed(const char *msg) char temp[BUFSIZ]; unsigned len = strlen(_nc_progname) + 2; - if (len < sizeof(temp) - 12) { + if ((int) len < (int) sizeof(temp) - 12) { strcpy(temp, _nc_progname); strcat(temp, ": "); } else { @@ -440,11 +463,15 @@ add_mapping(const char *port, char *arg) mapp->conditional = ~mapp->conditional & (EQ | GT | LT); /* If user specified a port with an option flag, set it. */ - done:if (port) { - if (mapp->porttype) - badmopt:err("illegal -m option format: %s", copy); + done: + if (port) { + if (mapp->porttype) { + badmopt: + err("illegal -m option format: %s", copy); + } mapp->porttype = port; } + free(copy); #ifdef MAPDEBUG (void) printf("port: %s\n", mapp->porttype ? mapp->porttype : "ANY"); (void) printf("type: %s\n", mapp->type); @@ -780,16 +807,16 @@ reset_mode(void) #ifdef NLDLY | NLDLY #endif -#ifdef CRDLY +#ifdef CRDLY | CRDLY #endif -#ifdef TABDLY +#ifdef TABDLY | TABDLY #endif -#ifdef BSDLY +#ifdef BSDLY | BSDLY #endif -#ifdef VTDLY +#ifdef VTDLY | VTDLY #endif #ifdef FFDLY @@ -863,13 +890,13 @@ set_control_chars(void) { #ifdef TERMIOS if (DISABLED(mode.c_cc[VERASE]) || terasechar >= 0) - mode.c_cc[VERASE] = terasechar >= 0 ? terasechar : default_erase(); + mode.c_cc[VERASE] = (terasechar >= 0) ? terasechar : default_erase(); if (DISABLED(mode.c_cc[VINTR]) || intrchar >= 0) - mode.c_cc[VINTR] = intrchar >= 0 ? intrchar : CINTR; + mode.c_cc[VINTR] = (intrchar >= 0) ? intrchar : CINTR; if (DISABLED(mode.c_cc[VKILL]) || tkillchar >= 0) - mode.c_cc[VKILL] = tkillchar >= 0 ? tkillchar : CKILL; + mode.c_cc[VKILL] = (tkillchar >= 0) ? tkillchar : CKILL; #endif } @@ -1128,17 +1155,14 @@ usage(void) static char arg_to_char(void) { - return (optarg[0] == '^' && optarg[1] != '\0') - ? ((optarg[1] == '?') ? '\177' : CTRL(optarg[1])) - : optarg[0]; + return (char) ((optarg[0] == '^' && optarg[1] != '\0') + ? ((optarg[1] == '?') ? '\177' : CTRL(optarg[1])) + : optarg[0]); } int main(int argc, char **argv) { -#if defined(TIOCGWINSZ) && defined(TIOCSWINSZ) - struct winsize win; -#endif int ch, noinit, noset, quiet, Sflag, sflag, showterm; const char *p; const char *ttype; @@ -1218,9 +1242,9 @@ main(int argc, char **argv) can_restore = TRUE; original = oldmode = mode; #ifdef TERMIOS - ospeed = cfgetospeed(&mode); + ospeed = (NCURSES_OSPEED) cfgetospeed(&mode); #else - ospeed = mode.sg_ospeed; + ospeed = (NCURSES_OSPEED) mode.sg_ospeed; #endif if (!strcmp(_nc_progname, PROG_RESET)) { @@ -1234,15 +1258,17 @@ main(int argc, char **argv) tcolumns = columns; tlines = lines; -#if defined(TIOCGWINSZ) && defined(TIOCSWINSZ) +#if HAVE_SIZECHANGE if (opt_w) { - /* Set window size */ - (void) ioctl(STDERR_FILENO, TIOCGWINSZ, &win); - if (win.ws_row == 0 && win.ws_col == 0 && + STRUCT_WINSIZE win; + /* Set window size if not set already */ + (void) ioctl(STDERR_FILENO, IOCTL_GET_WINSIZE, &win); + if (WINSIZE_ROWS(win) == 0 && + WINSIZE_COLS(win) == 0 && tlines > 0 && tcolumns > 0) { - win.ws_row = tlines; - win.ws_col = tcolumns; - (void) ioctl(STDERR_FILENO, TIOCSWINSZ, &win); + WINSIZE_ROWS(win) = tlines; + WINSIZE_COLS(win) = tcolumns; + (void) ioctl(STDERR_FILENO, IOCTL_SET_WINSIZE, &win); } } #endif @@ -1293,7 +1319,7 @@ main(int argc, char **argv) * environmental variable SHELL ending in "csh". */ if ((var = getenv("SHELL")) != 0 - && ((len = strlen(leaf = _nc_basename(var))) >= 3) + && ((len = (int) strlen(leaf = _nc_basename(var))) >= 3) && !strcmp(leaf + len - 3, "csh")) p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n"; else |