$B$d$^$F$G$9!#(B
> prevtrap$B$@$1$J$i3Z$J$N$G$9$,!"(Bsetjmp$B8F$S=P$74X?t$,(Binline$BE83+$5$l$k>l(B
> $B9g$d0z?t$,(Bregister$B$G$"$k>l9g$J$I$r9M$($k$H$1$C$3$&LLE]$G$9!#(B
$B$H;W$C$F$$$?$N$G$9$,!"$d$C$F$_$?$i$J$s$H$+$J$j$^$7$?$s$G!"(Bpatch$B$K$7(B
$B$FAw$j$^$9!#(Bkokb23+[w3m-dev 1559]$B%Y!<%9$G$9!#$^$:$O(Bpatch$B$K$D$$$F!#(B
* longjmp$B$G(Bsetjmp$B$K5"$C$F$-$F$+$i(Breturn$B$9$k$^$G$K;H$C$F$$$kJQ?t$NBg(B
$BItJ,$K(Bvolatile$B$r$D$1$F$$$^$9!#(B
* volatile$B$r$D$1$k>l=j$O(Bgcc-2.95 ($BHf3SE*(BANSI) $B$K=>$$$^$7$?!#8E$$(Bcc$B$@(B
$B$H!"(Bvolatile$B$N>l=j$,$*$+$7$$$H(Bwarning/error$B$,=P$k2DG=@-$,$"$k$HM=A[(B
$B$7$F$$$^$9!#$I$&$9$l$P$$$$$s$G$7$g$&!#(B
# $B$7$^$C$?!"(Bvolatile$B$OBgJ8;z$K$7$F(Bdefine$B@Z$k$Y$-$@$C$?$+(B?
* SETJMP$B<~JU$HB>$N%3!<%I$H$N4V$G(Breturn$BA0=hM}$rE}0l$9$kJ}?K$G%3!<%I$r(B
$B=q$-$^$7$?!#(B
* url.c$B$N(BopenSocket$B$HB>$N(BSETJMP$B;HMQ4X?t$H$G$O!"(BfmInitialize$B$N2r<a$,(B
$B0c$$$^$9!#$I$A$i$,@5$7$$(B ($B$"$k$$$ON>J}@5$7$$(B/$B8m$j(B) $B$+J,$+$i$J$$$N$G!"(B
$B$=$N$^$^$[$C$F$"$j$^$9!#<1<T$NH=CG5a$`!#(B
$B$H$$$C$?46$8$J$N$G!"$3$l$,$I$3$^$GDLMQ$9$k$N$+H=CG$KLB$C$F$$$^$9!#;n(B
$B$7$F$_$F$[$7$$$N$K$O4V0c$$$J$$$N$G$9$,!"8eLa$j$NMQ0U$r$7$F$*$$$?J}$,$$(B
$B$$$G$9!#(B
$B$D$$$G$K$=$NB>!#(B
> # $B$J$s$+(B gc/README.*** $B$,$"$k$N$OMn$A$J$$$N$+$7$i$s!#(B
$B$[$\$=$&$_$?$$$G$9!#(BNO_SIGNALS$B$r80$K8!:w$7$F$_$?$i!"(BLINUX$B$d$i$J$s$d(B
$B$i$O%G%U%)%k%H$G(BNO_SIGNALS$B$HF1Ey$N$h$&$G$9(B ($B$-$C$H(B)$B!#(Bos_dep.c$B$G<o!9%5(B
$B%.$r$d$C$F$$$k$i$7$$$N$OJ,$+$C$?$N$G$9$,!"%5%.$NFbMF$OJ,$+$j$^$;$s$G$7(B
$B$?!#(B
$B$G!"(BNO_SIGNALS$B$N8!:w7k2L$+$iJ,$+$k$h$&$K!"$I$&$d$i(BNO_SIGNALS$B$r$D$1$F(B
$B$bLdBj$,=P$J$$(BOS$B$G$O!"$b$H$h$j(Bsignal$B<u?.;~=hM}$rJL$G$d$C$F$$$k$h$&$G$9!#(B
$B$J$N$G!"$3$N%*%W%7%g%s$O30$7$F$*$$$?J}$,$$$$$+$H!#(B
> From: Kiyokazu SUTO <suto@ks-and-ks.ne.jp>
> > > patch$B$K!V(B-l$B!W%*%W%7%g%s$rM?$($kI,MW$,$"$k$N$@$H;W$$$^$9!#(B
$B$"!"$=$l!"$7$i$J$+$C$?!#3P$($F$*$-$^$9!#(B
> $B$"$N9T$r<h$j=|$$$?(Bpatch$B$rMQ0U$7$F!"(Bpatch$B$rEv$F$k>l9g$O!V(B-l$B!W%*%W%7%g(B
> $B%s$r$D$1$m!"$H(BWWW$B%Z!<%8$KCm0U=q$-$r$D$1$k$N$,!"IT9,$J?M$,:G$b>/$/$J(B
> $B$k$H;d$O;W$$$^$9$,!"$$$+$,$G$9$+!#(B
$B;?@.$G$9!#(B
--- $B$d$^$F(B
diff -rC2 -x XX* -x *table -x *[^.l]? -x *.[^che] -x config* w3m-0.1.11-pre-kokb23+1584/file.c w3m-0.1.11-pre-kokb23-volatile/file.c *** w3m-0.1.11-pre-kokb23+1584/file.c Wed Dec 27 15:08:02 2000 --- w3m-0.1.11-pre-kokb23-volatile/file.c Wed Dec 27 22:36:58 2000 *************** *** 847,851 **** URLFile f, *of = NULL; ParsedURL pu; ! Buffer *b = NULL, *(*proc) (); char *tpath; char *t, *p, *real_type = NULL; --- 847,851 ---- URLFile f, *of = NULL; ParsedURL pu; ! Buffer *b = NULL, *(*proc) () = loadBuffer; char *tpath; char *t, *p, *real_type = NULL; *************** *** 853,857 **** int searchHeader = SearchHeader; int searchHeader_through = TRUE; ! MySignalHandler(*prevtrap) (); TextList *extra_header = newTextList(); Str ss; --- 853,857 ---- int searchHeader = SearchHeader; int searchHeader_through = TRUE; ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; TextList *extra_header = newTextList(); Str ss; *************** *** 864,868 **** tpath = path; - prevtrap = NULL; add_auth_cookie_flag = 0; --- 864,867 ---- *************** *** 887,890 **** --- 886,890 ---- term_raw(); signal(SIGINT, prevtrap); + prevtrap = NULL; } switch (f.scheme) { *************** *** 936,947 **** if (SETJMP(AbortLoading) != 0) { /* transfer interrupted */ - if (fmInitialized) { - term_raw(); - signal(SIGINT, prevtrap); - } if (b) discardBuffer(b); ! UFclose(&f); ! return NULL; } --- 936,943 ---- if (SETJMP(AbortLoading) != 0) { /* transfer interrupted */ if (b) discardBuffer(b); ! b = NULL; ! goto sig_end; } *************** *** 1000,1005 **** /* abort */ UFclose(&f); ! signal(SIGINT, prevtrap); ! return NULL; } UFclose(&f); --- 996,1001 ---- /* abort */ UFclose(&f); ! b = NULL; ! goto sig_end; } UFclose(&f); *************** *** 1021,1027 **** if (ss == NULL) { /* abort */ ! UFclose(&f); ! signal(SIGINT, prevtrap); ! return NULL; } UFclose(&f); --- 1017,1022 ---- if (ss == NULL) { /* abort */ ! b = NULL; ! goto sig_end; } UFclose(&f); *************** *** 1097,1107 **** UFclose(&f); else { - if (fmInitialized) { - term_raw(); - signal(SIGINT, prevtrap); - } doFileMove(tmpf, guess_save_name(pu.file)); } ! return NO_BUFFER; } } --- 1092,1099 ---- UFclose(&f); else { doFileMove(tmpf, guess_save_name(pu.file)); } ! b = NO_BUFFER; ! goto sig_end; } } *************** *** 1142,1156 **** if (real_type == NULL) real_type = t; - proc = loadBuffer; if (do_download) { /* download only */ - if (fmInitialized) { - term_raw(); - signal(SIGINT, prevtrap); - } doFileSave(f, guess_save_name(pu.file)); UFclose(&f); ! return NO_BUFFER; } --- 1134,1144 ---- if (real_type == NULL) real_type = t; if (do_download) { /* download only */ doFileSave(f, guess_save_name(pu.file)); UFclose(&f); ! b = NO_BUFFER; ! goto sig_end; } *************** *** 1169,1179 **** if (!strcasecmp(t, "text/html")) proc = loadHTMLBuffer; - else if (is_plain_text_type(t)) - proc = loadBuffer; #ifdef USE_GOPHER ! else if (!strcasecmp(t, "gopher:directory")) { proc = loadGopherDir; - } #endif /* USE_GOPHER */ else if (!w3m_dump || is_dump_text_type(t)) { if (!do_download && doExternal(f, pu.file, t, &b, t_buf)) { --- 1157,1166 ---- if (!strcasecmp(t, "text/html")) proc = loadHTMLBuffer; #ifdef USE_GOPHER ! else if (!strcasecmp(t, "gopher:directory")) proc = loadGopherDir; #endif /* USE_GOPHER */ + else if (is_plain_text_type(t)) + proc = loadBuffer; else if (!w3m_dump || is_dump_text_type(t)) { if (!do_download && doExternal(f, pu.file, t, &b, t_buf)) { *************** *** 1185,1199 **** } UFclose(&f); ! if (fmInitialized) { ! term_raw(); ! signal(SIGINT, prevtrap); ! } ! return b; } else { - if (fmInitialized) { - term_raw(); - signal(SIGINT, prevtrap); - } if (pu.scheme == SCM_LOCAL) { UFclose(&f); --- 1172,1178 ---- } UFclose(&f); ! goto sig_end; } else { if (pu.scheme == SCM_LOCAL) { UFclose(&f); *************** *** 1204,1208 **** UFclose(&f); } ! return NO_BUFFER; } } --- 1183,1188 ---- UFclose(&f); } ! b = NO_BUFFER; ! goto sig_end; } } *************** *** 1242,1246 **** } } ! if (fmInitialized) { term_raw(); signal(SIGINT, prevtrap); --- 1222,1227 ---- } } ! sig_end: ! if (fmInitialized && prevtrap) { term_raw(); signal(SIGINT, prevtrap); *************** *** 2330,2334 **** { if (cur_select == NULL) ! return; process_option(); #ifdef MENU_SELECT --- 2311,2315 ---- { if (cur_select == NULL) ! return NULL; process_option(); #ifdef MENU_SELECT *************** *** 4581,4585 **** void ! loadHTMLstream(URLFile * f, Buffer * newBuf, FILE * src, int internal) { struct environment envs[MAX_ENV_LEVEL]; --- 4562,4566 ---- void ! loadHTMLstream(URLFile *f, Buffer *newBuf, FILE *src, int internal) { struct environment envs[MAX_ENV_LEVEL]; *************** *** 4590,4598 **** struct html_feed_environ htmlenv1; struct readbuffer obuf; ! MySignalHandler(*prevtrap) (); if (SETJMP(AbortLoading) != 0) { HTMLlineproc1("<br>Transfer Interrupted!<br>", &htmlenv1); ! goto phase2; } if (fmInitialized) { --- 4571,4579 ---- struct html_feed_environ htmlenv1; struct readbuffer obuf; ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; if (SETJMP(AbortLoading) != 0) { HTMLlineproc1("<br>Transfer Interrupted!<br>", &htmlenv1); ! goto sig_end; } if (fmInitialized) { *************** *** 4683,4699 **** if (htmlenv1.title) newBuf->buffername = htmlenv1.title; if (w3m_halfdump) { - if (fmInitialized) { - term_raw(); - signal(SIGINT, prevtrap); - } return; } - phase2: newBuf->trbyte = trbyte + linelen; - if (fmInitialized) { - term_raw(); - signal(SIGINT, prevtrap); - } HTMLlineproc2(newBuf, htmlenv1.buf); #ifdef JP_CHARSET --- 4664,4677 ---- if (htmlenv1.title) newBuf->buffername = htmlenv1.title; + + sig_end: + if (fmInitialized && prevtrap) { + term_raw(); + signal(SIGINT, prevtrap); + } if (w3m_halfdump) { return; } newBuf->trbyte = trbyte + linelen; HTMLlineproc2(newBuf, htmlenv1.buf); #ifdef JP_CHARSET *************** *** 4709,4719 **** { URLFile f; ! MySignalHandler(*prevtrap) (); ! Buffer *newBuf; newBuf = newBuffer(INIT_BUFFER_WIDTH); if (SETJMP(AbortLoading) != 0) { discardBuffer(newBuf); ! return NULL; } init_stream(&f, SCM_LOCAL, newStrStream(page)); --- 4687,4698 ---- { URLFile f; ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; ! Buffer * volatile newBuf; newBuf = newBuffer(INIT_BUFFER_WIDTH); if (SETJMP(AbortLoading) != 0) { discardBuffer(newBuf); ! newBuf = NULL; ! goto sig_end; } init_stream(&f, SCM_LOCAL, newStrStream(page)); *************** *** 4726,4733 **** loadHTMLstream(&f, newBuf, NULL, TRUE); - if (fmInitialized) { - term_raw(); - signal(SIGINT, prevtrap); - } newBuf->topLine = newBuf->firstLine; newBuf->lastLine = newBuf->currentLine; --- 4705,4708 ---- *************** *** 4737,4740 **** --- 4712,4720 ---- #endif /* JP_CHARSET */ + sig_end: + if (fmInitialized) { + term_raw(); + signal(SIGINT, prevtrap); + } return newBuf; } *************** *** 4846,4850 **** loadBuffer(URLFile * uf, Buffer * newBuf) { ! FILE *src = NULL; char code; Str lineBuf2; --- 4826,4830 ---- loadBuffer(URLFile * uf, Buffer * newBuf) { ! FILE * volatile src = NULL; char code; Str lineBuf2; *************** *** 4853,4857 **** Str tmpf; int linelen = 0, trbyte = 0; ! MySignalHandler(*prevtrap) (); if (newBuf == NULL) --- 4833,4837 ---- Str tmpf; int linelen = 0, trbyte = 0; ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; if (newBuf == NULL) *************** *** 4860,4864 **** if (SETJMP(AbortLoading) != 0) { ! goto _end; } if (fmInitialized) { --- 4840,4844 ---- if (SETJMP(AbortLoading) != 0) { ! goto sig_end; } if (fmInitialized) { *************** *** 4918,4925 **** addnewline(newBuf, lineBuf2->ptr, propBuffer, lineBuf2->length, nlines); } ! _end: ! if (fmInitialized) { ! signal(SIGINT, prevtrap); term_raw(); } newBuf->topLine = newBuf->firstLine; --- 4898,4905 ---- addnewline(newBuf, lineBuf2->ptr, propBuffer, lineBuf2->length, nlines); } ! sig_end: ! if (fmInitialized && prevtrap) { term_raw(); + signal(SIGINT, prevtrap); } newBuf->topLine = newBuf->firstLine; *************** *** 5242,5246 **** int check; int linelen = 0, trbyte = 0; ! MySignalHandler(*prevtrap) (); static JMP_BUF env_bak; --- 5222,5226 ---- int check; int linelen = 0, trbyte = 0; ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; static JMP_BUF env_bak; diff -rC2 -x XX* -x *table -x *[^.l]? -x *.[^che] -x config* w3m-0.1.11-pre-kokb23+1584/frame.c w3m-0.1.11-pre-kokb23-volatile/frame.c *** w3m-0.1.11-pre-kokb23+1584/frame.c Wed Dec 27 15:29:04 2000 --- w3m-0.1.11-pre-kokb23-volatile/frame.c Wed Dec 27 22:07:52 2000 *************** *** 431,446 **** char *d_target, *p_target, *s_target, *t_target; ParsedURL *currentURL, base; ! MySignalHandler(*prevtrap) (SIGNAL_ARG) = NULL; int flag; if (f == NULL) return -1; if (level == 0) { if (SETJMP(AbortLoading) != 0) { ! if (fmInitialized) ! term_raw(); ! signal(SIGINT, prevtrap); ! return -1; } prevtrap = signal(SIGINT, KeyAbort); --- 431,450 ---- char *d_target, *p_target, *s_target, *t_target; ParsedURL *currentURL, base; ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; int flag; + volatile int ret = 0; if (f == NULL) return -1; + if (level > 7) { + fputs("Too many frameset tasked.\n", f1); + return -1; + } + if (level == 0) { if (SETJMP(AbortLoading) != 0) { ! ret = 1; ! goto sig_end; } prevtrap = signal(SIGINT, KeyAbort); *************** *** 451,459 **** } - if (level > 7) { - fputs("Too many frameset tasked.\n", f1); - return -1; - } - if (level == 0) { fprintf(f1, "<html><head><title>%s</title></head><body>\n", --- 455,458 ---- *************** *** 732,742 **** fputs("</table>\n", f1); if (level == 0) { fputs("</body></html>\n", f1); ! signal(SIGINT, prevtrap); if (fmInitialized) term_raw(); } ! return 0; } --- 731,746 ---- fputs("</table>\n", f1); + if (level == 0) { fputs("</body></html>\n", f1); ! ! sig_end: ! if (fmInitialized) term_raw(); + if (prevtrap) + signal(SIGINT, prevtrap); } ! return ret; } diff -rC2 -x XX* -x *table -x *[^.l]? -x *.[^che] -x config* w3m-0.1.11-pre-kokb23+1584/main.c w3m-0.1.11-pre-kokb23-volatile/main.c *** w3m-0.1.11-pre-kokb23+1584/main.c Wed Dec 27 15:07:49 2000 --- w3m-0.1.11-pre-kokb23-volatile/main.c Wed Dec 27 22:55:48 2000 *************** *** 992,999 **** srchfor(void) { ! MySignalHandler(*prevtrap) (); char *str; ! int i; ! int wrapped = 0; str = inputStrHist("Forward: ", NULL, TextHist); --- 992,998 ---- srchfor(void) { ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; char *str; ! volatile int wrapped = 0; str = inputStrHist("Forward: ", NULL, TextHist); *************** *** 1005,1015 **** } SearchString = str; ! prevtrap = signal(SIGINT, intTrap); ! crmode(); ! if (SETJMP(IntReturn) == 0) for (i = 0; i < PREC_NUM; i++) wrapped = forwardSearch(Currentbuf, SearchString); ! signal(SIGINT, prevtrap); term_raw(); displayBuffer(Currentbuf, B_NORMAL); if (wrapped) { --- 1004,1017 ---- } SearchString = str; ! if (SETJMP(IntReturn) == 0) { ! int i; ! ! prevtrap = signal(SIGINT, intTrap); ! crmode(); for (i = 0; i < PREC_NUM; i++) wrapped = forwardSearch(Currentbuf, SearchString); ! } term_raw(); + signal(SIGINT, prevtrap); displayBuffer(Currentbuf, B_NORMAL); if (wrapped) { *************** *** 1023,1030 **** srchbak(void) { ! MySignalHandler(*prevtrap) (); char *str; ! int i; ! int wrapped = 0; str = inputStrHist("Backward: ", NULL, TextHist); --- 1025,1031 ---- srchbak(void) { ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; char *str; ! volatile int wrapped = 0; str = inputStrHist("Backward: ", NULL, TextHist); *************** *** 1036,1046 **** } SearchString = str; ! prevtrap = signal(SIGINT, intTrap); ! crmode(); ! if (SETJMP(IntReturn) == 0) for (i = 0; i < PREC_NUM; i++) wrapped = backwardSearch(Currentbuf, SearchString); ! signal(SIGINT, prevtrap); term_raw(); displayBuffer(Currentbuf, B_NORMAL); if (wrapped) { --- 1037,1050 ---- } SearchString = str; ! if (SETJMP(IntReturn) == 0) { ! int i; ! ! prevtrap = signal(SIGINT, intTrap); ! crmode(); for (i = 0; i < PREC_NUM; i++) wrapped = backwardSearch(Currentbuf, SearchString); ! } term_raw(); + signal(SIGINT, prevtrap); displayBuffer(Currentbuf, B_NORMAL); if (wrapped) { *************** *** 1053,1063 **** srch_nxtprv(int reverse) { ! int i; ! int wrapped = 0; static int (*routine[2]) (Buffer *, char *) = { forwardSearch, backwardSearch }; - MySignalHandler(*prevtrap) (); if (searchRoutine == NULL) { --- 1057,1066 ---- srch_nxtprv(int reverse) { ! MySignalHandler(* volatile prevtrap)(SIGNAL_ARG) = NULL; ! volatile int wrapped = 0; static int (*routine[2]) (Buffer *, char *) = { forwardSearch, backwardSearch }; if (searchRoutine == NULL) { *************** *** 1075,1085 **** if (searchRoutine == backwardSearch) reverse ^= 1; ! prevtrap = signal(SIGINT, intTrap); ! crmode(); ! if (SETJMP(IntReturn) == 0) for (i = 0; i < PREC_NUM; i++) wrapped = (*routine[reverse]) (Currentbuf, SearchString); ! signal(SIGINT, prevtrap); term_raw(); displayBuffer(Currentbuf, B_NORMAL); if (wrapped) { --- 1078,1091 ---- if (searchRoutine == backwardSearch) reverse ^= 1; ! if (SETJMP(IntReturn) == 0) { ! int i; ! ! prevtrap = signal(SIGINT, intTrap); ! crmode(); for (i = 0; i < PREC_NUM; i++) wrapped = (*routine[reverse]) (Currentbuf, SearchString); ! } term_raw(); + signal(SIGINT, prevtrap); displayBuffer(Currentbuf, B_NORMAL); if (wrapped) { diff -rC2 -x XX* -x *table -x *[^.l]? -x *.[^che] -x config* w3m-0.1.11-pre-kokb23+1584/url.c w3m-0.1.11-pre-kokb23-volatile/url.c *** w3m-0.1.11-pre-kokb23+1584/url.c Wed Dec 27 15:07:51 2000 --- w3m-0.1.11-pre-kokb23-volatile/url.c Wed Dec 27 23:04:30 2000 *************** *** 312,316 **** unsigned short remoteport_num) { ! int sock = -1; #ifdef INET6 int *af; --- 312,316 ---- unsigned short remoteport_num) { ! volatile int sock = -1; #ifdef INET6 int *af; *************** *** 325,329 **** unsigned long adr; #endif /* not INET6 */ ! MySignalHandler(*trap) (); if (SETJMP(AbortLoading) != 0) { --- 325,329 ---- unsigned long adr; #endif /* not INET6 */ ! MySignalHandler(* volatile trap)(SIGNAL_ARG) = NULL; if (SETJMP(AbortLoading) != 0) { *************** *** 331,336 **** sock_log("openSocket() failed. reason: user abort\n"); #endif ! if (sock >= 0) close(sock); goto error; } --- 331,338 ---- sock_log("openSocket() failed. reason: user abort\n"); #endif ! if (sock >= 0) { close(sock); + sock = -1; + } goto error; } *************** *** 470,484 **** #endif /* not INET6 */ - if (fmInitialized) - term_raw(); - signal(SIGINT, trap); - return sock; error: if (fmInitialized) term_raw(); signal(SIGINT, trap); ! ! return -1; ! } --- 472,480 ---- #endif /* not INET6 */ error: if (fmInitialized) term_raw(); signal(SIGINT, trap); ! return sock; }
This archive was generated by hypermail 2b29 : Wed Dec 27 2000 - 08:45:25 CST