On Fri, Sep 26, 2008 at 10:37:04AM +0200, =?ISO-8859-1?Q?G=FCrkan_Seng=FCn_ 
wrote:
> links and links2 work perfectly on Debian GNU/Hurd, i just tried 
> links2 -g and it gave worked with http as well as https with no 
> problem

   It works in graphical mode but not in text mode.

> elinks is a different source than links and links2.

   ELinks has been forked from Links 0.96 and the core parts of Links2 
and ELinks still are very similar.  Compare e.g. kbd.c in Links with 
src/terminal/kbd.c in ELinks, select.c (Links) with src/main/select.c.  
Kalle's workaround[0] for this bug works for Links too, I put the diff 
for Links 2.2 at the end of this e-mail in case you want to include it 
in your package (if Kalle agrees).

Cheers,
Fabienne

[0]http://repo.or.cz/w/elinks.git?a=commit;h=a0d624cd615702d041387b29d00f5128c900e567

--- select.c.bak        2008-10-30 18:10:47.000000000 +0100
+++ select.c    2008-10-30 18:15:25.000000000 +0100
@@ -5,6 +5,9 @@
  */
 
 #include "links.h"
+#ifdef __GNU__ /* For GNU Hurd bug workaround in set_handlers() */
+#include <sys/stat.h> /* OS/2 needs this after sys/types.h */
+#endif
 
 /*
 #define DEBUG_CALLS
@@ -216,6 +219,21 @@
                internal("set_handlers: handle %d >= FD_SETSIZE %d", fd, 
FD_SETSIZE);
                return;
        }
+       #ifdef __GNU__
+       /* GNU Hurd pflocal bug <http://savannah.gnu.org/bugs/?22861>:
+        * If ELinks does a select() where the initial exceptfds set
+        * includes a pipe that is not listed in the other fd_sets,
+        * then select() always reports an exception there.  That
+        * makes Elinks think the pipe has failed and close it.
+        * To work around this bug, do not monitor exceptions for
+        * pipes on the Hurd.  */
+       if (error_func) {
+               struct stat st;
+
+               if (fstat(fd, &st) == 0 && S_ISFIFO(st.st_mode))
+                       error_func = NULL;
+       }
+       #endif /* __GNU__ */
        threads[fd].read_func = read_func;
        threads[fd].write_func = write_func;
        threads[fd].error_func = error_func;
_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev

Reply via email to