* termcap moodule problem on Cygwin @ 2001-01-29 14:55 Andrej Borsenkow 2001-01-29 15:10 ` Peter Stephenson 2001-01-29 16:48 ` Zefram 0 siblings, 2 replies; 21+ messages in thread From: Andrej Borsenkow @ 2001-01-29 14:55 UTC (permalink / raw) To: ZSH workers mailing list Cygwin has only static libtermcap. It gets linked twice - into main zsh (libzsh to be sure) where term is (re-)initalized and into termcap.dll where bin_echotc is defined. Only first one calls tgetent() so every call to `echotc cap' crashes somewhere in termcap. Calling tgetent in bin_echotc is not an option because it won't catch changed TERM. It means that code to deal with terminal should exist exactly once - in main zsh or in module. I vote for moving it into zle (after all, it is the only module that should care for TERM) together with bin_echotc. In any case, it makes idea of echotc in seperate module very questionable. Note, that Cygwin is not the only system with static termcap/terminfo. -andrej Have a nice DOS! B >> ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: termcap moodule problem on Cygwin 2001-01-29 14:55 termcap moodule problem on Cygwin Andrej Borsenkow @ 2001-01-29 15:10 ` Peter Stephenson 2001-01-30 8:25 ` Andrej Borsenkow 2001-01-29 16:48 ` Zefram 1 sibling, 1 reply; 21+ messages in thread From: Peter Stephenson @ 2001-01-29 15:10 UTC (permalink / raw) To: Zsh hackers list > Cygwin has only static libtermcap. It gets linked twice - into main zsh > (libzsh to be sure) where term is (re-)initalized and into termcap.dll where > bin_echotc is defined. Only first one calls tgetent() so every call to `echot > c > cap' crashes somewhere in termcap. It must surely be possible to make sure it is linked in once only, which would be the right thing to do. If the worst comes to the worst, get configure to detect a static termcap and only link it into the main module. -- Peter Stephenson <pws@csr.com> Software Engineer Cambridge Silicon Radio, Unit 300, Science Park, Milton Road, Cambridge, CB4 0XL, UK Tel: +44 (0)1223 392070 ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: termcap moodule problem on Cygwin 2001-01-29 15:10 ` Peter Stephenson @ 2001-01-30 8:25 ` Andrej Borsenkow 2001-01-30 10:34 ` Peter Stephenson 0 siblings, 1 reply; 21+ messages in thread From: Andrej Borsenkow @ 2001-01-30 8:25 UTC (permalink / raw) To: Zsh hackers list Answering both Peter and Zefram: - it is not possible to simply link termcap into libzsh and then link termcap module against libzsh (if that is what Peter means). AFAIK it may be impossible on Win32 (it is not Cygwin limitation) - in any case, it needs completely different configuration system to find out exact set of libraries for every module. I am not even sure if any general solution is possible. I have to look what libtool can do. - even if it is possible to check for static vs. shared libtermcap (like currently with environ) it will disable modules (note, that on Cygwin environ check is explicitly disabled as it is misleading there). What is worse modules will be disabled on all systems that have static termcap/curses, and that are possibly many SVR4-derivates, mine including :-) Having termcap/terminfo as separate modules hardly justifies this. - the problem is not limited to Cygwin (obviously). Depending of used terminal library program may crash, echotc may not track terminal changes or everything may be O.K. You cannot tell in advance, sigh. - finally, having the whole terminal related code in main zsh and moving just a single builtin in seperate module looks funny. what we can do know is - add wrappers for tgetent & Co. and add note to zsh-development-guide that people should not use original functions. - move termcap (and terminfo) back into main zsh. Somehow I'm inclined to the latter. cheers -andrej ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: termcap moodule problem on Cygwin 2001-01-30 8:25 ` Andrej Borsenkow @ 2001-01-30 10:34 ` Peter Stephenson 2001-01-31 8:50 ` Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) Andrej Borsenkow 2001-01-31 10:37 ` PATCH: RE: termcap moodule problem on Cygwin Andrej Borsenkow 0 siblings, 2 replies; 21+ messages in thread From: Peter Stephenson @ 2001-01-30 10:34 UTC (permalink / raw) To: Zsh hackers list > - move termcap (and terminfo) back into main zsh. You could force it to be statically linked by changing the `link' line to test for cygwin in termcap.mdd. See existing `link=' in terminfo.mdd for how this works. You can make this depend on a configure test for whether termcap is static. -- Peter Stephenson <pws@csr.com> Software Engineer Cambridge Silicon Radio, Unit 300, Science Park, Milton Road, Cambridge, CB4 0XL, UK Tel: +44 (0)1223 392070 ^ permalink raw reply [flat|nested] 21+ messages in thread
* Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-01-30 10:34 ` Peter Stephenson @ 2001-01-31 8:50 ` Andrej Borsenkow 2001-01-31 10:37 ` PATCH: RE: termcap moodule problem on Cygwin Andrej Borsenkow 1 sibling, 0 replies; 21+ messages in thread From: Andrej Borsenkow @ 2001-01-31 8:50 UTC (permalink / raw) To: Zsh hackers list > > - move termcap (and terminfo) back into main zsh. > > You could force it to be statically linked by changing the `link' line to > test for cygwin in termcap.mdd. See existing `link=' in terminfo.mdd for > how this works. You can make this depend on a configure test for whether > termcap is static. > Of course, I am idiot. Even more so as I cannot build zsh with static termcap: dllwrap -g --export-all-symbols -o libzsh-3.1.9-dev-8.dll `cat stamp-modobjs` -ltermcap -lm -lc dllwrap: no export definition file provided dllwrap: creating one, but that may not be what you want Modules/termcap.o(.text+0x318): multiple definition of `setup_zshQstermcap' Modules/termcap.o(.text+0x318): first defined here Modules/termcap.o(.text+0x324): multiple definition of `boot_zshQstermcap' Modules/termcap.o(.text+0x324): first defined here Modules/termcap.o(.text+0x354): multiple definition of `cleanup_zshQstermcap' Modules/termcap.o(.text+0x354): first defined here Modules/termcap.o(.text+0x37c): multiple definition of `finish_zshQstermcap' Modules/termcap.o(.text+0x37c): first defined here collect2: ld returned 1 exit status This happens with both dllwrap and gcc; I do not understand the error message at all. It does not happen when building static zsh. Anybody have some insight on what these errors mean? -andrej ^ permalink raw reply [flat|nested] 21+ messages in thread
* PATCH: RE: termcap moodule problem on Cygwin 2001-01-30 10:34 ` Peter Stephenson 2001-01-31 8:50 ` Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) Andrej Borsenkow @ 2001-01-31 10:37 ` Andrej Borsenkow 2001-01-31 11:30 ` Peter Stephenson 1 sibling, 1 reply; 21+ messages in thread From: Andrej Borsenkow @ 2001-01-31 10:37 UTC (permalink / raw) To: Zsh hackers list [-- Attachment #1: Type: text/plain, Size: 731 bytes --] > > You could force it to be statically linked by changing the `link' line to > test for cygwin in termcap.mdd. See existing `link=' in terminfo.mdd for > how this works. You can make this depend on a configure test for whether > termcap is static. > This implements the latter. On two systems with static termcap/terminfo both are now compiled into main executable. I do not have any system with shared term library. I could try using ncurses on Cygwin, but zsh unconditionally includes termcap.h and it is incompatible with ncurses. Please, check with shared termcap if both modules are still built as shared :) I am fairly sure that check in current form does not work correctly on Cygwin (due to stab libraries). -andrej [-- Attachment #2: zsh.termcap.diff --] [-- Type: application/octet-stream, Size: 7711 bytes --] Index: aczsh.m4 =================================================================== RCS file: /cvsroot/zsh/zsh/aczsh.m4,v retrieving revision 1.6 diff -u -r1.6 aczsh.m4 --- aczsh.m4 2000/10/11 12:26:13 1.6 +++ aczsh.m4 2001/01/31 10:32:38 @@ -111,28 +111,30 @@ dnl -dnl zsh_SYS_DYNAMIC_BROKEN -dnl Check whether static/shared library linking is broken. +dnl zsh_SHARED_SYMBOL +dnl Check whether symbol is available in static or shared library dnl dnl On some systems, static modifiable library symbols (such as environ) dnl may appear only in statically linked libraries. If this is the case, dnl then two shared libraries that reference the same symbol, each linked dnl with the static library, could be given distinct copies of the symbol. -dnl If this is the case then dynamic linking is FUBAR. dnl +dnl Usage: zsh_SHARED_SYMBOL(ident,type) +dnl Sets zsh_cv_shared_$1 cache variable to yes/no +dnl -AC_DEFUN(zsh_SYS_DYNAMIC_BROKEN, -[AC_CACHE_CHECK([if static/shared library linking is broken], -zsh_cv_sys_dynamic_broken, +AC_DEFUN(zsh_SHARED_SYMBOL, +[AC_CACHE_CHECK([if $1 is available in shared libraries], +zsh_cv_shared_$1, [if test "$zsh_cv_func_dlsym_needs_underscore" = yes; then us=_ else us= fi echo ' - extern char **environ; + extern $2 **$1; void *symlist1[[]] = { - (void *)&environ, + (void *)&$1, (void *)0 }; ' > conftest1.c @@ -185,12 +187,12 @@ exit(1); exit(0); } -], [zsh_cv_sys_dynamic_broken=no], -[zsh_cv_sys_dynamic_broken=yes], -[zsh_cv_sys_dynamic_broken=yes] +], [zsh_cv_shared_$1=yes], +[zsh_cv_shared_$1=no], +[zsh_cv_shared_$1=no] ) else - zsh_cv_sys_dynamic_broken=yes + zsh_cv_shared_$1=no fi ]) ]) Index: configure.in =================================================================== RCS file: /cvsroot/zsh/zsh/configure.in,v retrieving revision 1.39 diff -u -r1.39 configure.in --- configure.in 2001/01/19 14:47:44 1.39 +++ configure.in 2001/01/31 10:32:39 @@ -557,37 +557,6 @@ AC_DEFINE(MUST_DEFINE_OSPEED) fi -dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer) -dnl Some termcaps reportedly accept a zero buffer, but then dump core -dnl in tgetstr(). -dnl Under Cygwin test program crashes but exit code is still 0. So, -dnl we test for a file that porgram should create -AC_CACHE_CHECK(if tgetent accepts NULL, -zsh_cv_func_tgetent_accepts_null, -[AC_TRY_RUN([ -main() -{ - int i = tgetent((char*)0,"vt100"); - if (i > 0) { - char tbuf[1024], *u; - u = tbuf; - tgetstr("cl", &u); - creat("conftest.tgetent", 0640); - } - exit(!i || i == -1); -} -], - if test -f conftest.tgetent; then - zsh_cv_func_tgetent_accepts_null=yes - else - zsh_cv_func_tgetent_accepts_null=no - fi, - zsh_cv_func_tgetent_accepts_null=no, - zsh_cv_func_tgetent_accepts_null=no)]) -if test $zsh_cv_func_tgetent_accepts_null = yes; then - AC_DEFINE(TGETENT_ACCEPTS_NULL) -fi - dnl -------------- dnl CHECK TYPEDEFS dnl -------------- @@ -845,9 +814,40 @@ putenv getenv \ brk sbrk \ pathconf sysconf \ - tigetflag tigetnum tigetstr) + tgetent tigetflag tigetnum tigetstr) AC_FUNC_STRCOLL +dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer) +dnl Some termcaps reportedly accept a zero buffer, but then dump core +dnl in tgetstr(). +dnl Under Cygwin test program crashes but exit code is still 0. So, +dnl we test for a file that porgram should create +AC_CACHE_CHECK(if tgetent accepts NULL, +zsh_cv_func_tgetent_accepts_null, +[AC_TRY_RUN([ +main() +{ + int i = tgetent((char*)0,"vt100"); + if (i > 0) { + char tbuf[1024], *u; + u = tbuf; + tgetstr("cl", &u); + creat("conftest.tgetent", 0640); + } + exit(!i || i == -1); +} +], + if test -f conftest.tgetent; then + zsh_cv_func_tgetent_accepts_null=yes + else + zsh_cv_func_tgetent_accepts_null=no + fi, + zsh_cv_func_tgetent_accepts_null=no, + zsh_cv_func_tgetent_accepts_null=no)]) +if test $zsh_cv_func_tgetent_accepts_null = yes; then + AC_DEFINE(TGETENT_ACCEPTS_NULL) +fi + AC_FUNC_MMAP if test x$ac_cv_func_mmap_fixed_mapped = xyes; then AC_CHECK_FUNCS(munmap msync) @@ -1471,7 +1471,10 @@ zsh_cv_sys_dynamic_execsyms="${zsh_cv_sys_dynamic_execsyms=no}" zsh_cv_sys_dynamic_strip_exe="${zsh_cv_sys_dynamic_strip_exe=yes}" zsh_cv_sys_dynamic_strip_lib="${zsh_cv_sys_dynamic_strip_lib=yes}" - zsh_cv_sys_dynamic_broken="${zsh_cv_sys_dynamic_broken=no}" + # + # THAT SUCKS! and must be changed + # + zsh_cv_shared_environ="${zsh_cv_shared_environ=yes}" LINKMODS=LINKMODS MOD_EXPORT="__attribute__((__dllexport__))" MOD_IMPORT_VARIABLE="__attribute__((__dllimport__))" @@ -1616,8 +1619,15 @@ fi if test "x$dynamic" = xyes; then - zsh_SYS_DYNAMIC_BROKEN - test "$zsh_cv_sys_dynamic_broken" = no || dynamic=no + zsh_SHARED_SYMBOL([environ], [char **]) + test "$zsh_cv_shared_environ" = yes || dynamic=no +dnl test "$zsh_cv_sys_dynamic_broken" = no || dynamic=no + if test "$ac_cv_func_tgetent" = yes; then + zsh_SHARED_SYMBOL([tgetent], [(void (*)())]) + fi + if test "$ac_cv_func_tigetstr" = yes; then + zsh_SHARED_SYMBOL([tigetstr], [(void (*)())]) + fi fi if test "x$dynamic" = xyes; then Index: Src/Modules/termcap.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/termcap.c,v retrieving revision 1.1 diff -u -r1.1 termcap.c --- Src/Modules/termcap.c 2000/12/03 20:53:25 1.1 +++ Src/Modules/termcap.c 2001/01/31 10:32:40 @@ -33,7 +33,7 @@ /* echotc: output a termcap */ /**/ -int +static int bin_echotc(char *name, char **argv, char *ops, int func) { char *s, buf[2048], *t, *u; Index: Src/Modules/termcap.mdd =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/termcap.mdd,v retrieving revision 1.1 diff -u -r1.1 termcap.mdd --- Src/Modules/termcap.mdd 2000/12/03 20:53:25 1.1 +++ Src/Modules/termcap.mdd 2001/01/31 10:32:40 @@ -1,5 +1,15 @@ name=zsh/termcap -link=either + +link='if test "x$ac_cv_func_tgetent" = xyes; then + if test "x$zsh_cv_shared_tgetent" = xyes; then + echo either + else + echo static + fi + else + echo no; + fi +' load=yes autobins="echotc" Index: Src/Modules/terminfo.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/terminfo.c,v retrieving revision 1.4 diff -u -r1.4 terminfo.c --- Src/Modules/terminfo.c 2000/12/06 01:16:15 1.4 +++ Src/Modules/terminfo.c 2001/01/31 10:32:40 @@ -36,7 +36,7 @@ /* echoti: output a terminfo capability */ /**/ -int +static int bin_echoti(char *name, char **argv, char *ops, int func) { char *s, *t; Index: Src/Modules/terminfo.mdd =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/terminfo.mdd,v retrieving revision 1.3 diff -u -r1.3 terminfo.mdd --- Src/Modules/terminfo.mdd 2000/12/05 11:00:09 1.3 +++ Src/Modules/terminfo.mdd 2001/01/31 10:32:40 @@ -1,5 +1,15 @@ name=zsh/terminfo -link='if test "x$ac_cv_func_tigetstr" = xyes; then echo either; else echo no; fi' + +link='if test "x$ac_cv_func_tigetstr" = xyes; then + if test "x$zsh_cv_shared_tigetstr" = xyes; then + echo either + else + echo static + fi + else + echo no; + fi +' load=yes autobins="echoti" ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: PATCH: RE: termcap moodule problem on Cygwin 2001-01-31 10:37 ` PATCH: RE: termcap moodule problem on Cygwin Andrej Borsenkow @ 2001-01-31 11:30 ` Peter Stephenson 2001-01-31 12:42 ` Andrej Borsenkow 0 siblings, 1 reply; 21+ messages in thread From: Peter Stephenson @ 2001-01-31 11:30 UTC (permalink / raw) To: Zsh hackers list > This implements the latter. On two systems with static termcap/terminfo both > are now compiled into main executable. This turns the linking on SunOS 5.6 from dynamic to static for the two modules. It was working OK before with dynamic. However, the curses library which is linked in does appear to be static. On the other hand, our new server with SunOS 5.8 appears to have a dynamic curses library, but the test still fails, although: % nm /lib/libcurses.so | grep tgetent [1176] | 95876| 52|FUNC |GLOB |0 |9 |tgetent The libraries used are `-lsocket -ldl -lnsl -lcurses -lm -lc'. Does anyone have any evidence of termcap still being linked in dynamically with the patch in place? I can't promise I'll get a chance to look at what's happening immediately. -- Peter Stephenson <pws@csr.com> Software Engineer Cambridge Silicon Radio, Unit 300, Science Park, Milton Road, Cambridge, CB4 0XL, UK Tel: +44 (0)1223 392070 ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: PATCH: RE: termcap moodule problem on Cygwin 2001-01-31 11:30 ` Peter Stephenson @ 2001-01-31 12:42 ` Andrej Borsenkow 2001-01-31 13:49 ` Peter Stephenson 0 siblings, 1 reply; 21+ messages in thread From: Andrej Borsenkow @ 2001-01-31 12:42 UTC (permalink / raw) To: Zsh hackers list > > This turns the linking on SunOS 5.6 from dynamic to static for the two > modules. It was working OK before with dynamic. However, the curses > library which is linked in does appear to be static. On the other hand, > our new server with SunOS 5.8 appears to have a dynamic curses library, but > the test still fails, although: > % nm /lib/libcurses.so | grep tgetent > [1176] | 95876| 52|FUNC |GLOB |0 |9 |tgetent > The libraries used are `-lsocket -ldl -lnsl -lcurses -lm -lc'. > Yes, test was broken, sorry. Try this patch (on top of previous). The situation looks a bit more complicated. On my system name resolution in shared modules happens at runtime (unless you override it) so all modules pick up just one copy of curses library linked into main executable. Cool. -andrej --- aczsh.m4.old Wed Jan 31 13:31:38 2001 +++ aczsh.m4 Wed Jan 31 15:31:46 2001 @@ -111,6 +111,38 @@ dnl +dnl zsh_SHARED_FUNCTION +dnl Check whether symbol is available in static or shared library +dnl +dnl On some systems, static modifiable library symbols (such as environ) +dnl may appear only in statically linked libraries. If this is the case, +dnl then two shared libraries that reference the same symbol, each linked +dnl with the static library, could be given distinct copies of the symbol. +dnl +dnl Usage: zsh_SHARED_FUNCTION(name) +dnl Sets zsh_cv_shared_$1 cache variable to yes/no +dnl + +AC_DEFUN(zsh_SHARED_FUNCTION, +[zsh_SHARED_SYMBOL($1, [char *$1()], [$1])]) + +dnl +dnl zsh_SHARED_VARIABLE +dnl Check whether symbol is available in static or shared library +dnl +dnl On some systems, static modifiable library symbols (such as environ) +dnl may appear only in statically linked libraries. If this is the case, +dnl then two shared libraries that reference the same symbol, each linked +dnl with the static library, could be given distinct copies of the symbol. +dnl +dnl Usage: zsh_SHARED_VARIABLE(name,type) +dnl Sets zsh_cv_shared_$1 cache variable to yes/no +dnl + +AC_DEFUN(zsh_SHARED_VARIABLE, +[zsh_SHARED_SYMBOL($1, [ $2 $1], [&$1])]) + +dnl dnl zsh_SHARED_SYMBOL dnl Check whether symbol is available in static or shared library dnl @@ -119,7 +151,7 @@ dnl then two shared libraries that reference the same symbol, each linked dnl with the static library, could be given distinct copies of the symbol. dnl -dnl Usage: zsh_SHARED_SYMBOL(ident,type) +dnl Usage: zsh_SHARED_SYMBOL(name,declaration) dnl Sets zsh_cv_shared_$1 cache variable to yes/no dnl @@ -132,9 +164,12 @@ us= fi echo ' - extern $2 **$1; - void *symlist1[[]] = { - (void *)&$1, +#ifdef __CYGWIN__ + __attribute__((__dllimport__)) +#endif + extern $2; + void *symlist[[]] = { + (void *)$3, (void *)0 }; ' > conftest1.c @@ -179,8 +214,8 @@ if(!handle1) exit(1); handle2 = dlopen("./conftest2.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL); if(!handle2) exit(1); - symlist1 = (void **) dlsym(handle1, "${us}symlist1"); - symlist2 = (void **) dlsym(handle2, "${us}symlist2"); + symlist1 = (void **) dlsym(handle1, "${us}symlist"); + symlist2 = (void **) dlsym(handle2, "${us}symlist"); if(!symlist1 || !symlist2) exit(1); for(; *symlist1; symlist1++, symlist2++) if(*symlist1 != *symlist2) bor@itsrm2% gdiff -u configure.in.old configure.in --- configure.in.old Wed Jan 31 14:45:05 2001 +++ configure.in Wed Jan 31 15:32:05 2001 @@ -1619,17 +1619,16 @@ fi if test "x$dynamic" = xyes; then - zsh_SHARED_SYMBOL([environ], [char **]) + zsh_SHARED_VARIABLE([environ], [char **]) test "$zsh_cv_shared_environ" = yes || dynamic=no dnl test "$zsh_cv_sys_dynamic_broken" = no || dynamic=no if test "$ac_cv_func_tgetent" = yes; then - zsh_SHARED_SYMBOL([tgetent], [(void (*)())]) + zsh_SHARED_FUNCTION([tgetent]) fi if test "$ac_cv_func_tigetstr" = yes; then - zsh_SHARED_SYMBOL([tigetstr], [(void (*)())]) + zsh_SHARED_FUNCTION([tigetstr]) fi fi - zsh_SHARED_SYMBOL([socket], [(void (*)())]) if test "x$dynamic" = xyes; then zsh_SYS_DYNAMIC_CLASH ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: PATCH: RE: termcap moodule problem on Cygwin 2001-01-31 12:42 ` Andrej Borsenkow @ 2001-01-31 13:49 ` Peter Stephenson 2001-02-05 15:31 ` Andrej Borsenkow 0 siblings, 1 reply; 21+ messages in thread From: Peter Stephenson @ 2001-01-31 13:49 UTC (permalink / raw) To: Zsh hackers list > Yes, test was broken, sorry. Try this patch (on top of previous). That's fine, both libraries are now dynamically linked on both versions of Solaris, which is what was happening before the patch. -- Peter Stephenson <pws@csr.com> Software Engineer Cambridge Silicon Radio, Unit 300, Science Park, Milton Road, Cambridge, CB4 0XL, UK Tel: +44 (0)1223 392070 ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: PATCH: RE: termcap moodule problem on Cygwin 2001-01-31 13:49 ` Peter Stephenson @ 2001-02-05 15:31 ` Andrej Borsenkow 2001-02-13 14:36 ` Andrej Borsenkow 0 siblings, 1 reply; 21+ messages in thread From: Andrej Borsenkow @ 2001-02-05 15:31 UTC (permalink / raw) To: Peter Stephenson, Zsh hackers list [-- Attachment #1: Type: text/plain, Size: 1062 bytes --] > > > > Yes, test was broken, sorry. Try this patch (on top of previous). > > That's fine, both libraries are now dynamically linked on both versions of > Solaris, which is what was happening before the patch. > O.K., hopefully the last version. Now it really works for Cygwin, both shared and static libs. I tested it with: - Unix, pseudo-shared (see below) static curses - Cygwin, static termcap - Cygwin, shared ncurses So, remaining case is Unix with real shared library and possibly Unix with bad-behaving static library. Solaris 2.6 and my system both provide pseudo-shared implementation - static symbols are linked into every shared object, but references to them are resolved at runtime and point to the single copy of static symbol. It has one possible drawback - if shared object that owns this static symbol is unloaded, references are no more valid. So far, my system seems to correctly keep reference count. It depends on coimpiler options (I can force local binding). So I added test for this case as well - dunno if it really helps. -andrej [-- Attachment #2: zsh.termcap.diff --] [-- Type: application/octet-stream, Size: 10217 bytes --] Index: aczsh.m4 =================================================================== RCS file: /cvsroot/zsh/zsh/aczsh.m4,v retrieving revision 1.6 diff -u -r1.6 aczsh.m4 --- aczsh.m4 2000/10/11 12:26:13 1.6 +++ aczsh.m4 2001/02/05 15:24:13 @@ -111,32 +111,59 @@ dnl -dnl zsh_SYS_DYNAMIC_BROKEN -dnl Check whether static/shared library linking is broken. +dnl zsh_SHARED_FUNCTION dnl +dnl This is just a frontend to zsh_SHARED_SYMBOL +dnl +dnl Usage: zsh_SHARED_FUNCTION(name[,rettype[,paramtype]]) +dnl + +AC_DEFUN(zsh_SHARED_FUNCTION, +[zsh_SHARED_SYMBOL($1, ifelse([$2], ,[int ],[$2]) $1 [(]ifelse([$3], ,[ ],[$3])[)], $1)]) + +dnl +dnl zsh_SHARED_VARIABLE +dnl +dnl This is just a frontend to zsh_SHARED_SYMBOL +dnl +dnl Usage: zsh_SHARED_VARIABLE(name[,type]) +dnl + +AC_DEFUN(zsh_SHARED_VARIABLE, +[zsh_SHARED_SYMBOL($1, ifelse([$2], ,[int ],[$2]) $1, [&$1])]) + +dnl +dnl zsh_SHARED_SYMBOL +dnl Check whether symbol is available in static or shared library +dnl dnl On some systems, static modifiable library symbols (such as environ) dnl may appear only in statically linked libraries. If this is the case, dnl then two shared libraries that reference the same symbol, each linked dnl with the static library, could be given distinct copies of the symbol. -dnl If this is the case then dynamic linking is FUBAR. +dnl +dnl Usage: zsh_SHARED_SYMBOL(name,declaration,address) +dnl Sets zsh_cv_shared_$1 cache variable to yes/no dnl -AC_DEFUN(zsh_SYS_DYNAMIC_BROKEN, -[AC_CACHE_CHECK([if static/shared library linking is broken], -zsh_cv_sys_dynamic_broken, +AC_DEFUN(zsh_SHARED_SYMBOL, +[AC_CACHE_CHECK([if $1 is available in shared libraries], +zsh_cv_shared_$1, [if test "$zsh_cv_func_dlsym_needs_underscore" = yes; then us=_ else us= fi echo ' - extern char **environ; - void *symlist1[[]] = { - (void *)&environ, - (void *)0 - }; +void *zsh_getaddr1() +{ +#ifdef __CYGWIN__ + __attribute__((__dllimport__)) +#endif + extern $2; + return $3; +}; ' > conftest1.c -sed 's/symlist1/symlist2/' < conftest1.c > conftest2.c +sed 's/zsh_getaddr1/zsh_getaddr2/' < conftest1.c > conftest2.c if $CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest1.c 1>&5 2>&5 && $DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS 1>&5 2>&5 && $CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest2.c 1>&5 2>&5 && @@ -172,25 +199,33 @@ main() { void *handle1, *handle2; - void **symlist1, **symlist2; + void *(*zsh_getaddr1)(), *(*zsh_getaddr2)(); + void *sym1, *sym2; handle1 = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL); if(!handle1) exit(1); handle2 = dlopen("./conftest2.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL); if(!handle2) exit(1); - symlist1 = (void **) dlsym(handle1, "${us}symlist1"); - symlist2 = (void **) dlsym(handle2, "${us}symlist2"); - if(!symlist1 || !symlist2) exit(1); - for(; *symlist1; symlist1++, symlist2++) - if(*symlist1 != *symlist2) - exit(1); + zsh_getaddr1 = (void *(*)()) dlsym(handle1, "${us}zsh_getaddr1"); + zsh_getaddr2 = (void *(*)()) dlsym(handle2, "${us}zsh_getaddr2"); + sym1 = zsh_getaddr1(); + sym2 = zsh_getaddr2(); + if(!sym1 || !sym2) exit(1); + if(sym1 != sym2) exit(1); + dlclose(handle1); + handle1 = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL); + if(!handle1) exit(1); + zsh_getaddr1 = (void *(*)()) dlsym(handle1, "${us}zsh_getaddr1"); + sym1 = zsh_getaddr1(); + if(!sym1) exit(1); + if(sym1 != sym2) exit(1); exit(0); } -], [zsh_cv_sys_dynamic_broken=no], -[zsh_cv_sys_dynamic_broken=yes], -[zsh_cv_sys_dynamic_broken=yes] +], [zsh_cv_shared_$1=yes], +[zsh_cv_shared_$1=no], +[zsh_cv_shared_$1=no] ) else - zsh_cv_sys_dynamic_broken=yes + zsh_cv_shared_$1=no fi ]) ]) Index: configure.in =================================================================== RCS file: /cvsroot/zsh/zsh/configure.in,v retrieving revision 1.39 diff -u -r1.39 configure.in --- configure.in 2001/01/19 14:47:44 1.39 +++ configure.in 2001/02/05 15:24:14 @@ -493,7 +493,9 @@ dnl On some systems, modules need to be linked against libc explicitly, dnl in case they require objects that exist only in the static version dnl and might not be compiled into the zsh executable. -AC_CHECK_LIB(c, printf) +dnl On ReliantUNIX -lc better be the last library, else funny things +dnl may happen. +AC_CHECK_LIB(c, printf, [LIBS="$LIBS -lc"]) AC_CHECK_LIB(m, pow) @@ -557,37 +559,6 @@ AC_DEFINE(MUST_DEFINE_OSPEED) fi -dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer) -dnl Some termcaps reportedly accept a zero buffer, but then dump core -dnl in tgetstr(). -dnl Under Cygwin test program crashes but exit code is still 0. So, -dnl we test for a file that porgram should create -AC_CACHE_CHECK(if tgetent accepts NULL, -zsh_cv_func_tgetent_accepts_null, -[AC_TRY_RUN([ -main() -{ - int i = tgetent((char*)0,"vt100"); - if (i > 0) { - char tbuf[1024], *u; - u = tbuf; - tgetstr("cl", &u); - creat("conftest.tgetent", 0640); - } - exit(!i || i == -1); -} -], - if test -f conftest.tgetent; then - zsh_cv_func_tgetent_accepts_null=yes - else - zsh_cv_func_tgetent_accepts_null=no - fi, - zsh_cv_func_tgetent_accepts_null=no, - zsh_cv_func_tgetent_accepts_null=no)]) -if test $zsh_cv_func_tgetent_accepts_null = yes; then - AC_DEFINE(TGETENT_ACCEPTS_NULL) -fi - dnl -------------- dnl CHECK TYPEDEFS dnl -------------- @@ -845,9 +816,40 @@ putenv getenv \ brk sbrk \ pathconf sysconf \ - tigetflag tigetnum tigetstr) + tgetent tigetflag tigetnum tigetstr) AC_FUNC_STRCOLL +dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer) +dnl Some termcaps reportedly accept a zero buffer, but then dump core +dnl in tgetstr(). +dnl Under Cygwin test program crashes but exit code is still 0. So, +dnl we test for a file that porgram should create +AC_CACHE_CHECK(if tgetent accepts NULL, +zsh_cv_func_tgetent_accepts_null, +[AC_TRY_RUN([ +main() +{ + int i = tgetent((char*)0,"vt100"); + if (i > 0) { + char tbuf[1024], *u; + u = tbuf; + tgetstr("cl", &u); + creat("conftest.tgetent", 0640); + } + exit(!i || i == -1); +} +], + if test -f conftest.tgetent; then + zsh_cv_func_tgetent_accepts_null=yes + else + zsh_cv_func_tgetent_accepts_null=no + fi, + zsh_cv_func_tgetent_accepts_null=no, + zsh_cv_func_tgetent_accepts_null=no)]) +if test $zsh_cv_func_tgetent_accepts_null = yes; then + AC_DEFINE(TGETENT_ACCEPTS_NULL) +fi + AC_FUNC_MMAP if test x$ac_cv_func_mmap_fixed_mapped = xyes; then AC_CHECK_FUNCS(munmap msync) @@ -1471,7 +1473,10 @@ zsh_cv_sys_dynamic_execsyms="${zsh_cv_sys_dynamic_execsyms=no}" zsh_cv_sys_dynamic_strip_exe="${zsh_cv_sys_dynamic_strip_exe=yes}" zsh_cv_sys_dynamic_strip_lib="${zsh_cv_sys_dynamic_strip_lib=yes}" - zsh_cv_sys_dynamic_broken="${zsh_cv_sys_dynamic_broken=no}" + # + # THAT SUCKS! and must be changed + # + zsh_cv_shared_environ="${zsh_cv_shared_environ=yes}" LINKMODS=LINKMODS MOD_EXPORT="__attribute__((__dllexport__))" MOD_IMPORT_VARIABLE="__attribute__((__dllimport__))" @@ -1616,8 +1621,15 @@ fi if test "x$dynamic" = xyes; then - zsh_SYS_DYNAMIC_BROKEN - test "$zsh_cv_sys_dynamic_broken" = no || dynamic=no + zsh_SHARED_VARIABLE([environ], [char **]) + test "$zsh_cv_shared_environ" = yes || dynamic=no +dnl test "$zsh_cv_sys_dynamic_broken" = no || dynamic=no + if test "$ac_cv_func_tgetent" = yes; then + zsh_SHARED_FUNCTION([tgetent]) + fi + if test "$ac_cv_func_tigetstr" = yes; then + zsh_SHARED_FUNCTION([tigetstr]) + fi fi if test "x$dynamic" = xyes; then Index: Src/Modules/termcap.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/termcap.c,v retrieving revision 1.1 diff -u -r1.1 termcap.c --- Src/Modules/termcap.c 2000/12/03 20:53:25 1.1 +++ Src/Modules/termcap.c 2001/02/05 15:24:16 @@ -33,7 +33,7 @@ /* echotc: output a termcap */ /**/ -int +static int bin_echotc(char *name, char **argv, char *ops, int func) { char *s, buf[2048], *t, *u; Index: Src/Modules/termcap.mdd =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/termcap.mdd,v retrieving revision 1.1 diff -u -r1.1 termcap.mdd --- Src/Modules/termcap.mdd 2000/12/03 20:53:25 1.1 +++ Src/Modules/termcap.mdd 2001/02/05 15:24:16 @@ -1,5 +1,15 @@ name=zsh/termcap -link=either + +link='if test "x$ac_cv_func_tgetent" = xyes; then + if test "x$zsh_cv_shared_tgetent" = xyes; then + echo either + else + echo static + fi + else + echo no; + fi +' load=yes autobins="echotc" Index: Src/Modules/terminfo.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/terminfo.c,v retrieving revision 1.4 diff -u -r1.4 terminfo.c --- Src/Modules/terminfo.c 2000/12/06 01:16:15 1.4 +++ Src/Modules/terminfo.c 2001/02/05 15:24:16 @@ -36,7 +36,7 @@ /* echoti: output a terminfo capability */ /**/ -int +static int bin_echoti(char *name, char **argv, char *ops, int func) { char *s, *t; Index: Src/Modules/terminfo.mdd =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/terminfo.mdd,v retrieving revision 1.3 diff -u -r1.3 terminfo.mdd --- Src/Modules/terminfo.mdd 2000/12/05 11:00:09 1.3 +++ Src/Modules/terminfo.mdd 2001/02/05 15:24:16 @@ -1,5 +1,15 @@ name=zsh/terminfo -link='if test "x$ac_cv_func_tigetstr" = xyes; then echo either; else echo no; fi' + +link='if test "x$ac_cv_func_tigetstr" = xyes; then + if test "x$zsh_cv_shared_tigetstr" = xyes; then + echo either + else + echo static + fi + else + echo no; + fi +' load=yes autobins="echoti" ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: PATCH: RE: termcap moodule problem on Cygwin 2001-02-05 15:31 ` Andrej Borsenkow @ 2001-02-13 14:36 ` Andrej Borsenkow 0 siblings, 0 replies; 21+ messages in thread From: Andrej Borsenkow @ 2001-02-13 14:36 UTC (permalink / raw) To: Zsh hackers list > > O.K., hopefully the last version. Nobody answered and it works fine here so I've committed it (13431) -andrej ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: termcap moodule problem on Cygwin 2001-01-29 14:55 termcap moodule problem on Cygwin Andrej Borsenkow 2001-01-29 15:10 ` Peter Stephenson @ 2001-01-29 16:48 ` Zefram 1 sibling, 0 replies; 21+ messages in thread From: Zefram @ 2001-01-29 16:48 UTC (permalink / raw) To: Andrej Borsenkow; +Cc: ZSH workers mailing list Andrej Borsenkow wrote: >Cygwin has only static libtermcap. It gets linked twice - into main zsh >(libzsh to be sure) where term is (re-)initalized and into termcap.dll where >bin_echotc is defined. Only first one calls tgetent() so every call to `echotc >cap' crashes somewhere in termcap. We've had this problem before, with a static `environ' symbol. There's an autoconf test for it in aczsh.m4. Is there an appropriate symbol here that we can use to test for a static termcap, to extend the test? -zefram ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin )
@ 2001-01-31 9:00 Sven Wischnowsky
2001-01-31 9:47 ` Bart Schaefer
2001-01-31 9:57 ` Andrej Borsenkow
0 siblings, 2 replies; 21+ messages in thread
From: Sven Wischnowsky @ 2001-01-31 9:00 UTC (permalink / raw)
To: zsh-workers
Andrej Borsenkow wrote:
> > > - move termcap (and terminfo) back into main zsh.
> >
> > You could force it to be statically linked by changing the `link' line to
> > test for cygwin in termcap.mdd. See existing `link=' in terminfo.mdd for
> > how this works. You can make this depend on a configure test for whether
> > termcap is static.
> >
>
> Of course, I am idiot. Even more so as I cannot build zsh with static termcap:
So I'm not the only idiot. Good.
This happened to me, too. Somehow the Makefile calls the recursive
`make's twice when collection the module object files to be put into
stamp-modobjs. Since I don't really understand that part of the
Makefile anymore, I just added a `sort -u' in the rule that checks if
the new stamp-modobjs.tmp differs from existing stamp-modobjs. But I'm
pretty sure this isn't the right way to solve it.
Then I forgot to mention it on the list. Sorry.
So... Zefram? Anyone?
Bye
Sven
--
Sven Wischnowsky wischnow@informatik.hu-berlin.de
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-01-31 9:00 Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) Sven Wischnowsky @ 2001-01-31 9:47 ` Bart Schaefer 2001-01-31 9:57 ` Andrej Borsenkow 1 sibling, 0 replies; 21+ messages in thread From: Bart Schaefer @ 2001-01-31 9:47 UTC (permalink / raw) To: zsh-workers On Jan 31, 10:00am, Sven Wischnowsky wrote: } Subject: Re: Somebody with gcc knowledge here? (Was: termcap moodule prob } } Somehow the Makefile calls the recursive `make's twice when collection } the module object files to be put into stamp-modobjs. I've seen this as well (on linux, where it doesn't actually cause the build to fail), and spent a little while trying to figure out why it was happening, but I got lost in the twisty little maze of shell scripts that create .in files that create makefiles that run shell scripts, and gave up. -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-01-31 9:00 Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) Sven Wischnowsky 2001-01-31 9:47 ` Bart Schaefer @ 2001-01-31 9:57 ` Andrej Borsenkow 2001-01-31 17:55 ` Zefram 1 sibling, 1 reply; 21+ messages in thread From: Andrej Borsenkow @ 2001-01-31 9:57 UTC (permalink / raw) To: zsh-workers > This happened to me, too. Somehow the Makefile calls the recursive > `make's twice when collection the module object files to be put into > stamp-modobjs. Argh ... Index: Src/mkmakemod.sh =================================================================== RCS file: /cvsroot/zsh/zsh/Src/mkmakemod.sh,v retrieving revision 1.5 diff -u -r1.5 mkmakemod.sh --- Src/mkmakemod.sh 2000/11/26 20:01:03 1.5 +++ Src/mkmakemod.sh 2001/01/31 09:55:19 @@ -132,7 +132,13 @@ $the_subdir/$lastsub/*) ;; $the_subdir/*/*) lastsub=`echo $modfile | sed 's,^'$the_subdir'/,,;s,/[^/]*$,,'` - all_subdirs="$all_subdirs $lastsub" + case "$all_subdirs" in + *" $lastsub"* ) ;; + *" $lastsub "* ) ;; + * ) + all_subdirs="$all_subdirs $lastsub" + ;; + esac ;; $the_subdir/*) mddname=`echo $modfile | sed 's,^.*/,,;s,\.mdd$,,'` ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-01-31 9:57 ` Andrej Borsenkow @ 2001-01-31 17:55 ` Zefram 2001-02-01 5:55 ` Andrej Borsenkow 0 siblings, 1 reply; 21+ messages in thread From: Zefram @ 2001-01-31 17:55 UTC (permalink / raw) To: Andrej Borsenkow; +Cc: zsh-workers Andrej Borsenkow wrote: >+ case "$all_subdirs" in >+ *" $lastsub"* ) ;; >+ *" $lastsub "* ) ;; What you actually want here is case "$all_subdirs " in *" $lastsub "* ) ;; -zefram ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-01-31 17:55 ` Zefram @ 2001-02-01 5:55 ` Andrej Borsenkow 2001-02-01 16:39 ` Bart Schaefer 2001-02-01 19:23 ` Zefram 0 siblings, 2 replies; 21+ messages in thread From: Andrej Borsenkow @ 2001-02-01 5:55 UTC (permalink / raw) To: zsh-workers > > > Andrej Borsenkow wrote: > >+ case "$all_subdirs" in > >+ *" $lastsub"* ) ;; > >+ *" $lastsub "* ) ;; > > What you actually want here is > > case "$all_subdirs " in > *" $lastsub "* ) ;; > I actually wanted is case "$all_subdirs" in *" $lastsub" ) ;; *" $lastsub "* ) ;; to catch the case of just added subdir. It was copy'n'paste problem. Or do I miss something? -andrej ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-02-01 5:55 ` Andrej Borsenkow @ 2001-02-01 16:39 ` Bart Schaefer 2001-02-01 16:54 ` Andrej Borsenkow 2001-02-01 19:23 ` Zefram 1 sibling, 1 reply; 21+ messages in thread From: Bart Schaefer @ 2001-02-01 16:39 UTC (permalink / raw) To: zsh-workers, Andrej Borsenkow On Feb 1, 8:55am, Andrej Borsenkow wrote: } Subject: RE: Somebody with gcc knowledge here? (Was: termcap moodule prob } } > What you actually want here is } > } > case "$all_subdirs " in } > *" $lastsub "* ) ;; } } Or do I miss something? You miss the significance of whitespace. Look closely at the `case' line. Adding a trailing space there means you can always match a trailing space in the pattern line, so you only need one pattern. -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-02-01 16:39 ` Bart Schaefer @ 2001-02-01 16:54 ` Andrej Borsenkow 0 siblings, 0 replies; 21+ messages in thread From: Andrej Borsenkow @ 2001-02-01 16:54 UTC (permalink / raw) To: Bart Schaefer, zsh-workers > On Feb 1, 8:55am, Andrej Borsenkow wrote: > } Subject: RE: Somebody with gcc knowledge here? (Was: termcap moodule prob > } > } > What you actually want here is > } > > } > case "$all_subdirs " in > } > *" $lastsub "* ) ;; > } > } Or do I miss something? > > You miss the significance of whitespace. Look closely at the `case' > line. Adding a trailing space there means you can always match a > trailing space in the pattern line, so you only need one pattern. > > -- Erm. This won't match "bla-bla-bla $lastsub" case (when $lastsub is the last one). You are right, trailing space is significant. For this reason two patterns - *" $lastsub" and *" $lastsub "*. Or I must go home today :-) -andrej ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-02-01 5:55 ` Andrej Borsenkow 2001-02-01 16:39 ` Bart Schaefer @ 2001-02-01 19:23 ` Zefram 2001-02-02 8:42 ` Andrej Borsenkow 1 sibling, 1 reply; 21+ messages in thread From: Zefram @ 2001-02-01 19:23 UTC (permalink / raw) To: Andrej Borsenkow; +Cc: zsh-workers Andrej Borsenkow wrote: >I actually wanted is ... >Or do I miss something? Your new version does the same as mine, but mine is shorter. That's all. -zefram ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) 2001-02-01 19:23 ` Zefram @ 2001-02-02 8:42 ` Andrej Borsenkow 0 siblings, 0 replies; 21+ messages in thread From: Andrej Borsenkow @ 2001-02-02 8:42 UTC (permalink / raw) To: zsh-workers > Cc: zsh-workers@sunsite.auc.dk ^^^^^^ Should not we change this? > > Your new version does the same as mine, but mine is shorter. That's all. > Sorry, simply did not spot the correct blank. Not in the right mood yesterday. -andrej ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2001-02-13 14:36 UTC | newest] Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2001-01-29 14:55 termcap moodule problem on Cygwin Andrej Borsenkow 2001-01-29 15:10 ` Peter Stephenson 2001-01-30 8:25 ` Andrej Borsenkow 2001-01-30 10:34 ` Peter Stephenson 2001-01-31 8:50 ` Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) Andrej Borsenkow 2001-01-31 10:37 ` PATCH: RE: termcap moodule problem on Cygwin Andrej Borsenkow 2001-01-31 11:30 ` Peter Stephenson 2001-01-31 12:42 ` Andrej Borsenkow 2001-01-31 13:49 ` Peter Stephenson 2001-02-05 15:31 ` Andrej Borsenkow 2001-02-13 14:36 ` Andrej Borsenkow 2001-01-29 16:48 ` Zefram 2001-01-31 9:00 Somebody with gcc knowledge here? (Was: termcap moodule problem on Cygwin ) Sven Wischnowsky 2001-01-31 9:47 ` Bart Schaefer 2001-01-31 9:57 ` Andrej Borsenkow 2001-01-31 17:55 ` Zefram 2001-02-01 5:55 ` Andrej Borsenkow 2001-02-01 16:39 ` Bart Schaefer 2001-02-01 16:54 ` Andrej Borsenkow 2001-02-01 19:23 ` Zefram 2001-02-02 8:42 ` Andrej Borsenkow
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).