diff --git a/README.devel b/README.devel index 978b3b1..072faa9 100644 --- a/README.devel +++ b/README.devel @@ -3,33 +3,65 @@ There are several Ncurses Libraries which can be used for building with an terminal based application. The standard Ncurses Libraries -is given with +is given with ABI 5.6 - /usr/lib/libncurses.so or /usr/lib64/libncurses.so - /usr/lib/libform.so or /usr/lib64/libform.so - /usr/lib/libmenu.so or /usr/lib64/libmenu.so - /usr/lib/libpanel.so or /usr/lib64/libpanel.so + /usr/lib/libncurses.so or /usr/lib64/libncurses.so + /usr/lib/libform.so or /usr/lib64/libform.so + /usr/lib/libmenu.so or /usr/lib64/libmenu.so + /usr/lib/libpanel.so or /usr/lib64/libpanel.so and its header are installed in /usr/include/ e.g. (n)curses.h. Nothing has to be added in the CFLAGS nor in the LDFLAGS. Use the outout of - ncurses5-config --cflags for CFLAGS - ncurses5-config --libs for LDFLAGS + ncurses5-config --cflags for CFLAGS + ncurses5-config --libs for LDFLAGS For a version with wide character support please use the -libraries +libraries with old ABI 5.6 - /usr/lib/libncursesw.so or /usr/lib64/libncursesw.so - /usr/lib/libformw.so or /usr/lib64/libformw.so - /usr/lib/libmenuw.so or /usr/lib64/libmenuw.so - /usr/lib/libpanelw.so or /usr/lib64/libpanelw.so + /usr/lib/libncursesw.so or /usr/lib64/libncursesw.so + /usr/lib/libformw.so or /usr/lib64/libformw.so + /usr/lib/libmenuw.so or /usr/lib64/libmenuw.so + /usr/lib/libpanelw.so or /usr/lib64/libpanelw.so together with the header files found at /usr/include/ncursesw/. This can be done with `-I/usr/include/ncursesw' within the CFLAGS and e.g. `-lncursesw' in the LDFLAGS. Use the outout of - ncursesw5-config --cflags for CFLAGS - ncursesw5-config --libs for LDFLAGS + ncursesw5-config --cflags for CFLAGS + ncursesw5-config --libs for LDFLAGS + +For a thread safe version (also known as `reentrant' please +use the libraries with ABI 6.0 + + /usr/lib/ncurses6/libncurses.so or /usr/lib64/ncurses6/libncurses.so + /usr/lib/ncurses6/libform.so or /usr/lib64/ncurses6/libform.so + /usr/lib/ncurses6/libmenu.so or /usr/lib64/ncurses6/libmenu.so + /usr/lib/ncurses6/libpanel.so or /usr/lib64/ncurses6/libpanel.so + +together with the header files found at /usr/include/ncursest/. +This can be done with `-I/usr/include/ncursest' within the +CFLAGS and e.g. `-lncursest' in the LDFLAGS. +Use the outout of + + ncurses6-config --cflags for CFLAGS + ncurses6-config --libs for LDFLAGS + +For a version with both wide character support and thread safe +please use the libraries with ABI 6.0 + + /usr/lib/ncurses6/libncursesw.so or /usr/lib64/ncurses6/libncursesw.so + /usr/lib/ncurses6/libformw.so or /usr/lib64/ncurses6/libformw.so + /usr/lib/ncurses6/libmenuw.so or /usr/lib64/ncurses6/libmenuw.so + /usr/lib/ncurses6/libpanetw.so or /usr/lib64/ncurses6/libpanelw.so + +together with the header files found at /usr/include/ncursestw/. +This can be done with `-I/usr/include/ncursestw' within the +CFLAGS and e.g. `-lncursestw' in the LDFLAGS. +Use the outout of + + ncursesw6-config --cflags for CFLAGS + ncursesw6-config --libs for LDFLAGS diff --git a/baselibs.conf b/baselibs.conf index 50a2f97..65fdf73 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -2,6 +2,10 @@ libncurses5 targettype x86 provides "baselibs-x86:/lib/libncurses.so.5" provides "ncurses- = " obsoletes "ncurses- <= " +libncurses6 + targettype x86 provides "baselibs-x86:/lib/libncurses.so.6" + provides "ncurses- = 6.0" ncurses-devel requires -ncurses- requires "libncurses5- = " + requires "libncurses6- = 6.0" diff --git a/ncurses-5.6-20070128-patch.tar.bz2 b/ncurses-5.6-20070128-patch.tar.bz2 deleted file mode 100644 index acc519f..0000000 --- a/ncurses-5.6-20070128-patch.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:322cb2dbbd37327df2e2cd90325d06c862f598a01ffcb0c72a2992d939775966 -size 153357 diff --git a/ncurses-5.6-20080804-patch.tar.bz2 b/ncurses-5.6-20080804-patch.tar.bz2 new file mode 100644 index 0000000..64a026a --- /dev/null +++ b/ncurses-5.6-20080804-patch.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf49c5db276114b8158ac969b51ae2d6e80c9e2bddc4bf6a4d28db929ac3a46c +size 507144 diff --git a/ncurses-5.6-coverity.patch b/ncurses-5.6-coverity.patch deleted file mode 100644 index a254918..0000000 --- a/ncurses-5.6-coverity.patch +++ /dev/null @@ -1,519 +0,0 @@ ---- NEWS -+++ NEWS 2007-04-07 18:55:45.000000000 +0200 -@@ -103,6 +103,36 @@ it is not possible to add this informati - + modify shared-library rules to allow FreeBSD 3.x to use rpath. - + update config.guess, config.sub - -+20060407 -+ > other fixes prompted by inspection for Coverity report: -+ + modify ifdef's for c++ binding to use try/catch/throw statements -+ + add a null-pointer check in tack/ansi.c request_cfss() -+ + fix a memory leak in ncurses/base/wresize.c -+ + corrected check for valid memu/meml capabilities in -+ progs/dump_entry.c when handling V_HPUX case. -+ > fixes based on Coverity report: -+ + remove dead code in test/bs.c -+ + remove dead code in test/demo_defkey.c -+ + remove an unused assignment in progs/infocmp.c -+ + fix a limit check in tack/ansi.c tools_charset() -+ + fix tack/ansi.c tools_status() to perform the VT320/VT420 -+ tests in request_cfss(). The function had exited too soon. -+ + fix a memory leak in tic.c's make_namelist() -+ + fix a couple of places in tack/output.c which did not check for EOF. -+ + fix a loop-condition in test/bs.c -+ + add index checks in lib_color.c for color palettes -+ + add index checks in progs/dump_entry.c for version_filter() handling -+ of V_BSD case. -+ + fix a possible null-pointer dereference in copywin() -+ + fix a possible null-pointer dereference in waddchnstr() -+ + add a null-pointer check in _nc_expand_try() -+ + add a null-pointer check in tic.c's make_namelist() -+ + add a null-pointer check in _nc_expand_try() -+ + add null-pointer checks in test/cardfile.c -+ + fix a double-free in ncurses/tinfo/trim_sgr0.c -+ + fix a double-free in ncurses/base/wresize.c -+ + add try/catch block to c++/cursesmain.cc -+ - 20061217 5.6 release for upload to ftp.gnu.org - - 20061217 ---- configure -+++ configure 2007-04-07 00:54:52.000000000 +0200 -@@ -13892,7 +13892,7 @@ ac_link='$CXX -o conftest$ac_exeext $CXX - ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - ac_main_return=return - --for ac_header in typeinfo -+for ac_header in iostream typeinfo - do - as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` - echo "$as_me:13893: checking for $ac_header" >&5 ---- configure.in -+++ configure.in 2007-04-07 00:53:21.000000000 +0200 -@@ -1210,7 +1210,7 @@ if test -n "$CXX" ; then - ;; - esac - -- AC_CHECK_HEADERS(typeinfo) -+ AC_CHECK_HEADERS(iostream typeinfo) - - CF_BOOL_DECL - CF_BOOL_SIZE ---- c++/cursesmain.cc -+++ c++/cursesmain.cc 2008-04-09 17:57:56.093616466 +0200 -@@ -34,6 +34,13 @@ - #include "internal.h" - #include "cursesapp.h" - -+#if CPP_HAS_TRY_CATCH && HAVE_IOSTREAM -+#include -+#else -+#undef CPP_HAS_TRY_CATCH -+#define CPP_HAS_TRY_CATCH 0 -+#endif -+ - MODULE_ID("$Id: cursesmain.cc,v 1.13 2007/01/27 20:29:27 tom Exp $") - - #if HAVE_LOCALE_H -@@ -62,8 +69,20 @@ int main(int argc, char* argv[]) - - A->handleArgs(argc,argv); - ::endwin(); -+#if CPP_HAS_TRY_CATCH -+ try { -+ res = (*A)(); -+ ::endwin(); -+ } -+ catch(const NCursesException &e) { -+ ::endwin(); -+ std::cerr << e.message << std::endl; -+ res = e.errorno; -+ } -+#else - res = (*A)(); - ::endwin(); -+#endif - #if NO_LEAKS - delete A; - _nc_free_and_exit(res); ---- c++/cursesp.h -+++ c++/cursesp.h 2007-04-07 02:47:22.000000000 +0200 -@@ -83,7 +83,7 @@ protected: - return uptr->m_user; - } - -- void OnError (int err) const THROWS((NCursesPanelException)) -+ void OnError (int err) const THROWS(NCursesPanelException) - { - if (err==ERR) - THROW(new NCursesPanelException (this, err)); ---- c++/etip.h.in -+++ c++/etip.h.in 2007-04-07 02:49:39.000000000 +0200 -@@ -330,23 +330,33 @@ public: - inline void THROW(const NCursesException *e) { - #if defined(__GNUG__) && defined(__EXCEPTIONS) - # if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) -- (*lib_error_handler)(e?e->classname():"",e?e->message:""); -+ (*lib_error_handler)(e ? e->classname() : "", e ? e->message : ""); - #else -- throw *e; -+#define CPP_HAS_TRY_CATCH 1 - #endif - #elif defined(__SUNPRO_CC) - # if !defined(__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT < 5) - genericerror(1, ((e != 0) ? (char *)(e->message) : "")); - #else -- throw *e; -+#define CPP_HAS_TRY_CATCH 1 - #endif - #else - if (e) - cerr << e->message << endl; - exit(0); - #endif --} - --#define THROWS(s) -+#ifndef CPP_HAS_TRY_CATCH -+#define CPP_HAS_TRY_CATCH 0 -+#define NCURSES_CPP_TRY /* nothing */ -+#define NCURSES_CPP_CATCH(e) if (false) -+#define THROWS(s) /* nothing */ -+#elif CPP_HAS_TRY_CATCH -+ throw *e; -+#define NCURSES_CPP_TRY try -+#define NCURSES_CPP_CATCH(e) catch(e) -+#define THROWS(s) throw(s) -+#endif -+} - - #endif /* NCURSES_ETIP_H_incl */ ---- include/ncurses_defs -+++ include/ncurses_defs 2007-04-07 00:54:16.000000000 +0200 -@@ -68,6 +68,7 @@ HAVE_GPM_H - HAVE_GPP_BUILTIN_H - HAVE_GXX_BUILTIN_H - HAVE_HAS_KEY -+HAVE_IOSTREAM - HAVE_ISASCII - HAVE_ISSETUGID - HAVE_LANGINFO_CODESET ---- ncurses/base/lib_addstr.c -+++ ncurses/base/lib_addstr.c 2007-04-04 02:41:25.000000000 +0200 -@@ -80,8 +80,7 @@ waddnstr(WINDOW *win, const char *astr, - NCURSES_EXPORT(int) - waddchnstr(WINDOW *win, const chtype *astr, int n) - { -- NCURSES_SIZE_T y = win->_cury; -- NCURSES_SIZE_T x = win->_curx; -+ NCURSES_SIZE_T y, x; - int code = OK; - int i; - struct ldat *line; -@@ -91,6 +90,8 @@ waddchnstr(WINDOW *win, const chtype *as - if (!win) - returnCode(ERR); - -+ y = win->_cury; -+ x = win->_curx; - if (n < 0) { - const chtype *str; - n = 0; ---- ncurses/base/lib_color.c -+++ ncurses/base/lib_color.c 2007-04-04 22:32:04.000000000 +0200 -@@ -56,7 +56,10 @@ NCURSES_EXPORT_VAR(int) COLORS = 0; - - #define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts)) - -+#define MAX_PALETTE 8 -+ - #define OkColorHi(n) (((n) < COLORS) && ((n) < max_colors)) -+#define InPalette(n) ((n) >= 0 && (n) < MAX_PALETTE) - - /* - * Given a RGB range of 0..1000, we'll normally set the individual values -@@ -162,10 +165,10 @@ init_color_table(void) - - tp = (hue_lightness_saturation) ? hls_palette : cga_palette; - for (n = 0; n < COLORS; n++) { -- if (n < 8) { -+ if (InPalette(n)) { - SP->_color_table[n] = tp[n]; - } else { -- SP->_color_table[n] = tp[n % 8]; -+ SP->_color_table[n] = tp[n % MAX_PALETTE]; - if (hue_lightness_saturation) { - SP->_color_table[n].green = 100; - } else { -@@ -365,7 +368,7 @@ init_pair(short pair, short f, short b) - if (GET_SCREEN_PAIR(SP) == pair) - SET_SCREEN_PAIR(SP, (chtype) (~0)); /* force attribute update */ - -- if (initialize_pair) { -+ if (initialize_pair && InPalette(f) && InPalette(b)) { - const color_t *tp = hue_lightness_saturation ? hls_palette : cga_palette; - - TR(TRACE_ATTRS, ---- ncurses/base/lib_overlay.c -+++ ncurses/base/lib_overlay.c 2007-04-04 02:40:12.000000000 +0200 -@@ -139,8 +139,8 @@ copywin(const WINDOW *src, WINDOW *dst, - { - int sx, sy, dx, dy; - bool touched; -- attr_t bk = AttrOf(dst->_nc_bkgd); -- attr_t mask = ~(attr_t) ((bk & A_COLOR) ? A_COLOR : 0); -+ attr_t bk; -+ attr_t mask; - - T((T_CALLED("copywin(%p, %p, %d, %d, %d, %d, %d, %d, %d)"), - src, dst, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol, over)); -@@ -148,6 +148,9 @@ copywin(const WINDOW *src, WINDOW *dst, - if (!src || !dst) - returnCode(ERR); - -+ bk = AttrOf(dst->_nc_bkgd); -+ mask = ~(attr_t) ((bk & A_COLOR) ? A_COLOR : 0); -+ - /* make sure rectangle exists in source */ - if ((sminrow + dmaxrow - dminrow) > (src->_maxy + 1) || - (smincol + dmaxcol - dmincol) > (src->_maxx + 1)) { ---- ncurses/base/tries.c -+++ ncurses/base/tries.c 2007-04-03 22:58:30.000000000 +0200 -@@ -68,7 +68,7 @@ _nc_expand_try(TRIES * tree, unsigned co - } - } - if (result != 0) { -- if ((result[len] = ptr->ch) == 0) -+ if (ptr != 0 && (result[len] = ptr->ch) == 0) - *((unsigned char *) (result + len)) = 128; - #ifdef TRACE - if (len == 0 && _nc_tracing != 0) ---- ncurses/base/wresize.c -+++ ncurses/base/wresize.c 2007-04-04 22:28:42.000000000 +0200 -@@ -38,7 +38,7 @@ static int - cleanup_lines(struct ldat *data, int length) - { - while (--length >= 0) -- free(data->text); -+ free(data[length].text); - free(data); - return ERR; - } ---- ncurses/tinfo/trim_sgr0.c -+++ ncurses/tinfo/trim_sgr0.c 2007-04-04 21:29:01.000000000 +0200 -@@ -247,9 +247,7 @@ _nc_trim_sgr0(TERMTYPE *tp) - if (!rewrite_sgr(on, enter_alt_charset_mode) - || !rewrite_sgr(off, exit_alt_charset_mode) - || !rewrite_sgr(end, exit_alt_charset_mode)) { -- FreeIfNeeded(on); - FreeIfNeeded(off); -- FreeIfNeeded(end); - } else if (similar_sgr(off, end) - && !similar_sgr(off, on)) { - TR(TRACE_DATABASE, ("adjusting sgr(9:off) : %s", _nc_visbuf(off))); -@@ -315,8 +313,8 @@ _nc_trim_sgr0(TERMTYPE *tp) - */ - free(off); - } -- free(end); -- free(on); -+ FreeIfNeeded(end); -+ FreeIfNeeded(on); - } else { - /* - * Possibly some applications are confused if sgr0 contains rmacs, ---- progs/dump_entry.c -+++ progs/dump_entry.c 2007-04-07 17:51:47.000000000 +0200 -@@ -352,14 +352,17 @@ version_filter(PredType type, PredIdx id - } - break; - -+#define is_termcap(type) (idx < (int) sizeof(type##_from_termcap) && \ -+ type##_from_termcap[idx]) -+ - case V_BSD: /* BSD */ - switch (type) { - case BOOLEAN: -- return bool_from_termcap[idx]; -+ return is_termcap(bool); - case NUMBER: -- return num_from_termcap[idx]; -+ return is_termcap(num); - case STRING: -- return str_from_termcap[idx]; -+ return is_termcap(str); - } - break; - } -@@ -788,11 +791,11 @@ fmt_entry(TERMTYPE *tterm, - * Much more work should be done on this to support dumping termcaps. - */ - if (tversion == V_HPUX) { -- if (memory_lock) { -+ if (VALID_STRING(memory_lock)) { - (void) sprintf(buffer, "meml=%s", memory_lock); - WRAP_CONCAT; - } -- if (memory_unlock) { -+ if (VALID_STRING(memory_unlock)) { - (void) sprintf(buffer, "memu=%s", memory_unlock); - WRAP_CONCAT; - } ---- progs/infocmp.c -+++ progs/infocmp.c 2007-04-04 02:51:49.000000000 +0200 -@@ -1084,7 +1084,6 @@ dump_initializers(TERMTYPE *term) - } - *tp++ = '"'; - *tp = '\0'; -- size += (strlen(term->Strings[n]) + 1); - (void) printf("static char %-20s[] = %s;\n", - string_variable(ExtStrname(term, n, strnames)), buf); - } ---- progs/tic.c -+++ progs/tic.c 2007-04-07 17:20:35.000000000 +0200 -@@ -353,11 +353,24 @@ 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 const char ** -+static char ** - make_namelist(char *src) - { -- const char **dst = 0; -+ char **dst = 0; - - char *s, *base; - unsigned pass, n, nn; -@@ -374,11 +387,13 @@ make_namelist(char *src) - if ((s = stripped(buffer)) != 0) { - if (dst != 0) - dst[nn] = s; -+ else -+ free(s); - nn++; - } - } - if (pass == 1) { -- dst = typeCalloc(const char *, nn + 1); -+ dst = typeCalloc(char *, nn + 1); - rewind(fp); - } - } -@@ -401,10 +416,10 @@ make_namelist(char *src) - break; - } - if (pass == 1) -- dst = typeCalloc(const char *, nn + 1); -+ dst = typeCalloc(char *, nn + 1); - } - } -- if (showsummary) { -+ if (showsummary && (dst != 0)) { - fprintf(log_fp, "Entries that will be compiled:\n"); - for (n = 0; dst[n] != 0; n++) - fprintf(log_fp, "%u:%s\n", n + 1, dst[n]); -@@ -413,7 +428,7 @@ make_namelist(char *src) - } - - static bool --matches(const char **needle, const char *haystack) -+matches(char **needle, const char *haystack) - /* does entry in needle list match |-separated field in haystack? */ - { - bool code = FALSE; -@@ -468,7 +483,7 @@ main(int argc, char *argv[]) - bool limited = TRUE; - char *tversion = (char *) NULL; - const char *source_file = "terminfo"; -- const char **namelst = 0; -+ char **namelst = 0; - char *outdir = (char *) NULL; - bool check_only = FALSE; - bool suppress_untranslatable = FALSE; -@@ -784,6 +799,9 @@ main(int argc, char *argv[]) - else - fprintf(log_fp, "No entries written\n"); - } -+#if NO_LEAKS -+ free_namelist(namelst); -+#endif - cleanup(); - ExitProgram(EXIT_SUCCESS); - } ---- tack/ansi.c -+++ tack/ansi.c 2007-04-07 16:49:53.000000000 +0200 -@@ -309,6 +309,8 @@ request_cfss(void) - put_crlf(); - for (i = 0; rqss[i].text; i++) { - ptext(rqss[i].text); -+ if (rqss[i].expect == 0) -+ continue; - j = strlen(rqss[i].text) + strlen(rqss[i].expect); - putchp(' '); - for (j++; j < 40; j++) -@@ -600,10 +602,11 @@ tools_status( - i = read_reports(); - if (i != 'r' && i != 'R') { - *ch = i; -- return; -+ break; - } - } while (i); - -+ /* VT320, VT420, etc. */ - if (terminal_class >= 63) { - do { - i = request_cfss(); -@@ -841,7 +844,7 @@ tools_charset( - bank[j] = ch; - if (ch < ' ' || ch > '/') - break; -- if (j + 1 >= (int) sizeof(bank)) -+ if (j + 2 >= (int) sizeof(bank)) - break; - } - if (j == 1) ---- tack/output.c -+++ tack/output.c 2007-04-07 16:39:05.000000000 +0200 -@@ -740,7 +740,9 @@ wait_here(void) - /* ignore control S, but tell me about it */ - while (ch == 023 || ch == 021) { - ch = getchp(STRIP_PARITY); -- if (i < (int) sizeof(cc)) -+ if (ch == EOF) -+ break; -+ if (i + 1 < (int) sizeof(cc)) - cc[++i] = ch; - } - put_str("\nThe terminal sent a ^S -"); -@@ -778,7 +780,7 @@ read_string( - - for (i = 0; i < length - 1; ) { - ch = getchp(STRIP_PARITY); -- if (ch == '\r' || ch == '\n') { -+ if (ch == '\r' || ch == '\n' || ch == EOF) { - break; - } - if (ch == '\b' || ch == 127) { ---- test/bs.c -+++ test/bs.c 2007-04-03 01:14:05.000000000 +0200 -@@ -459,7 +459,7 @@ initgame(void) - do { - c = getch(); - } while -- (!strchr("hjklrR", c) || c == FF); -+ (!(strchr("hjklrR", c) || c == FF)); - - if (c == FF) { - (void) clearok(stdscr, TRUE); ---- test/cardfile.c -+++ test/cardfile.c 2007-04-04 22:12:24.000000000 +0200 -@@ -136,13 +136,15 @@ add_content(CARD * card, const char *con - if ((offset = strlen(card->content)) != 0) { - total += 1 + offset; - card->content = (char *) realloc(card->content, total + 1); -- strcpy(card->content + offset++, " "); -+ if (card->content) -+ strcpy(card->content + offset++, " "); - } else { - if (card->content != 0) - free(card->content); - card->content = (char *) malloc(total + 1); - } -- strcpy(card->content + offset, content); -+ if (card->content) -+ strcpy(card->content + offset, content); - } - } - ---- test/demo_defkey.c -+++ test/demo_defkey.c 2007-04-03 01:17:56.000000000 +0200 -@@ -143,13 +143,12 @@ really_define_key(WINDOW *win, const cha - code_name); - } - log_last_line(win); -+ - if (vis_string != 0) { - free(vis_string); - vis_string = 0; - } - -- if (vis_string != 0) -- free(vis_string); - vis_string = visible(new_string); - if ((rc = key_defined(new_string)) > 0) { - wprintw(win, "%s was bound to %s\n", vis_string, keyname(rc)); diff --git a/ncurses-5.6-gpm.dif b/ncurses-5.6-gpm.dif index 82b1d2a..e6d0498 100644 --- a/ncurses-5.6-gpm.dif +++ b/ncurses-5.6-gpm.dif @@ -4,7 +4,7 @@ static int allow_gpm_mouse(void) { -+#if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) ++#ifdef weak_symbol + /* Danger Robinson: do not use dlopen for libgpm if already loaded */ + if ((Gpm_Wgetch)) + return FALSE; @@ -27,7 +27,7 @@ #if USE_GPM_SUPPORT #undef buttons /* term.h defines this, and gpm uses it! */ #include -+#if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) ++#ifdef weak_symbol +weak_symbol(Gpm_Wgetch); +#endif diff --git a/ncurses-5.6-pthread.dif b/ncurses-5.6-pthread.dif index bebdddb..f35aa42 100644 --- a/ncurses-5.6-pthread.dif +++ b/ncurses-5.6-pthread.dif @@ -1,44 +1,75 @@ ---- ncurses/SigAction.h -+++ ncurses/SigAction.h 2008-04-11 17:31:36.060814000 +0200 -@@ -55,6 +55,31 @@ - typedef struct sigaction sigaction_t; +--- configure ++++ configure 2008-08-15 17:26:58.354794367 +0200 +@@ -9310,6 +9310,7 @@ if test "$with_pthread" = "yes" ; then + EOF + + enable_reentrant=yes ++ PTHREAD=-lpthread + fi + + # Reentrant code has to be opaque; there's little advantage to making ncurses +@@ -9333,7 +9334,8 @@ if test "$with_reentrant" = yes ; then + cf_cv_enable_opaque="NCURSES_INTERNALS" + NCURSES_OPAQUE=1 + NCURSES_SIZE_T=int +- LIB_SUFFIX="t${LIB_SUFFIX}" ++# remove pthread library from $LIBS ++LIBS=`echo "$LIBS" | sed -e 's/-lpthread[ ]//g' -e 's/-lpthread$//'` + cat >>confdefs.h <<\EOF + #define USE_REENTRANT 1 + EOF +@@ -16785,6 +16787,7 @@ s,@NCURSES_EXT_COLORS@,$NCURSES_EXT_COLO + s,@NCURSES_MOUSE_VERSION@,$NCURSES_MOUSE_VERSION,;t t + s,@NCURSES_SBOOL@,$NCURSES_SBOOL,;t t + s,@NCURSES_XNAMES@,$NCURSES_XNAMES,;t t ++s,@PTHREAD@,$PTHREAD,;t t + s,@cf_cv_enable_reentrant@,$cf_cv_enable_reentrant,;t t + s,@cf_cv_enable_opaque@,$cf_cv_enable_opaque,;t t + s,@NCURSES_OPAQUE@,$NCURSES_OPAQUE,;t t +--- configure.in ++++ configure.in 2008-08-15 17:24:08.626825950 +0200 +@@ -972,9 +972,11 @@ test "$with_colorfgbg" = yes && AC_DEFIN + # This is still experimental (20080329), but should ultimately be moved to + # the script-block --with-normal, etc. + CF_WITH_PTHREAD ++AC_SUBST(PTHREAD) + if test "$with_pthread" = "yes" ; then + AC_DEFINE(USE_PTHREADS) + enable_reentrant=yes ++ PTHREAD=-lpthread + fi + + # Reentrant code has to be opaque; there's little advantage to making ncurses +@@ -992,7 +994,7 @@ if test "$with_reentrant" = yes ; then + cf_cv_enable_opaque="NCURSES_INTERNALS" + NCURSES_OPAQUE=1 + NCURSES_SIZE_T=int +- LIB_SUFFIX="t${LIB_SUFFIX}" ++ CF_REMOVE_LIB(LIBS,$LIBS,pthread) + AC_DEFINE(USE_REENTRANT) + CF_NCURSES_ABI_6 + else +--- ncurses/curses.priv.h ++++ ncurses/curses.priv.h 2008-08-15 14:54:39.906243654 +0200 +@@ -330,6 +330,7 @@ NCURSES_EXPORT(int *) _nc_ptr_Cols (void + + #if USE_REENTRANT + #include ++extern NCURSES_EXPORT(void) _nc_init_pthreads(void); + extern NCURSES_EXPORT(void) _nc_mutex_init(pthread_mutex_t *); + extern NCURSES_EXPORT(int) _nc_mutex_lock(pthread_mutex_t *); + extern NCURSES_EXPORT(int) _nc_mutex_trylock(pthread_mutex_t *); +@@ -337,11 +338,43 @@ extern NCURSES_EXPORT(int) _nc_mutex_unl + #define _nc_lock_global(name) _nc_mutex_lock(&_nc_globals.mutex_##name) + #define _nc_try_global(name) _nc_mutex_trylock(&_nc_globals.mutex_##name) + #define _nc_unlock_global(name) _nc_mutex_unlock(&_nc_globals.mutex_##name) ++#define FORCE_PTHREADS 0 + + #else + #error POSIX threads requires --enable-reentrant option #endif -+#if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+static inline int _nc_sigprocmask(int how, const sigset_t *newmask, sigset_t *oldmask) -+{ -+ if ((pthread_sigmask)) -+ return pthread_sigmask(how, newmask, oldmask); -+ else -+ return sigprocmask(how, newmask, oldmask); -+} -+# undef sigprocmask -+# define sigprocmask _nc_sigprocmask -+ -+static inline void _nc_kill(SCREEN *scan, int signal) -+{ -+ if (!scan || !scan->_read_thread) -+ goto out; -+ if (!(pthread_kill) || !(pthread_equal) || !(pthread_self)) -+ goto out; -+ if (pthread_equal(scan->_read_thread, pthread_self())) -+ goto out; -+ pthread_kill(scan->_read_thread, signal); -+out: -+ return; -+} -+#endif -+ - #else /* !HAVE_SIGACTION */ - - #if HAVE_SIGVEC ---- ncurses/curses.priv.h -+++ ncurses/curses.priv.h 2008-04-11 18:21:47.136234297 +0200 -@@ -284,6 +284,29 @@ color_t; - #define GET_SCREEN_PAIR(s) GetPair(SCREEN_ATTRS(s)) - #define SET_SCREEN_PAIR(s,p) SetPair(SCREEN_ATTRS(s), p) - -+#if defined(__GNUC__) && defined(linux) ++#if defined(__GNUC__) && defined(__linux__) +# if defined __USE_ISOC99 +# define _cat_pragma(exp) _Pragma(#exp) +# define _weak_pragma(exp) _cat_pragma(weak name) @@ -47,197 +78,219 @@ +# endif +# define _declare(name) __extension__ extern __typeof__(name) name +# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) -+#else -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+# error The ncurses library has to be NPTL thread safe (requires the GCC) ++# ifdef USE_PTHREADS ++# undef FORCE_PTHREADS ++# define FORCE_PTHREADS 1 +# endif +#endif + -+#if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+# include ++#ifdef USE_PTHREADS ++# if FORCE_PTHREADS +weak_symbol(pthread_sigmask); -+weak_symbol(pthread_kill); +weak_symbol(pthread_self); +weak_symbol(pthread_equal); ++weak_symbol(pthread_mutex_init); ++weak_symbol(pthread_mutex_lock); ++weak_symbol(pthread_mutex_unlock); ++weak_symbol(pthread_mutex_trylock); ++weak_symbol(pthread_mutexattr_settype); ++extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *); ++# undef sigprocmask ++# define sigprocmask _nc_sigprocmask ++# endif +#endif + - /* - * Definitions for color pairs - */ -@@ -591,6 +614,11 @@ struct screen { - #define _nc_windows SP->_nc_sp_windows + #if HAVE_NANOSLEEP + #undef HAVE_NANOSLEEP + #define HAVE_NANOSLEEP 0 /* nanosleep suspends all threads */ +@@ -349,6 +382,7 @@ extern NCURSES_EXPORT(int) _nc_mutex_unl - bool _sig_winch; -+#if USE_SIGWINCH -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ pthread_t _read_thread; -+# endif -+#endif - SCREEN *_next_screen; + #else /* !USE_PTHREADS */ - /* hashes for old and new lines */ -@@ -1209,6 +1237,9 @@ extern NCURSES_EXPORT(void) _nc_scroll_o - extern NCURSES_EXPORT(void) _nc_scroll_optimize (void); - extern NCURSES_EXPORT(void) _nc_set_buffer (FILE *, bool); - extern NCURSES_EXPORT(void) _nc_signal_handler (bool); -+#if USE_SIGWINCH -+extern NCURSES_EXPORT(void) _nc_thread(SCREEN *); -+#endif - extern NCURSES_EXPORT(void) _nc_synchook (WINDOW *); - extern NCURSES_EXPORT(void) _nc_trace_tries (struct tries *); ++#define _nc_init_pthreads() /* nothing */ + #define _nc_mutex_init(obj) /* nothing */ + + #define _nc_lock_global(name) /* nothing */ +@@ -616,10 +650,12 @@ typedef struct { + #endif /* TRACE */ + + #ifdef USE_PTHREADS +- pthread_mutex_t mutex_curses; +- pthread_mutex_t mutex_tst_tracef; +- pthread_mutex_t mutex_tracef; +- int nested_tracef; ++ pthread_mutex_t mutex_curses; ++ pthread_mutex_t mutex_tst_tracef; ++ pthread_mutex_t mutex_tracef; ++ int nested_tracef; ++ int use_pthreads; ++#define _nc_use_pthreads _nc_globals.use_pthreads + #endif + } NCURSES_GLOBALS; --- ncurses/base/lib_getch.c -+++ ncurses/base/lib_getch.c 2007-01-31 12:41:27.000000000 +0100 -@@ -237,6 +237,10 @@ _nc_wgetch(WINDOW *win, - if (win == 0 || SP == 0) - returnCode(ERR); ++++ ncurses/base/lib_getch.c 2008-08-15 14:59:26.569224183 +0200 +@@ -260,7 +260,7 @@ recur_wrefresh(WINDOW *win) + { + #ifdef USE_PTHREADS + SCREEN *sp = _nc_screen_of(win); +- if (sp != SP) { ++ if (_nc_use_pthreads && sp != SP) { + SCREEN *save_SP; -+#if USE_SIGWINCH -+ _nc_thread(SP); -+#endif + /* temporarily switch to the window's screen to check/refresh */ +@@ -286,7 +286,7 @@ recur_wgetnstr(WINDOW *win, char *buf) + + if (sp != 0) { + #ifdef USE_PTHREADS +- if (sp != SP) { ++ if (_nc_use_pthreads && sp != SP) { + SCREEN *save_SP; + + /* temporarily switch to the window's screen to get cooked input */ +--- ncurses/base/lib_initscr.c ++++ ncurses/base/lib_initscr.c 2008-08-15 14:37:44.598653367 +0200 +@@ -57,7 +57,9 @@ initscr(void) + START_TRACE(); + T((T_CALLED("initscr()"))); + ++ _nc_init_pthreads(); + _nc_lock_global(curses); + - if (cooked_key_in_fifo()) { - if (wgetch_should_refresh(win)) - wrefresh(win); ---- ncurses/base/lib_set_term.c -+++ ncurses/base/lib_set_term.c 2008-04-08 15:18:15.000000000 +0200 -@@ -40,7 +40,7 @@ - */ + /* Portable applications must not call initscr() more than once */ + if (!_nc_globals.init_screen) { + _nc_globals.init_screen = TRUE; +--- ncurses/base/lib_newterm.c ++++ ncurses/base/lib_newterm.c 2008-08-15 14:37:33.293589963 +0200 +@@ -130,6 +130,7 @@ newterm(NCURSES_CONST char *name, FILE * + START_TRACE(); + T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp)); - #include -- -+#include - #include /* cur_term */ - #include ++ _nc_init_pthreads(); + _nc_lock_global(curses); -@@ -144,6 +144,12 @@ delscreen(SCREEN *sp) - free(sp->_setbuf); + current = SP; +--- ncurses/tinfo/lib_data.c ++++ ncurses/tinfo/lib_data.c 2008-08-15 14:42:37.974271725 +0200 +@@ -181,6 +181,7 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_ + PTHREAD_MUTEX_INITIALIZER, /* mutex_tst_tracef */ + PTHREAD_MUTEX_INITIALIZER, /* mutex_tracef */ + 0, /* nested_tracef */ ++ 0, /* use_pthreads */ + #endif + }; + +@@ -248,6 +249,27 @@ init_global_mutexes(void) } - -+#if USE_SIGWINCH -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ sp->_read_thread = (pthread_t)0; -+# endif -+#endif -+ - free(sp); - - /* -@@ -559,6 +565,15 @@ _nc_setupscreen(int slines, - returnCode(ERR); - SP->_stdscr = stdscr; - -+#if USE_SIGWINCH -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ if ((pthread_self)) -+ SP->_read_thread = pthread_self(); -+ else -+ SP->_read_thread = (pthread_t)0; -+# endif -+#endif -+ - returnCode(OK); } ---- ncurses/tinfo/lib_setup.c -+++ ncurses/tinfo/lib_setup.c 2007-01-31 11:46:17.000000000 +0100 -@@ -42,6 +42,7 @@ - #include - #include /* for MAX_NAME_SIZE */ - #include -+#include - - #if SVR4_TERMIO && !defined(_POSIX_SOURCE) - #define _POSIX_SOURCE -@@ -119,6 +120,13 @@ _nc_handle_sigwinch(int enable) - default: - /* record a SIGWINCH */ - have_sigwinch = 1; -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ scan = _nc_screen_chain; -+ while (scan) { -+ _nc_kill(scan, SIGWINCH); -+ scan = scan->_next_screen; -+ } -+# endif - break; - case 0: - /* temporarily disable the next block */ ---- ncurses/tty/lib_tstp.c -+++ ncurses/tty/lib_tstp.c 2007-01-31 13:14:40.000000000 +0100 -@@ -142,6 +142,11 @@ tstp(int dummy GCC_UNUSED) - #ifdef SIGTTOU - int sigttou_blocked; - #endif -+#if USE_SIGWINCH -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ pthread_t reader = (pthread_t)0; -+# endif -+#endif - - T(("tstp() called")); - -@@ -169,6 +174,10 @@ tstp(int dummy GCC_UNUSED) - (void) sigaddset(&mask, SIGALRM); - #if USE_SIGWINCH - (void) sigaddset(&mask, SIGWINCH); -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ reader = SP->_read_thread; -+ SP->_read_thread = (pthread_t)0; -+# endif - #endif - (void) sigprocmask(SIG_BLOCK, &mask, &omask); - -@@ -214,6 +223,12 @@ tstp(int dummy GCC_UNUSED) - sigaction(SIGTSTP, &oact, NULL); - flushinp(); - -+#if USE_SIGWINCH -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ SP->_read_thread = reader; -+# endif -+#endif -+ - /* - * If the user modified the tty state while suspended, he wants - * those changes to stick. So save the new "default" terminal state. -@@ -386,6 +401,13 @@ _nc_signal_handler(bool enable) - CatchIfDefault(SIGINT, cleanup); - CatchIfDefault(SIGTERM, cleanup); - #if USE_SIGWINCH -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ if ((pthread_self) && (pthread_equal)) { -+ pthread_t current = pthread_self(); -+ if (!pthread_equal(SP->_read_thread, current)) -+ SP->_read_thread = current; -+ } -+# endif - CatchIfDefault(SIGWINCH, sigwinch); - #endif - initialized = TRUE; -@@ -393,3 +415,25 @@ _nc_signal_handler(bool enable) - } - returnVoid; - } -+ -+#if USE_SIGWINCH -+/* -+ * This is invoked once at the beginning of reading, to remember -+ * which thread should be interrupted if the SIGWINCH handler is -+ * called. -+ */ -+ +NCURSES_EXPORT(void) -+_nc_thread(SCREEN *scan) ++_nc_init_pthreads(void) +{ -+# if defined(linux) && (defined(_REENTRANT) || defined(_THREAD_SAFE)) -+ if ((pthread_self) && (pthread_equal)) { -+ pthread_t current = pthread_self(); -+ if (pthread_equal(SP->_read_thread, current)) -+ return; -+ /* Remember the terminal reading thread */ -+ scan->_read_thread = current; -+ } ++ if (_nc_use_pthreads) ++ return; ++# if FORCE_PTHREADS ++ if ((pthread_mutex_init) == 0) ++ return; ++ if ((pthread_mutex_lock) == 0) ++ return; ++ if ((pthread_mutex_unlock) == 0) ++ return; ++ if ((pthread_mutex_trylock) == 0) ++ return; ++ if ((pthread_mutexattr_settype) == 0) ++ return; +# endif ++ _nc_use_pthreads = 1; ++ init_global_mutexes(); ++} ++ + /* + * Use recursive mutexes if we have them - they're part of Unix98. + * For the cases where we do not, _nc_mutex_trylock() is used to avoid a +@@ -262,6 +284,8 @@ _nc_mutex_init(pthread_mutex_t * obj) + { + pthread_mutexattr_t recattr; + ++ if (_nc_use_pthreads == 0) ++ return; + memset(&recattr, 0, sizeof(recattr)); + pthread_mutexattr_settype(&recattr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(obj, &recattr); +@@ -270,21 +294,39 @@ _nc_mutex_init(pthread_mutex_t * obj) + NCURSES_EXPORT(int) + _nc_mutex_lock(pthread_mutex_t * obj) + { +- init_global_mutexes(); ++ if (_nc_use_pthreads == 0) ++ return 0; + return pthread_mutex_lock(obj); + } + + NCURSES_EXPORT(int) + _nc_mutex_trylock(pthread_mutex_t * obj) + { +- init_global_mutexes(); ++ if (_nc_use_pthreads == 0) ++ return 0; + return pthread_mutex_trylock(obj); + } + + NCURSES_EXPORT(int) + _nc_mutex_unlock(pthread_mutex_t * obj) + { +- init_global_mutexes(); ++ if (_nc_use_pthreads == 0) ++ return 0; + return pthread_mutex_unlock(obj); + } ++ ++#if FORCE_PTHREADS ++/* ++ * NB: sigprocmask(2) is global but pthread_sigmask(3p) ++ * only for the calling thread. ++ */ ++NCURSES_EXPORT(int) ++_nc_sigprocmask(int how, const sigset_t *newmask, sigset_t *oldmask) ++{ ++ if ((pthread_sigmask)) ++ return pthread_sigmask(how, newmask, oldmask); ++ else ++ return sigprocmask(how, newmask, oldmask); +} +#endif + #endif /* USE_PTHREADS */ +--- ncurses/tinfo/lib_options.c ++++ ncurses/tinfo/lib_options.c 2008-08-15 15:02:29.662454211 +0200 +@@ -245,7 +245,7 @@ _nc_keypad(SCREEN *sp, bool flag) + * has wgetch() reading in more than one thread. putp() and below + * may use SP explicitly. + */ +- if (sp != SP) { ++ if (_nc_use_pthreads && sp != SP) { + SCREEN *save_sp; + + /* cannot use use_screen(), since that is not in tinfo library */ +--- ncurses/trace/lib_trace.c ++++ ncurses/trace/lib_trace.c 2008-08-15 14:26:03.884728534 +0200 +@@ -180,6 +180,9 @@ _nc_va_tracef(const char *fmt, va_list a + * Rather than add the complication of a per-thread stack, just + * show the thread-id in each line of the trace. + */ ++# if FORCE_PTHREADS ++ if ((pthread_self)) ++# endif + fprintf(TraceFP, "%#lx:", (long) pthread_self()); + #endif + if (before || after) { +--- test/Makefile.in ++++ test/Makefile.in 2008-08-15 17:21:56.826424899 +0200 +@@ -95,7 +95,7 @@ LIBS_DEFAULT = $(TEST_ARGS) @LIBS@ $(TES + LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_DEFAULT) + + # use these for linking with the (n)curses library +-LIBS_CURSES = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-lform.*-lpanel[^ ]*//'` $(TEST_LIBS) $(MATH_LIB) ++LIBS_CURSES = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-lform.*-lpanel[^ ]*//'` $(TEST_LIBS) $(MATH_LIB) @PTHREAD@ + LDFLAGS_CURSES = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_CURSES) + + # use these for linking with the tinfo library if we have it, or curses library if not diff --git a/ncurses-5.6-tack.dif b/ncurses-5.6-tack.dif new file mode 100644 index 0000000..e0ac14e --- /dev/null +++ b/ncurses-5.6-tack.dif @@ -0,0 +1,11 @@ +--- tack-1.06/Makefile.in ++++ tack-1.06/Makefile.in 2008-08-14 13:57:00.930682483 +0200 +@@ -98,7 +98,7 @@ ABI_VERSION = @cf_cv_abi_version@ + LOCAL_LIBDIR = @top_builddir@/lib + + LD = @LD@ +-LINK = @LINK_PROGS@ $(LIBTOOL_LINK) ++LINK = @LINK_PROGS@ $(CC) + LDFLAGS = @EXTRA_LDFLAGS@ \ + @TICS_ARGS@ @TINFO_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@ + diff --git a/ncurses-5.6.dif b/ncurses-5.6.dif index d3df59d..01c0814 100644 --- a/ncurses-5.6.dif +++ b/ncurses-5.6.dif @@ -1,15 +1,20 @@ --- .pkgextract +++ .pkgextract 2006-05-18 16:07:14.000000000 +0200 -@@ -0,0 +1,6 @@ -+tar Oxfj ../ncurses-5.6-20070128-patch.tar.bz2 | patch -p1 -s +@@ -0,0 +1,11 @@ ++rm -fr tack ++rm -f Ada95/src/terminal_interface-curses.adb ++rm -f mkinstalldirs ++tar Oxfj ../ncurses-5.6-20080804-patch.tar.bz2 | patch -p1 -s ++tar xfj ../tack-1.06.tar.bz +patch -p0 -s --suffix=.va < ../ncurses-5.3-printw.dif +patch -p0 -s --suffix=.pt < ../ncurses-5.6-pthread.dif +patch -p0 -s --suffix=.ov < ../ncurses-5.6-overwrite.dif -+patch -p0 -s --suffix=.cv < ../ncurses-5.6-coverity.patch ++patch -p0 -s --suffix=.hs < ../ncurses-5.6-hash.dif ++patch -p0 -s --suffix=.tack < ../ncurses-5.6-tack.dif +patch -p0 -s --suffix=.gpm < ../ncurses-5.6-gpm.dif --- aclocal.m4 -+++ aclocal.m4 2007-01-31 13:28:46.000000000 +0100 -@@ -298,7 +298,7 @@ AC_MSG_CHECKING([for size of bool]) ++++ aclocal.m4 2008-04-08 17:08:00.277340000 +0200 +@@ -391,7 +391,7 @@ AC_MSG_CHECKING([for size of bool]) AC_CACHE_VAL(cf_cv_type_of_bool,[ rm -f cf_test.out AC_TRY_RUN([ @@ -18,7 +23,7 @@ #include #if defined(__cplusplus) -@@ -2942,12 +2942,15 @@ cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP CF_EOF if test -n "$cf_compress" ; then -@@ -3051,8 +3054,8 @@ cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP CF_EOF if test -n "$cf_compress" ; then -@@ -8295,8 +8298,8 @@ cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man < @@ -244,27 +255,41 @@ #include #if defined(__cplusplus) -@@ -15217,6 +15221,7 @@ if test "$with_termlib" != no ; then +@@ -15797,12 +15801,13 @@ if test "$with_termlib" != no ; then TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS" SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" fi + TINFO_ARGS="$TINFO_ARGS -L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}" else + # the next lines are needed for linking libtic over libncurses + TINFO_NAME=${LIB_NAME} + TINFO_SUFFIX=${DFT_LIB_SUFFIX} + TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX} +- TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}" ++ TICS_LIST="$SHLIB_LIST" + TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}" fi --- configure.in -+++ configure.in 2007-01-31 15:37:34.000000000 +0100 -@@ -1510,6 +1510,7 @@ if test "$with_termlib" != no ; then ++++ configure.in 2008-08-14 17:10:51.210017818 +0200 +@@ -1622,12 +1622,13 @@ if test "$with_termlib" != no ; then TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS" SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" fi + TINFO_ARGS="$TINFO_ARGS -L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}" else + # the next lines are needed for linking libtic over libncurses + TINFO_NAME=${LIB_NAME} + TINFO_SUFFIX=${DFT_LIB_SUFFIX} + TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX} +- TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}" ++ TICS_LIST="$SHLIB_LIST" + TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}" fi --- include/curses.h.in -+++ include/curses.h.in 2006-05-18 16:07:15.000000000 +0200 -@@ -130,6 +130,8 @@ typedef unsigned @cf_cv_typeof_chtype@ c ++++ include/curses.h.in 2008-04-09 15:44:06.583779000 +0200 +@@ -137,6 +137,8 @@ typedef unsigned @cf_cv_typeof_chtype@ c typedef unsigned @cf_cv_typeof_mmask_t@ mmask_t; #endif @@ -286,7 +311,7 @@ #undef NCURSES_CONST --- include/tic.h +++ include/tic.h 2006-05-18 16:07:15.000000000 +0200 -@@ -226,12 +226,12 @@ extern NCURSES_EXPORT(const struct name_ +@@ -211,12 +211,12 @@ extern NCURSES_EXPORT(const struct alias #define NOTFOUND ((struct name_table_entry *) 0) /* out-of-band values for representing absent capabilities */ @@ -303,7 +328,7 @@ --- man/man_db.renames +++ man/man_db.renames 2006-05-18 16:07:15.000000000 +0200 -@@ -158,6 +158,8 @@ tput.1 tput.1 +@@ -161,6 +161,8 @@ tput.1 tput.1 tset.1 tset.1 vprintf.3s vprintf.3 wresize.3x wresize.3ncurses @@ -314,7 +339,7 @@ tack.1m tack.1 --- man/ncurses.3x +++ man/ncurses.3x 2006-05-18 16:07:15.000000000 +0200 -@@ -88,6 +88,10 @@ after the shell environment variable \fB +@@ -97,6 +97,10 @@ after the shell environment variable \fB \fBtset(1)\fR is usually responsible for doing this. [See \fBterminfo\fR(\*n) for further details.] .PP @@ -324,20 +349,20 @@ +.PP The \fBncurses\fR library permits manipulation of data structures, called \fIwindows\fR, which can be thought of as two-dimensional - arrays of characters representing all or part of a CRT screen. A + arrays of characters representing all or part of a CRT screen. --- misc/ncurses-config.in -+++ misc/ncurses-config.in 2008-04-10 11:12:06.528491302 +0200 -@@ -73,7 +73,7 @@ while test $# -gt 0; do ++++ misc/ncurses-config.in 2008-04-10 11:36:57.986551686 +0200 +@@ -78,7 +78,7 @@ while test $# -gt 0; do if test "${prefix}/include" != /usr/include ; then INCS="-I${prefix}/include" fi - if test "@WITH_OVERWRITE@" != no ; then -+ if test "${THIS%[0-9]*}" != ncurses ; then ++ if test "${THIS%[0-5]*}" != ncurses ; then INCS="$INCS -I${prefix}/include/${THIS}" fi sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO --- misc/terminfo.src -+++ misc/terminfo.src 2007-01-31 14:27:30.000000000 +0100 ++++ misc/terminfo.src 2008-04-08 17:16:48.748977000 +0200 @@ -301,7 +301,9 @@ dumb|80-column dumb tty, am, cols#80, @@ -349,7 +374,7 @@ gn, use=dumb, lpr|printer|line printer, OTbs, hc, os, -@@ -747,9 +749,15 @@ linux-c|linux console 1.3.6+ for older n +@@ -757,9 +759,15 @@ linux-c|linux console 1.3.6+ for older n # The 2.2.x kernels add a private mode that sets the cursor type; use that to # get a block cursor for cvvis. # reported by Frank Heckenbach . @@ -366,7 +391,7 @@ # See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file linux-nic|linux with ich/ich1 suppressed for non-curses programs, -@@ -2141,6 +2149,7 @@ vt132|DEC vt132, +@@ -2151,6 +2159,7 @@ vt132|DEC vt132, # at the top of the keyboard. The "DO" key is used as F10 to avoid conflict # with the key marked (ESC) on the vt220. See vt220d for an alternate mapping. # PF1--PF4 are used as F1--F4. @@ -374,7 +399,7 @@ # vt220-old|vt200-old|DEC VT220 in vt100 emulation mode, OTbs, OTpt, am, mir, xenl, xon, -@@ -2150,7 +2159,7 @@ vt220-old|vt200-old|DEC VT220 in vt100 e +@@ -2160,7 +2169,7 @@ vt220-old|vt200-old|DEC VT220 in vt100 e bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l, clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, @@ -383,7 +408,7 @@ dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, kcud1=\E[B, -@@ -2298,6 +2307,7 @@ vt320nam|v320n|DEC VT320 in vt100 emul. +@@ -2308,6 +2317,7 @@ vt320nam|v320n|DEC VT320 in vt100 emul. # to SMASH the 1k-barrier... # From: Adam Thompson Sept 10 1995 # (vt320: uncommented --esr) @@ -391,7 +416,7 @@ vt320|vt300|dec vt320 7 bit terminal, am, eslok, hs, mir, msgr, xenl, cols#80, lines#24, wsl#80, -@@ -2307,7 +2317,7 @@ vt320|vt300|dec vt320 7 bit terminal, +@@ -2317,7 +2327,7 @@ vt320|vt300|dec vt320 7 bit terminal, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, @@ -400,7 +425,7 @@ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, fsl=\E[0$}, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, -@@ -2740,13 +2750,14 @@ putty-vt100|VT100+ keyboard layout, +@@ -2751,13 +2761,14 @@ putty-vt100|VT100+ keyboard layout, # retrieving the window title, and for setting the window size (i.e., using # "resize -s"), though it does not pass SIGWINCH to the application if the # user resizes the window with the mouse. @@ -416,7 +441,7 @@ dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, kf1=\E[11~, -@@ -2920,6 +2931,7 @@ xterm-r6|xterm-old|xterm X11R6 version, +@@ -2931,6 +2942,7 @@ xterm-r6|xterm-old|xterm X11R6 version, use=vt100+enq, # This is the base xterm entry for the xterm supplied with XFree86 3.2 & up. # The name has been changed and some aliases have been removed. @@ -424,7 +449,7 @@ xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System), OTbs, am, bce, km, mir, msgr, xenl, cols#80, it#8, lines#24, ncv@, -@@ -2929,7 +2941,7 @@ xterm-xf86-v32|xterm terminal emulator ( +@@ -2940,7 +2952,7 @@ xterm-xf86-v32|xterm terminal emulator ( csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, @@ -433,9 +458,9 @@ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, -@@ -3285,8 +3297,26 @@ xterm-noapp|xterm with cursor keys in no +@@ -3372,8 +3384,26 @@ xterm-noapp|xterm with cursor keys in no xterm-24|vs100|xterms|xterm terminal emulator (X Window System), - lines#24, use=xterm, + lines#24, use=xterm-old, +# For SuSE Linux: Werner Fink +# Note that the modern xterm does not use escape sequences @@ -460,7 +485,7 @@ use=xterm-new, # These entries allow access to the X titlebar and icon name as a status line. -@@ -3379,7 +3409,7 @@ xterm-color|nxterm|generic color xterm, +@@ -3466,7 +3496,7 @@ xterm-color|nxterm|generic color xterm, op=\E[m, use=xterm-r6, use=klone+color, # this describes the alpha-version of Gnome terminal shipped with Redhat 6.0 @@ -469,7 +494,7 @@ bce, kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=xterm-color, -@@ -3468,10 +3498,14 @@ mgt|Multi GNOME Terminal, +@@ -3567,10 +3597,14 @@ mgt|Multi GNOME Terminal, # This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce # or not is debatable). @@ -485,10 +510,10 @@ # Konsole 1.0.1 # (formerly known as kvt) # -@@ -3559,17 +3593,18 @@ konsole|KDE console window, +@@ -3673,17 +3707,18 @@ konsole-256color|KDE console window with + # control/alt kf1 to kf12 \E[11;7~ to \E[24;7~ + # control/shit/alt kf1 to kf12 \E[11;8~ to \E[24;8~ # - # There are some problems with vttest: - # test of character sets leaves it in line-drawing mode. +# Add cvvis mlterm|multi lingual terminal emulator, am, eslok, km, mc5i, mir, msgr, npc, xenl, @@ -507,15 +532,15 @@ home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, -@@ -3608,6 +3643,7 @@ mlterm|multi lingual terminal emulator, +@@ -3730,6 +3765,7 @@ mlterm+pcfkeys|fragment for PC-style fke # rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM. # Since rxvt is not really compatible with xterm, it should be configured as - # "rxvt" (monochrome) and "rxvt-color". + # "rxvt" or "rxvt-color". +# (cvvis added by werner) # # removed dch/dch1 because they are inconsistent with bce/ech -TD # remove km as per tack test -TD -@@ -3619,13 +3655,14 @@ rxvt-basic|rxvt terminal base (X Window +@@ -3741,13 +3777,14 @@ rxvt-basic|rxvt terminal base (X Window clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, @@ -533,7 +558,7 @@ rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m, rmul=\E[24m, rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, -@@ -3634,7 +3671,7 @@ rxvt-basic|rxvt terminal base (X Window +@@ -3756,7 +3793,7 @@ rxvt-basic|rxvt terminal base (X Window sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, sgr0=\E[0m\017, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt100+enq, @@ -542,10 +567,10 @@ # Key Codes from rxvt reference: # # Note: Shift + F1-F10 generates F11-F20 -@@ -3708,8 +3745,8 @@ rxvt-basic|rxvt terminal base (X Window +@@ -3839,8 +3876,8 @@ rxvt-basic|rxvt terminal base (X Window # Removed kDN6, etc (control+shift) since rxvt does not implement this -TD rxvt+pcfkeys|fragment for PC-style fkeys, - kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E2$, kLFT=\E[d, + kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d, - kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kel=\E[8\^, + kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\EOD, kcud1=\EOB, @@ -553,7 +578,7 @@ kend=\E[8~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, -@@ -3742,6 +3779,29 @@ rxvt-cygwin-native|rxvt terminal emulato +@@ -3876,6 +3913,29 @@ rxvt-cygwin-native|rxvt terminal emulato acsc=0\333+\257\,\256-\^`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330~\376, use=rxvt-cygwin, @@ -583,7 +608,7 @@ # This variant is supposed to work with rxvt 2.7.7 when compiled with # NO_BRIGHTCOLOR defined. rxvt needs more work... rxvt-16color|xterm with 16 colors like aixterm, -@@ -3752,7 +3812,7 @@ rxvt-16color|xterm with 16 colors like a +@@ -3893,7 +3953,7 @@ mrxvt|multitabbed rxvt, # Eterm 0.9.3 # # removed kf0 which conflicts with kf10 -TD @@ -592,7 +617,7 @@ # Eterm does not implement control/shift cursor keys such as kDN6, or kPRV/kNXT # but does otherwise follow the rxvt+pcfkeys model -TD # remove nonworking flash -TD -@@ -3766,13 +3826,13 @@ Eterm|Eterm-color|Eterm with xterm-style +@@ -3907,13 +3967,13 @@ Eterm|Eterm-color|Eterm with xterm-style csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, @@ -608,7 +633,7 @@ kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=, -@@ -4108,7 +4168,7 @@ pty|4bsd pseudo teletype, +@@ -4249,7 +4309,7 @@ pty|4bsd pseudo teletype, smso=\Ea$, smul=\Ea!, use=cbunix, # The codes supported by the term.el terminal emulation in GNU Emacs 19.30 @@ -617,7 +642,7 @@ am, mir, xenl, cols#80, lines#24, bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, -@@ -4121,6 +4181,13 @@ eterm|gnu emacs term.el terminal emulati +@@ -4262,6 +4322,13 @@ eterm|gnu emacs term.el terminal emulati rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m, smul=\E[4m, @@ -631,7 +656,7 @@ # Entries for use by the `screen' program by Juergen Weigert, # Michael Schroeder, Oliver Laumann. The screen and -@@ -4149,7 +4216,7 @@ screen|VT 100/ANSI X3.64 virtual termina +@@ -4290,7 +4357,7 @@ screen|VT 100/ANSI X3.64 virtual termina cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, @@ -640,7 +665,7 @@ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, -@@ -4265,7 +4332,7 @@ screen2|old VT 100/ANSI X3.64 virtual te +@@ -4406,7 +4473,7 @@ screen2|old VT 100/ANSI X3.64 virtual te cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL, @@ -649,7 +674,7 @@ kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH, nel=^M^J, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m, -@@ -5998,7 +6065,7 @@ hp700-wy|HP700/41 emulating wyse30, +@@ -6139,7 +6206,7 @@ hp700-wy|HP700/41 emulating wyse30, ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>, sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>, smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c, @@ -658,7 +683,7 @@ am, da, db, xhp, cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA, -@@ -9129,6 +9196,7 @@ msk22714|mskermit22714|UCB MS-DOS Kermit +@@ -9270,6 +9337,7 @@ msk22714|mskermit22714|UCB MS-DOS Kermit # at support for the VT320 itself. # Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu. # (vt320-k3: I added / based on the init string -- esr) @@ -666,7 +691,7 @@ vt320-k3|MS-Kermit 3.00's vt320 emulation, am, eslok, hs, km, mir, msgr, xenl, cols#80, it#8, lines#49, pb#9600, vt#3, -@@ -9138,7 +9206,7 @@ vt320-k3|MS-Kermit 3.00's vt320 emulatio +@@ -9279,7 +9347,7 @@ vt320-k3|MS-Kermit 3.00's vt320 emulatio csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, @@ -675,7 +700,7 @@ dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l, fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, -@@ -13413,7 +13481,7 @@ ibm3101|i3101|IBM 3101-10, +@@ -13554,7 +13622,7 @@ ibm3101|i3101|IBM 3101-10, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH, @@ -684,7 +709,7 @@ is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B, sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;, sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162, -@@ -13641,7 +13709,7 @@ lft|lft-pc850|LFT-PC850|IBM LFT PC850 De +@@ -13782,7 +13850,7 @@ lft|lft-pc850|LFT-PC850|IBM LFT PC850 De sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;, sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, @@ -694,8 +719,8 @@ s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154, ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display, --- ncurses/Makefile.in -+++ ncurses/Makefile.in 2007-01-31 13:34:38.000000000 +0100 -@@ -184,7 +184,7 @@ $(DESTDIR)$(libdir) : ++++ ncurses/Makefile.in 2008-04-09 15:57:41.084024000 +0200 +@@ -183,7 +183,7 @@ $(DESTDIR)$(libdir) : ../lib : ; mkdir $@ ./fallback.c : $(tinfo)/MKfallback.sh @@ -706,7 +731,7 @@ sh $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@ --- ncurses/curses.priv.h +++ ncurses/curses.priv.h 2006-05-18 16:07:15.000000000 +0200 -@@ -1202,6 +1202,8 @@ extern NCURSES_EXPORT(WINDOW *) _nc_make +@@ -1560,6 +1560,8 @@ extern NCURSES_EXPORT(WINDOW *) _nc_make extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t); extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *); extern NCURSES_EXPORT(int) _nc_access (const char *, int); @@ -764,7 +789,7 @@ --- ncurses/tinfo/access.c +++ ncurses/tinfo/access.c 2006-05-18 16:07:15.000000000 +0200 -@@ -36,6 +36,9 @@ +@@ -37,6 +37,9 @@ #include #include @@ -772,7 +797,7 @@ +# include +#endif - MODULE_ID("$Id: access.c,v 1.12 2006/08/05 17:18:14 tom Exp $") + MODULE_ID("$Id: access.c,v 1.14 2007/11/18 00:57:53 tom Exp $") @@ -106,6 +109,30 @@ _nc_basename(char *path) return path + _nc_pathlast(path); @@ -807,7 +832,7 @@ { --- ncurses/tinfo/lib_setup.c +++ ncurses/tinfo/lib_setup.c 2006-05-18 17:52:22.000000000 +0200 -@@ -432,6 +432,9 @@ _nc_locale_breaks_acs(void) +@@ -454,6 +454,9 @@ _nc_locale_breaks_acs(void) if ((env = getenv("NCURSES_NO_UTF8_ACS")) != 0) { return atoi(env); } else if ((env = getenv("TERM")) != 0) { @@ -884,7 +909,7 @@ if (copied != 0) --- test/test.priv.h +++ test/test.priv.h 2006-05-18 16:07:19.000000000 +0200 -@@ -429,12 +429,12 @@ extern int optind; +@@ -472,12 +472,12 @@ extern int optind; #endif /* out-of-band values for representing absent capabilities */ diff --git a/ncurses.changes b/ncurses.changes index 7d33a57..7400791 100644 --- a/ncurses.changes +++ b/ncurses.changes @@ -1,3 +1,49 @@ +------------------------------------------------------------------- +Thu Aug 14 17:26:53 CEST 2008 - werner@suse.de + +- Update to test version 5.6.20080804 + * fix memory leaks in test/demo_menus + * build-fixes for gcc 4.3.1 + * use NCURSES_MOUSE_MASK() in definition of BUTTON_RELEASE(), etc., to + make those work properly with the "--enable-ext-mouse" configuration + (cf: 20050205). + * improve mlterm and mlterm+pcfkeys terminfo entries -TD + * add null-pointer checks for cur_term in baudrate() and + def_shell_mode(), def_prog_mode() + * fix some memory leaks in delscreen() and wide acs. + * modify test/ditto.c to illustrate multi-threaded use_screen(). + * finish changes to wgetch(), making it switch as needed to the + window's actual screen when calling wrefresh() and wgetnstr(). That + allows wgetch() to get used concurrently in different threads with + some minor restrictions, e.g., the application should not delete a + window which is being used in a wgetch(). + * simplify mutex's, combining the window- and screen-mutex's. + * modify wgetch() to use the screen which corresponds to its window + parameter rather than relying on SP; some dependent functions still + use SP internally. + * factor out most use of SP in lib_mouse.c, using parameter. + * modify _nc_keypad() to make it switch temporarily as needed to the + screen which must be updated. + * wrap cur_term variable to help make _nc_keymap() thread-safe, and + always set the screen's copy of this variable in set_curterm(). + * restore curs_set() state after endwin()/refresh() (report/patch + Miroslav Lichvar) + * corrected manpage description of setcchar() + * fix for adding a non-spacing character at the beginning of a line + * modify screen.* terminfo entries using new screen+fkeys to fix + overridden keys in screen.rxvt (Debian #478094) -TD + * simplify some loops with macros each_screen(), each_window() and + each_ripoff(). + * fix typo in form.3x + * add screen.rxvt terminfo entry -TD + * modify tic -f option to format spaces as \s to prevent them from + being lost when that is read back in unformatted strings. + * add locks for copywin(), dupwin(), overlap(), overlay() on their + window parameters. + * add locks for initscr() and newterm() on updates to the SCREEN + pointer. + * finish table in curs_thread.3x manpage. + ------------------------------------------------------------------- Wed May 7 20:20:54 CEST 2008 - coolo@suse.de @@ -10,9 +56,9 @@ Tue Apr 22 16:57:32 CEST 2008 - werner@suse.de terminfo-base to get the resolvers happy (bnc#381293) ------------------------------------------------------------------- -Wed Apr 16 18:09:47 CEST 2008 - ro@suse.de +Sat Apr 19 23:47:19 CEST 2008 - ro@suse.de -- update baselibs.conf (for package rename) +- update baselibs.conf ------------------------------------------------------------------- Fri Apr 11 18:22:32 CEST 2008 - werner@suse.de @@ -35,12 +81,17 @@ Thu Apr 10 11:17:20 CEST 2008 - werner@suse.de - Small change to make the cflags work in ncurses{w,t,tw}-config +------------------------------------------------------------------- +Wed Apr 9 16:43:04 CEST 2008 - werner@suse.de + +- Update to test version 5.6.20080405 with the ABI of the upcoming + verion 6.0. This includes already the patch for coverity report. + ------------------------------------------------------------------- Wed Apr 8 19:20:00 CEST 2008 - werner@suse.de - New sub package libncurses5 including the shared libraries and the required terminfo and termset data files. -- Include the patch for coverity report ------------------------------------------------------------------- Mon Dec 10 15:11:36 CET 2007 - werner@suse.de diff --git a/ncurses.spec b/ncurses.spec index 67a4787..4b3f0b5 100644 --- a/ncurses.spec +++ b/ncurses.spec @@ -2,9 +2,16 @@ # spec file for package ncurses (Version 5.6) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. -# This file and all modifications and additions to the pristine -# package are under the same license as the package itself. # +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + # Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -20,19 +27,20 @@ License: X11/MIT Group: System/Base AutoReqProv: on Version: 5.6 -Release: 83 +Release: 85 Summary: New curses Libraries -Source0: ncurses-5.6.tar.bz2 Url: http://invisible-island.net/ncurses/ncurses.html -Source1: ncurses-%{version}-20070128-patch.tar.bz2 +Source0: ncurses-5.6.tar.bz2 +Source1: ncurses-%{version}-20080804-patch.tar.bz2 Source2: handle.linux Source3: README.devel Source4: ncurses-rpmlintrc +Source5: tack-1.06.tar.bz2 Patch0: ncurses-%{version}.dif Patch1: ncurses-5.3-printw.dif Patch2: ncurses-5.6-pthread.dif Patch3: ncurses-5.6-overwrite.dif -Patch4: ncurses-5.6-coverity.patch +Patch4: ncurses-5.6-tack.dif Patch5: ncurses-5.6-gpm.dif BuildRoot: %{_tmppath}/%{name}-%{version}-build %global _sysconfdir /etc @@ -108,6 +116,8 @@ Authors: Eric S. Raymond Thomas E. Dickey +%if %abi == 5 + %package -n libncurses5 License: X11/MIT Summary: The New curses Libraries @@ -124,6 +134,34 @@ applications for controling its output and input to the screen. +Authors: +-------- + Zeyd M. Ben-Halim + Eric S. Raymond + Thomas E. Dickey + Juergen Pfeifer + Pavel Curtis + +%endif + +%package -n libncurses6 +License: X11/MIT +Summary: The New curses Libraries +Group: System/Libraries +Requires: terminfo-base +%if %abi == 5 +Provides: ncurses = 6.0 +%else +Provides: ncurses = %{version} +%endif +AutoReqProv: on + +%description -n libncurses6 +The ncurses library is used by the most curses based terminal +applications for controling its output and input to the screen. + + + Authors: -------- Zeyd M. Ben-Halim @@ -145,7 +183,7 @@ file and contains information about any known terminal. The ncurses library makes use of this database to use terminals correctly. If you just use the Linux console, xterm, and VT100, you probably will not need this database -- a minimal /usr/share/terminfo tree for these -terminals is already included in the ncurses package. +terminals is already included in the terminfo-base package. @@ -200,11 +238,16 @@ Authors: %prep %setup -q -n ncurses-%{version} -b0 -tar Oxfj %{SOURCE1} | patch -p1 -s +rm -fr tack +rm -f Ada95/src/terminal_interface-curses.adb +rm -f mkinstalldirs +tar Oxfj %{S:1} | patch -p1 -s +tar xfj %{S:5} +ln -sf tack-* tack %patch -P 1 -p0 -b .va %patch -P 2 -p0 -b .pt %patch -P 3 -p0 -b .ow -%patch -P 4 -p0 -b .cv +%patch -P 4 -p0 -b .hs %patch -P 5 -p0 -b .gpm %patch -P 0 -p0 @@ -278,7 +321,15 @@ tar Oxfj %{SOURCE1} | patch -p1 -s --enable-sigwinch \ --enable-colorfgbg \ %if %abi >= 6 + --with-pthread \ --enable-ext-mouse \ + --disable-widec \ + --enable-ext-colors \ +%else + --without-pthread \ + --disable-ext-mouse \ + --disable-widec \ + --disable-ext-colors \ %endif --enable-wgetch-events \ --prefix=%{_prefix} \ @@ -288,6 +339,7 @@ tar Oxfj %{SOURCE1} | patch -p1 -s --mandir=%{_mandir} \ --includedir=%{_incdir} \ "${WITHCHTYPE}" \ + --disable-widec \ --with-ticlib=tic # # This is a hack to be able to boot strap @@ -298,7 +350,7 @@ tar Oxfj %{SOURCE1} | patch -p1 -s make -C progs termsort.c transform.h infocmp tic rm -f ncurses/fallback.c PATH=$PWD/progs:$OPATH - cd ncurses/ + pushd ncurses/ TERMINFO=$PWD/tmp export TERMINFO mkdir -p $TERMINFO @@ -307,7 +359,7 @@ tar Oxfj %{SOURCE1} | patch -p1 -s make fallback.c rm -rf $TERMINFO unset TERMINFO - cd ../ + popd PATH=$OPATH # # Refresh second install path @@ -317,20 +369,46 @@ tar Oxfj %{SOURCE1} | patch -p1 -s # # Now rebuild libncurses and do the rest of this job # - make && make install DESTDIR=%{root} includedir=%{_incdir} + make + make install DESTDIR=%{root} includedir=%{_incdir} + # + # Check for tack program on base of above ncurses + # + pushd tack-*/ + ldd ./tack + popd + test ! -L tack || rm -f tack # # The configure line # - c=`grep '^ *$ *\./configure' config.log` + c=$(grep '^ *$ *\./configure' config.log) +%if %abi < 6 + # + # Now use --with-pthread for reentrant pthread support (abi > 5). + # + eval ./${c#*./} --with-pthread --enable-ext-mouse --disable-widec --disable-ext-colors --without-progs + inc=%{_incdir}/ncurses6 + lib=%{_libdir}/ncurses6 + make && make install.libs install.includes DESTDIR=%{root} includedir=${inc} libdir=${lib} + for h in %{root}${inc}/*.h ; do + test -e "$h" || continue + h=${h##*/} + for t in %{root}${inc}/*.h ; do + test -e "$t" || continue + test ! -L $t || continue + sed -ri "s;(#include[[:blank:]]+<)(${h}>);\1${inc##*/}/\2;" $t + done + done +%endif # # Now use --enable-widec for UTF8/wide character support. # The libs with 16 bit wide characters are binary incompatible # to the normal 8bit wide character libs. # %if %abi >= 6 - eval ./${c#*./} --enable-widec --enable-ext-colors --without-progs + eval ./${c#*./} --with-pthread --enable-ext-mouse --enable-widec --enable-ext-colors --without-progs %else - eval ./${c#*./} --enable-widec --without-progs + eval ./${c#*./} --disable-ext-mouse --enable-widec --disable-ext-colors --without-progs %endif make && make install.libs install.includes DESTDIR=%{root} includedir=%{_incdir}/ncursesw for h in %{root}%{_incdir}/ncursesw/*.h ; do @@ -342,6 +420,24 @@ tar Oxfj %{SOURCE1} | patch -p1 -s sed -ri "s;(#include[[:blank:]]+<)(${h}>);\1ncursesw/\2;" $t done done +%if %abi < 6 + # + # Do both --enable-widec and --with-pthread (abi > 5). + # + eval ./${c#*./} --with-pthread --enable-ext-mouse --enable-widec --enable-ext-colors --without-progs + inc=%{_incdir}/ncursesw6 + lib=%{_libdir}/ncurses6 + make && make install.libs install.includes DESTDIR=%{root} includedir=${inc} libdir=${lib} + for h in %{root}${inc}/*.h ; do + test -e "$h" || continue + h=${h##*/} + for t in %{root}${inc}/*.h ; do + test -e "$t" || continue + test ! -L $t || continue + sed -ri "s;(#include[[:blank:]]+<)(${h}>);\1${inc##*/}/\2;" $t + done + done +%endif %install GZIP="-9" @@ -349,14 +445,49 @@ tar Oxfj %{SOURCE1} | patch -p1 -s (cd %{root}/; tar -cpsSf - *)|tar -xpsSf - -C %{buildroot}/ rm -rf %{root} mkdir %{buildroot}/%{_lib} - for lib in libncurses libncursesw + for model in libncurses libncursest libncursesw libncursestw do - mv %{buildroot}%{_libdir}/${lib}.so.* %{buildroot}/%{_lib}/ - ln -sf /%{_lib}/${lib}.so.%{version} %{buildroot}%{_libdir}/${lib}.so + mv %{buildroot}%{_libdir}/${model}.so.* %{buildroot}/%{_lib}/ || continue + for lib in %{buildroot}/%{_lib}/${model}.so.* ; do + test -e "${lib}" || continue + test ! -L "${lib}" || continue + lib=${lib#%{buildroot}} + ln -sf ${lib} %{buildroot}%{_libdir}/${model}.so + done done chmod 0755 %{buildroot}/%{_lib}/lib*.so.* chmod 0755 %{buildroot}/%{_libdir}/lib*.so.* chmod a-x %{buildroot}/%{_libdir}/lib*.a + if test -d %{buildroot}%{_libdir}/ncurses6 ; then + mv %{buildroot}%{_libdir}/ncurses6/*.so.6* %{buildroot}/%{_libdir}/ + for lib in %{buildroot}%{_libdir}/ncurses6/*.so + do + test -L "${lib}" || continue + case "${lib##*/}" in + libncurses*) ln -sf /%{_lib}/${lib##*/}.6 ${lib} ;; + *) ln -sf ../${lib##*/}.6 ${lib} ;; + esac + done + for model in libncurses libncursest libncursesw libncursestw + do + mv %{buildroot}%{_libdir}/${model}.so.6* %{buildroot}/%{_lib}/ || continue + done + for lib in %{buildroot}/%{_lib}/${model}.so.6* ; do + test -e "${lib}" || continue + test ! -L "${lib}" || continue + lib=${lib#%{buildroot}} + ln -sf ${lib} %{buildroot}%{_libdir}/${model}.so + done + chmod 0755 %{buildroot}/%{_lib}/lib*.so.6* + chmod 0755 %{buildroot}/%{_libdir}/lib*.so.6* + chmod a-x %{buildroot}/%{_libdir}/ncurses6/lib*.a + sed -ri -e 's|(THIS=).*|\1"ncurses6"|' \ + -e 's|(-L.*/lib)|\1/ncurses6|' \ + -e 's|-l\$\{THIS\}|-l\$\{THIS%%6\}|' %{buildroot}%{_bindir}/ncurses6-config + sed -ri -e 's|(THIS=).*|\1"ncursesw6"|' \ + -e 's|(-L.*/lib)|\1/ncurses6|' \ + -e 's|-l\$\{THIS\}|-l\$\{THIS%%6\}|' %{buildroot}%{_bindir}/ncursesw6-config + fi test -n "%{buildroot}" || ldconfig -N mkdir -p %{buildroot}%{_defaultdocdir}/ncurses bzip2 -c misc/terminfo.src > misc/terminfo.src.bz2 @@ -433,10 +564,16 @@ tar Oxfj %{SOURCE1} | patch -p1 -s rm -f %{buildroot}%{_prefix}/lib/terminfo mkdir -p %{buildroot}%{_incdir}/ncurses ln -sf ../ncurses.h %{buildroot}%{_incdir}/ncurses/ +%if %abi == 5 %post -n libncurses5 -p /sbin/ldconfig %postun -n libncurses5 -p /sbin/ldconfig +%endif + +%post -n libncurses6 -p /sbin/ldconfig + +%postun -n libncurses6 -p /sbin/ldconfig %files -n terminfo-base -f default.list %defattr(-,root,root) @@ -459,11 +596,18 @@ tar Oxfj %{SOURCE1} | patch -p1 -s %doc %{_mandir}/man1/tput.1.gz %doc %{_mandir}/man1/tset.1.gz %doc %{_mandir}/man5/*.gz +%if %abi == 5 %files -n libncurses5 %defattr(-,root,root) -/%{_lib}/lib*.so.* -%{_libdir}/lib*.so.* +/%{_lib}/lib*.so.5* +%{_libdir}/lib*.so.5* +%endif + +%files -n libncurses6 +%defattr(-,root,root) +/%{_lib}/lib*.so.6* +%{_libdir}/lib*.so.6* %files -n ncurses-devel %defattr(-,root,root) @@ -476,10 +620,15 @@ tar Oxfj %{SOURCE1} | patch -p1 -s %{_bindir}/tic %dir %{_incdir}/ncurses/ %dir %{_incdir}/ncursesw/ +%dir %{_incdir}/ncurses6/ +%dir %{_incdir}/ncursesw6/ +%dir %{_libdir}/ncurses6/ %{_incdir}/*.h %{_incdir}/ncurses*/*.h %{_libdir}/lib*.a %{_libdir}/lib*.so +%{_libdir}/ncurses6/lib*.a +%{_libdir}/ncurses6/lib*.so %doc %{_mandir}/man1/captoinfo.1.gz %doc %{_mandir}/man1/infocmp.1.gz %doc %{_mandir}/man1/infotocap.1.gz @@ -496,13 +645,56 @@ tar Oxfj %{SOURCE1} | patch -p1 -s %defattr(-,root,root) %changelog +* Thu Aug 14 2008 werner@suse.de +- Update to test version 5.6.20080804 + * fix memory leaks in test/demo_menus + * build-fixes for gcc 4.3.1 + * use NCURSES_MOUSE_MASK() in definition of BUTTON_RELEASE(), etc., to + make those work properly with the "--enable-ext-mouse" configuration + (cf: 20050205). + * improve mlterm and mlterm+pcfkeys terminfo entries -TD + * add null-pointer checks for cur_term in baudrate() and + def_shell_mode(), def_prog_mode() + * fix some memory leaks in delscreen() and wide acs. + * modify test/ditto.c to illustrate multi-threaded use_screen(). + * finish changes to wgetch(), making it switch as needed to the + window's actual screen when calling wrefresh() and wgetnstr(). That + allows wgetch() to get used concurrently in different threads with + some minor restrictions, e.g., the application should not delete a + window which is being used in a wgetch(). + * simplify mutex's, combining the window- and screen-mutex's. + * modify wgetch() to use the screen which corresponds to its window + parameter rather than relying on SP; some dependent functions still + use SP internally. + * factor out most use of SP in lib_mouse.c, using parameter. + * modify _nc_keypad() to make it switch temporarily as needed to the + screen which must be updated. + * wrap cur_term variable to help make _nc_keymap() thread-safe, and + always set the screen's copy of this variable in set_curterm(). + * restore curs_set() state after endwin()/refresh() (report/patch + Miroslav Lichvar) + * corrected manpage description of setcchar() + * fix for adding a non-spacing character at the beginning of a line + * modify screen.* terminfo entries using new screen+fkeys to fix + overridden keys in screen.rxvt (Debian #478094) -TD + * simplify some loops with macros each_screen(), each_window() and + each_ripoff(). + * fix typo in form.3x + * add screen.rxvt terminfo entry -TD + * modify tic -f option to format spaces as \s to prevent them from + being lost when that is read back in unformatted strings. + * add locks for copywin(), dupwin(), overlap(), overlay() on their + window parameters. + * add locks for initscr() and newterm() on updates to the SCREEN + pointer. + * finish table in curs_thread.3x manpage. * Wed May 07 2008 coolo@suse.de - we need to obsolete ncurses 5.6 too, it's 10.3's version * Tue Apr 22 2008 werner@suse.de - Split ncurses into two separate packages ncurses-utils and terminfo-base to get the resolvers happy (bnc#381293) -* Wed Apr 16 2008 ro@suse.de -- update baselibs.conf (for package rename) +* Sun Apr 20 2008 ro@suse.de +- update baselibs.conf * Fri Apr 11 2008 werner@suse.de - Do not dlopen libgpm if already loaded by runtime linker * Thu Apr 10 2008 lrupp@suse.de @@ -512,10 +704,12 @@ tar Oxfj %{SOURCE1} | patch -p1 -s for multilib support * Thu Apr 10 2008 werner@suse.de - Small change to make the cflags work in ncurses{w,t,tw}-config +* Wed Apr 09 2008 werner@suse.de +- Update to test version 5.6.20080405 with the ABI of the upcoming + verion 6.0. This includes already the patch for coverity report. * Tue Apr 08 2008 werner@suse.de - New sub package libncurses5 including the shared libraries and the required terminfo and termset data files. -- Include the patch for coverity report * Mon Dec 10 2007 werner@suse.de - Avoid endless loop in case of including the wrapper header * Wed Dec 05 2007 werner@suse.de diff --git a/tack-1.06.tar.bz2 b/tack-1.06.tar.bz2 new file mode 100644 index 0000000..c388612 --- /dev/null +++ b/tack-1.06.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c16b0244f1808d1edf32ecbeb4be6ad2b8d5b7aca6a5386af3b7eaae796fd27 +size 129237