diff options
| author | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-01-16 19:02:12 +0000 | 
|---|---|---|
| committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-01-16 19:02:12 +0000 | 
| commit | 970d17ca4c52b32186910059bca87f8e6424050b (patch) | |
| tree | 6733507b99f2542c424c5a9eb309c5c4ffca0e20 | |
| parent | [w3m-dev 02861] IPv6 configuration check (diff) | |
| download | w3m-970d17ca4c52b32186910059bca87f8e6424050b.tar.gz w3m-970d17ca4c52b32186910059bca87f8e6424050b.zip | |
[w3m-dev 02862] SIGPIPE for migemo support
* main.c (SigPipe): added
* main.c (MAIN): signal(SIGPIPE, )
* search.c: #include <errno.h>
* search.c (migemostr): check fflush() error
* search.c (migemostr): check result string (empty is err)
* search.c (migemostr): if error occured, disable use_migemo
From: Fumitoshi UKAI  <ukai@debian.or.jp>
| -rw-r--r-- | ChangeLog | 12 | ||||
| -rw-r--r-- | main.c | 21 | ||||
| -rw-r--r-- | search.c | 18 | 
3 files changed, 47 insertions, 4 deletions
| @@ -1,5 +1,15 @@  2002-01-17  Fumitoshi UKAI  <ukai@debian.or.jp> +	* [w3m-dev 02862] SIGPIPE for migemo support +	* main.c (SigPipe): added +	* main.c (MAIN): signal(SIGPIPE, ) +	* search.c: #include <errno.h> +	* search.c (migemostr): check fflush() error +	* search.c (migemostr): check result string (empty is err) +	* search.c (migemostr): if error occured, disable use_migemo + +2002-01-17  Fumitoshi UKAI  <ukai@debian.or.jp> +  	* [w3m-dev 02861] IPv6 configuration check  	* configure: force "#define INET6" if socket(AF_INET6, SOCK_STREAM, 0)  			failed but use_ipv6=y in config.param @@ -2064,4 +2074,4 @@  	* release-0-2-1  	* import w3m-0.2.1 -$Id: ChangeLog,v 1.233 2002/01/16 17:22:49 ukai Exp $ +$Id: ChangeLog,v 1.234 2002/01/16 19:02:12 ukai Exp $ @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.62 2002/01/16 16:49:54 ukai Exp $ */ +/* $Id: main.c,v 1.63 2002/01/16 19:02:15 ukai Exp $ */  #define MAINPROGRAM  #include "fm.h"  #include <signal.h> @@ -54,6 +54,10 @@ static MySignalHandler resize_handler(SIGNAL_ARG);  static void resize_screen(void);  #endif +#ifdef SIGPIPE +static MySignalHandler SigPipe(SIGNAL_ARG); +#endif +  #ifdef USE_MARK  static char *MarkString = NULL;  #endif @@ -708,6 +712,9 @@ MAIN(int argc, char **argv, char **envp)  #ifdef SIGCHLD      signal(SIGCHLD, sig_chld);  #endif +#ifdef SIGPIPE +    signal(SIGPIPE, SigPipe); +#endif      orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc);      err_msg = Strnew(); @@ -1206,6 +1213,18 @@ resize_screen(void)  }  #endif				/* SIGWINCH */ +#ifdef SIGPIPE +static MySignalHandler +SigPipe(SIGNAL_ARG) +{ +#ifdef USE_MIGEMO +    init_migemo(); +#endif +    signal(SIGPIPE, SigPipe); +    SIGNAL_RETURN; +} +#endif +  /*    * Command functions: These functions are called with a keystroke.   */ @@ -1,6 +1,7 @@ -/* $Id: search.c,v 1.9 2002/01/16 16:49:55 ukai Exp $ */ +/* $Id: search.c,v 1.10 2002/01/16 19:02:16 ukai Exp $ */  #include "fm.h"  #include "regex.h" +#include <errno.h>  static void  set_mark(Line *l, int pos, int epos) @@ -71,10 +72,23 @@ migemostr(char *str)  	if (open_migemo(migemo_command) == 0)  	    return str;      fprintf(migemow, "%s\n", str); -    fflush(migemow); +again: +    if (fflush(migemow) != 0) { +	switch (errno) { +	case EINTR: goto again; +	default: goto err; +	} +    }      tmp = Strfgets(migemor);      Strchop(tmp); +    if (tmp->length == 0) +	goto err;      return tmp->ptr; +err: +    /* XXX: backend migemo is not working? */ +    init_migemo(); +    use_migemo = 0; +    return str;  }  #endif				/* USE_MIGEMO */ | 
