diff options
Diffstat (limited to '')
| -rw-r--r-- | ChangeLog | 61 | ||||
| -rw-r--r-- | display.c | 308 | ||||
| -rw-r--r-- | main.c | 174 | ||||
| -rw-r--r-- | map.c | 23 | ||||
| -rw-r--r-- | proto.h | 13 | 
5 files changed, 327 insertions, 252 deletions
| @@ -1,5 +1,64 @@  2002-12-13  Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> +	* [w3m-dev 03564] clean up displayBuffer() +	* display.c (delayed_msg): static +		(drawAnchorCursor): static +		(redrawBuffer): define +		(redrawNLine): static +		(redrawLine): static +		(redrawLineRegion): static +		(do_effects): static +		(do_color): static +		(make_lastline_link): added +		(make_lastline_message): added +		(displayBuffer): rewrite with make_lastline_message() +		(drawAnchorCursor0): added +		(drawAnchorCursor): added +	* main.c (main): remove onA() +		(keyPressEventProc): remove onA() +		(disp_srchresult): static +			disp_message TRUE +		(isrch): remove onA() +		(srch): displayBuffer +			remove onA() +		(srch_nxtprv): remove onA() +		(pipeBuf): disp_message TRUE +		(pipesh): disp_message TRUE +		(readsh): disp_message TRUE +		(_mark): dispBuffer +		(_followForm): break, always dispBuffer +		(drawAnchorCursor0): deleted +		(drawAnchorCursor): deleted +		(onA): deleted +		(anchorMn): delete onA() +		(svBuf): displayBuffer B_NORMAL +		(reload): disp_err_message TRUE +			displayBuffer +		(rFrame): displayBuffer +		(invoke_browser): displayBuffer +		(extbrz): disp_err_message TRUE +		(process_mouse): onA -> displayBuffer +		(movMs): delete onA() +		(menuMs): onA -> displayBuffer +		(closeTMs): disp_message TRUE +		(wrapToggle): disp_message TRUE +		(execdict): disp_message TRUE +		(SigAlarm): displayBuffer, delete onA +		(reinit): displayBuffer +	* map.c (getCurrentMapLabel): deleted +		(retrieveCurrentMapArea): added +	* proto.h (redrawBuffer): deleted +		(redrawNLine): deleted +		(redrawLine): deleted +		(redrawLineRegion): deleted +		(do_effects): deleted +		(do_color): deleted +		(message_list): deleted +		(getCurrentMapLabel): deleted +		(retrieveCurrentMapArea): added + +2002-12-13  Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> +  	* [w3m-dev 03563] Directory Traversal Vulnerabilities in FTP Clients  	* file.c (guess_save_name): pass guess_filename @@ -5751,4 +5810,4 @@ a	* [w3m-dev 03276] compile error on EWS4800  	* release-0-2-1  	* import w3m-0.2.1 -$Id: ChangeLog,v 1.615 2002/12/13 00:09:50 ukai Exp $ +$Id: ChangeLog,v 1.616 2002/12/13 02:19:01 ukai Exp $ @@ -1,4 +1,4 @@ -/* $Id: display.c,v 1.45 2002/12/11 15:03:15 ukai Exp $ */ +/* $Id: display.c,v 1.46 2002/12/13 02:19:01 ukai Exp $ */  #include <signal.h>  #include "fm.h" @@ -214,19 +214,145 @@ static Linecolor color_mode = 0;  static Buffer *save_current_buf = NULL;  #endif -char *delayed_msg = NULL; +static char *delayed_msg = NULL; +static void drawAnchorCursor(Buffer *buf); +#define redrawBuffer(buf) redrawNLine(buf, LASTLINE) +static void redrawNLine(Buffer *buf, int n); +static Line *redrawLine(Buffer *buf, Line *l, int i);  #ifdef USE_IMAGE  static int image_touch = 0;  static int draw_image_flag = FALSE;  static Line *redrawLineImage(Buffer *buf, Line *l, int i);  #endif +static int redrawLineRegion(Buffer *buf, Line *l, int i, int bpos, int epos); +static void do_effects(Lineprop m); +#ifdef USE_ANSI_COLOR +static void do_color(Linecolor c); +#endif + +static Str +make_lastline_link(Buffer *buf, char *title, char *url) +{ +    Str s = NULL, u; +    ParsedURL pu; +    char *p; +    int l = COLS - 1; + +    if (title && *title) { +	s = Strnew_m_charp("[", title, "]", NULL); +	for (p = s->ptr; *p; p++) { +	    if (IS_CNTRL(*p) || IS_SPACE(*p)) +		*p = ' '; +	} +	if (url) +	    Strcat_charp(s, " "); +	l -= s->length; +        if (l <= 0) +	    return s; +    } +    if (!url) +	return s; +    parseURL2(url, &pu, baseURL(buf)); +    u = parsedURL2Str(&pu); +    if (l <= 4 || l >= u->length) { +	if (!s) +	    return u; +	Strcat(s, u); +	return s; +    } +    if (!s) +	s = Strnew_size(COLS); +    Strcat_charp_n(s, u->ptr, (l - 2) / 2); +#if LANG == JA +    Strcat_charp(s, "กฤ"); +#else				/* LANG != JA */ +    Strcat_charp(s, ".."); +#endif				/* LANG != JA */ +    l = COLS - 1 - s->length; +    Strcat_charp(s, &u->ptr[u->length - l]); +    return s; +} + +static Str +make_lastline_message(Buffer *buf) +{ +    Str msg, s = NULL; + +    if (displayLink) { +#ifdef USE_IMAGE +	MapArea *a = retrieveCurrentMapArea(buf); +	if (a) +	   s = make_lastline_link(buf, a->alt, a->url); +	else +#endif +	{ +	    Anchor *a = retrieveCurrentAnchor(buf); +	    char *p = NULL; +	    if (a && a->title && *a->title) +		p = a->title; +	    else { +		Anchor *a_img = retrieveCurrentImg(buf); +		if (a_img && a_img->title && *a_img->title) +		    p = a_img->title; +	    } +	    if (p || a) +	        s = make_lastline_link(buf, p, a ? a->url : NULL); +	} +	if (s && s->length >= COLS - 3) +	    return s; +    } + +#ifdef USE_MOUSE +    if (use_mouse && mouse_action.lastline_str) +	msg = Strnew_charp(mouse_action.lastline_str); +    else +#endif				/* not USE_MOUSE */ +	msg = Strnew(); +    if (displayLineInfo && buf->currentLine != NULL && buf->lastLine != NULL) { +	int cl = buf->currentLine->real_linenumber; +	int ll = buf->lastLine->real_linenumber; +	int r = (int)((double)cl * 100.0 / (double)(ll ? ll : 1) + 0.5); +	Strcat(msg, Sprintf("%d/%d (%d%%)", cl, ll, r)); +    } +    else +	Strcat_charp(msg, "Viewing"); +#ifdef USE_SSL +    if (buf->ssl_certificate) +	Strcat_charp(msg, "[SSL]"); +#endif +    Strcat_charp(msg, " <"); +    Strcat_charp(msg, buf->buffername); + +    if (s) { +	int l = COLS - 3 - s->length; +#ifdef JP_CHARSET +	if (msg->length > l) { +	    char *p; +	    int i; +	    for (p = msg->ptr; *p; p += i) { +	        i = get_mclen(get_mctype(p)); +		l -= i; +		if (l < 0) +		    break; +	    } +	    l = p - msg->ptr; +#endif +	    Strtruncate(msg, l); +	} +	Strcat_charp(msg, "> "); +	Strcat(msg, s); +    } +    else { +	Strcat_charp(msg, ">"); +    } +    return msg; +}  void  displayBuffer(Buffer *buf, int mode)  {      Str msg; -    Str s = NULL;      int ny = 0;      if (buf->topLine == NULL && readBufferCache(buf) == 0) {	/* clear_buffer */ @@ -321,89 +447,9 @@ displayBuffer(Buffer *buf, int mode)      }  #endif -#ifdef USE_MOUSE -    if (use_mouse && mouse_action.lastline_str) -	msg = Strnew_charp(mouse_action.lastline_str); -    else -#endif				/* not USE_MOUSE */ -	msg = Strnew(); -    if (displayLineInfo && buf->currentLine != NULL && buf->lastLine != NULL) { -	int cl = buf->currentLine->real_linenumber; -	int ll = buf->lastLine->real_linenumber; -	int r = (int)((double)cl * 100.0 / (double)(ll ? ll : 1) + 0.5); -	Strcat(msg, Sprintf("%d/%d (%d%%)", cl, ll, r)); -    } -    else -	Strcat_charp(msg, "Viewing"); -#ifdef USE_SSL -    if (buf->ssl_certificate) -	Strcat_charp(msg, "[SSL]"); -#endif -    Strcat_charp(msg, " <"); -    Strcat_charp(msg, buf->buffername); -    if (displayLink) { -#ifdef USE_IMAGE -	s = getCurrentMapLabel(buf); -	if (!s) -#endif -	{ -	    Anchor *a = retrieveCurrentAnchor(buf); -	    if (a && a->title && *a->title) -		s = Sprintf("[%s] ", a->title); -	    else { -		Anchor *a_img = retrieveCurrentImg(buf); -		if (a_img && a_img->title && *a_img->title) -		    s = Sprintf("[%s]%s", a_img->title, a ? " " : ""); -	    } -	    if (a) { -		ParsedURL pu; -		parseURL2(a->url, &pu, baseURL(buf)); -		if (!s) -		    s = Strnew(); -		Strcat(s, parsedURL2Str(&pu)); -	    } -	} -    } -    if (s) { -	int l; -	l = buf->width - 2; -	if (s->length > l) { -	    if (l >= 4) { -		msg = Strsubstr(s, 0, (l - 2) / 2); -#if LANG == JA -		Strcat_charp(msg, "กฤ"); -#else				/* LANG != JA */ -		Strcat_charp(msg, ".."); -#endif				/* LANG != JA */ -		l = buf->width - msg->length; -		Strcat(msg, Strsubstr(s, s->length - l, l)); -	    } -	    else { -		msg = s; -	    } -	} -	else { -	    l -= s->length; -	    if (msg->length > l) { -#ifdef JP_CHARSET -		char *bn = msg->ptr; -		int i, j; -		for (i = 0; bn[i]; i += j) { -		    j = get_mclen(get_mctype(&bn[i])); -		    if (i + j > l) -			break; -		} -		l = i; -#endif -		Strtruncate(msg, l); -	    } -	    Strcat_charp(msg, "> "); -	    Strcat(msg, s); -	} -    } -    else { -	Strcat_charp(msg, ">"); -    } +    drawAnchorCursor(buf); + +    msg = make_lastline_message(buf);      if (buf->firstLine == NULL) {  	Strcat_charp(msg, "\tNo Line");  	clear(); @@ -434,13 +480,83 @@ displayBuffer(Buffer *buf, int mode)  #endif  } -void -redrawBuffer(Buffer *buf) +static void +drawAnchorCursor0(Buffer *buf, AnchorList *al, int hseq, int prevhseq, +		  int tline, int eline, int active) +{ +    int i, j; +    Line *l; +    Anchor *an; + +    l = buf->topLine; +    for (j = 0; j < al->nanchor; j++) { +	an = &al->anchors[j]; +	if (an->start.line < tline) +	    continue; +	if (an->start.line >= eline) +	    return; +	for (;; l = l->next) { +	    if (l == NULL) +		return; +	    if (l->linenumber == an->start.line) +		break; +	} +	if (hseq >= 0 && an->hseq == hseq) { +	    for (i = an->start.pos; i < an->end.pos; i++) { +		if (l->propBuf[i] & (PE_IMAGE | PE_ANCHOR | PE_FORM)) { +		    if (active) +			l->propBuf[i] |= PE_ACTIVE; +		    else +			l->propBuf[i] &= ~PE_ACTIVE; +		} +	    } +	    if (active) +		redrawLineRegion(buf, l, l->linenumber - tline + buf->rootY, +				 an->start.pos, an->end.pos); +	} +	else if (prevhseq >= 0 && an->hseq == prevhseq) { +	    if (active) +		redrawLineRegion(buf, l, l->linenumber - tline + buf->rootY, +				 an->start.pos, an->end.pos); +	} +    } +} + +static void +drawAnchorCursor(Buffer *buf)  { -    redrawNLine(buf, LASTLINE); +    Anchor *an; +    int hseq, prevhseq; +    int tline, eline; + +    if (!buf->firstLine || !buf->hmarklist) +	return; +    if (!buf->href && !buf->formitem) +	return; + +    an = retrieveCurrentAnchor(buf); +    if (!an) +	an = retrieveCurrentMap(buf); +    if (an) +	hseq = an->hseq; +    else +	hseq = -1; +    tline = buf->topLine->linenumber; +    eline = tline + buf->LINES; +    prevhseq = buf->hmarklist->prevhseq; + +    if (buf->href) { +	drawAnchorCursor0(buf, buf->href, hseq, prevhseq, tline, eline, 1); +	drawAnchorCursor0(buf, buf->href, hseq, -1, tline, eline, 0); +    } +    if (buf->formitem) { +	drawAnchorCursor0(buf, buf->formitem, hseq, prevhseq, tline, eline, 1); +	drawAnchorCursor0(buf, buf->formitem, hseq, -1, tline, eline, 0); +    } +    buf->hmarklist->prevhseq = hseq;  } -void +static void  redrawNLine(Buffer *buf, int n)  {      Line *l, *l0; @@ -536,7 +652,7 @@ redrawNLine(Buffer *buf, int n)  #define addKanji(pc,pr) (addChar((pc)[0],(pr)[0]),addChar((pc)[1],(pr)[1])) -Line * +static Line *  redrawLine(Buffer *buf, Line *l, int i)  {      int j, pos, rcol, ncol, delta; @@ -705,7 +821,7 @@ redrawLine(Buffer *buf, Line *l, int i)  }  #ifdef USE_IMAGE -Line * +static Line *  redrawLineImage(Buffer *buf, Line *l, int i)  {      int j, pos, rcol; @@ -775,7 +891,7 @@ redrawLineImage(Buffer *buf, Line *l, int i)  }  #endif -int +static int  redrawLineRegion(Buffer *buf, Line *l, int i, int bpos, int epos)  {      int j, pos, rcol, ncol, delta; @@ -928,7 +1044,7 @@ if (modeflag) { \      modeflag = FALSE; \  } -void +static void  do_effects(Lineprop m)  {      /* effect end */ @@ -973,7 +1089,7 @@ do_effects(Lineprop m)  }  #ifdef USE_ANSI_COLOR -void +static void  do_color(Linecolor c)  {      if (c & 0x8) @@ -1026,7 +1142,7 @@ addChar(char c, Lineprop mode)  	addch(' ');  } -GeneralList *message_list = NULL; +static GeneralList *message_list = NULL;  void  record_err_message(char *s) @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.168 2002/12/12 23:55:30 ukai Exp $ */ +/* $Id: main.c,v 1.169 2002/12/13 02:19:01 ukai Exp $ */  #define MAINPROGRAM  #include "fm.h"  #include <signal.h> @@ -988,7 +988,6 @@ main(int argc, char **argv, char **envp)      if (line_str) {  	_goLine(line_str);      } -    onA();      for (;;) {  	if (Currentbuf->submit) {  	    Anchor *a = Currentbuf->submit; @@ -1086,7 +1085,6 @@ keyPressEventProc(int c)  {      CurrentKey = c;      w3mFuncList[(int)GlobalKeymap[c]].func(); -    onA();  }  void @@ -1531,17 +1529,17 @@ srchcore(char *str, int (*func) (Buffer *, char *))      return result;  } -void +static void  disp_srchresult(int result, char *prompt, char *str)  {      if (str == NULL)  	str = "";      if (result & SR_NOTFOUND) -	disp_message(Sprintf("Not found: %s", str)->ptr, FALSE); +	disp_message(Sprintf("Not found: %s", str)->ptr, TRUE);      else if (result & SR_WRAPPED) -	disp_message(Sprintf("Search wrapped: %s", str)->ptr, FALSE); +	disp_message(Sprintf("Search wrapped: %s", str)->ptr, TRUE);      else if (show_srch_str) -	disp_message(Sprintf("%s%s", prompt, str)->ptr, FALSE); +	disp_message(Sprintf("%s%s", prompt, str)->ptr, TRUE);  }  static int @@ -1636,7 +1634,6 @@ isrch(int (*func) (Buffer *, char *), char *prompt)  	RESTORE_BUFPOSITION(&sbuf);      }      displayBuffer(Currentbuf, B_FORCE_REDRAW); -    onA();  }  void @@ -1648,13 +1645,14 @@ srch(int (*func) (Buffer *, char *), char *prompt)      str = inputStrHist(prompt, NULL, TextHist);      if (str != NULL && *str == '\0')  	str = SearchString; -    if (str == NULL) +    if (str == NULL) { +	displayBuffer(Currentbuf, B_NORMAL);  	return; +    }      result = srchcore(str, func);      if (result & SR_FOUND)  	clear_mark(Currentbuf->currentLine);      displayBuffer(Currentbuf, B_NORMAL); -    onA();      disp_srchresult(result, prompt, str);      searchRoutine = func;  } @@ -1709,7 +1707,6 @@ srch_nxtprv(int reverse)      if (result & SR_FOUND)  	clear_mark(Currentbuf->currentLine);      displayBuffer(Currentbuf, B_NORMAL); -    onA();      disp_srchresult(result, (reverse ? "Backward: " : "Forward: "),  		    SearchString);  } @@ -1858,7 +1855,8 @@ pipeBuf(void)      pushText(fileToDelete, tmpf);      buf = getpipe(myExtCommand(cmd, tmpf, TRUE)->ptr);      if (buf == NULL) { -	disp_message("Execution failed", FALSE); +	disp_message("Execution failed", TRUE); +	return;      }      else {  	buf->bufferprop |= (BP_INTERNAL | BP_NO_URL); @@ -1889,7 +1887,8 @@ pipesh(void)      }      buf = getpipe(cmd);      if (buf == NULL) { -	disp_message("Execution failed", FALSE); +	disp_message("Execution failed", TRUE); +	return;      }      else {  	buf->bufferprop |= (BP_INTERNAL | BP_NO_URL); @@ -1925,7 +1924,8 @@ readsh(void)      signal(SIGINT, prevtrap);      term_raw();      if (buf == NULL) { -	disp_message("Execution failed", FALSE); +	disp_message("Execution failed", TRUE); +	return;      }      else {  	buf->bufferprop |= (BP_INTERNAL | BP_NO_URL); @@ -2543,8 +2543,7 @@ _mark(void)  	return;      l = Currentbuf->currentLine;      l->propBuf[Currentbuf->pos] ^= PE_MARK; -    redrawLine(Currentbuf, l, l->linenumber - Currentbuf->topLine->linenumber -	       + Currentbuf->rootY); +    displayBuffer(Currentbuf, B_NORMAL);  }  /* Go to next mark */ @@ -3178,7 +3177,7 @@ _followForm(int submit)  	    disp_message_nsec("Read only field!", FALSE, 1, TRUE, FALSE);  	p = inputStrHist("TEXT:", fi->value ? fi->value->ptr : NULL, TextHist);  	if (p == NULL || fi->readonly) -	    return; +	    break;  	fi->value = Strnew_charp(p);  	formUpdateBuffer(a, Currentbuf, fi);  	if (fi->accept || fi->parent->nitems == 1) @@ -3192,7 +3191,7 @@ _followForm(int submit)  	p = inputFilenameHist("Filename:", fi->value ? fi->value->ptr : NULL,  			      NULL);  	if (p == NULL || fi->readonly) -	    return; +	    break;  	fi->value = Strnew_charp(p);  	formUpdateBuffer(a, Currentbuf, fi);  	if (fi->accept || fi->parent->nitems == 1) @@ -3203,12 +3202,12 @@ _followForm(int submit)  	    goto do_submit;  	if (fi->readonly) {  	    disp_message_nsec("Read only field!", FALSE, 1, TRUE, FALSE); -	    return; +	    break;  	}  	p = inputLine("Password:", fi->value ? fi->value->ptr : NULL,  		      IN_PASSWORD);  	if (p == NULL) -	    return; +	    break;  	fi->value = Strnew_charp(p);  	formUpdateBuffer(a, Currentbuf, fi);  	if (fi->accept) @@ -3227,7 +3226,7 @@ _followForm(int submit)  	    goto do_submit;  	if (fi->readonly) {  	    disp_message_nsec("Read only field!", FALSE, 1, TRUE, FALSE); -	    return; +	    break;  	}  	formRecheckRadio(a, Currentbuf, fi);  	break; @@ -3236,7 +3235,7 @@ _followForm(int submit)  	    goto do_submit;  	if (fi->readonly) {  	    disp_message_nsec("Read only field!", FALSE, 1, TRUE, FALSE); -	    return; +	    break;  	}  	fi->checked = !fi->checked;  	formUpdateBuffer(a, Currentbuf, fi); @@ -3335,91 +3334,6 @@ _followForm(int submit)      displayBuffer(Currentbuf, B_FORCE_REDRAW);  } -static void -drawAnchorCursor0(Buffer *buf, AnchorList *al, int hseq, int prevhseq, -		  int tline, int eline, int active) -{ -    int i, j; -    Line *l; -    Anchor *an; - -    l = buf->topLine; -    for (j = 0; j < al->nanchor; j++) { -	an = &al->anchors[j]; -	if (an->start.line < tline) -	    continue; -	if (an->start.line >= eline) -	    return; -	for (;; l = l->next) { -	    if (l == NULL) -		return; -	    if (l->linenumber == an->start.line) -		break; -	} -	if (hseq >= 0 && an->hseq == hseq) { -	    for (i = an->start.pos; i < an->end.pos; i++) { -		if (l->propBuf[i] & (PE_IMAGE | PE_ANCHOR | PE_FORM)) { -		    if (active) -			l->propBuf[i] |= PE_ACTIVE; -		    else -			l->propBuf[i] &= ~PE_ACTIVE; -		} -	    } -	    if (active) -		redrawLineRegion(buf, l, l->linenumber - tline + buf->rootY, -				 an->start.pos, an->end.pos); -	} -	else if (prevhseq >= 0 && an->hseq == prevhseq) { -	    if (active) -		redrawLineRegion(buf, l, l->linenumber - tline + buf->rootY, -				 an->start.pos, an->end.pos); -	} -    } -} - - -void -drawAnchorCursor(Buffer *buf) -{ -    Anchor *an; -    int hseq, prevhseq; -    int tline, eline; - -    if (!buf->firstLine || !buf->hmarklist) -	return; -    if (!buf->href && !buf->formitem) -	return; - -    an = retrieveCurrentAnchor(buf); -    if (!an) -	an = retrieveCurrentMap(buf); -    if (an) -	hseq = an->hseq; -    else -	hseq = -1; -    tline = buf->topLine->linenumber; -    eline = tline + buf->LINES; -    prevhseq = buf->hmarklist->prevhseq; - -    if (buf->href) { -	drawAnchorCursor0(buf, buf->href, hseq, prevhseq, tline, eline, 1); -	drawAnchorCursor0(buf, buf->href, hseq, -1, tline, eline, 0); -    } -    if (buf->formitem) { -	drawAnchorCursor0(buf, buf->formitem, hseq, prevhseq, tline, eline, 1); -	drawAnchorCursor0(buf, buf->formitem, hseq, -1, tline, eline, 0); -    } -    buf->hmarklist->prevhseq = hseq; -} - -/* underline an anchor if cursor is on the anchor. */ -void -onA(void) -{ -    drawAnchorCursor(Currentbuf); -    displayBuffer(Currentbuf, B_NORMAL); -} -  /* go to the top anchor */  void  topA(void) @@ -4197,10 +4111,8 @@ anchorMn(Anchor *(*menu_func) (Buffer *), int go)      Currentbuf->pos = po->pos;      arrangeCursor(Currentbuf);      displayBuffer(Currentbuf, B_NORMAL); -    if (go) { -	onA(); +    if (go)  	followA(); -    }  }  /* accesskey */ @@ -4294,7 +4206,7 @@ svBuf(void)      if (file == NULL || *file == '\0') {  	qfile = inputLineHist("Save buffer to: ", NULL, IN_COMMAND, SaveHist);  	if (qfile == NULL || *qfile == '\0') { -	    displayBuffer(Currentbuf, B_FORCE_REDRAW); +	    displayBuffer(Currentbuf, B_NORMAL);  	    return;  	}      } @@ -4309,8 +4221,10 @@ svBuf(void)  	    file = conv_to_system(file);  	}  	file = expandName(file); -	if (checkOverWrite(file) < 0) +	if (checkOverWrite(file) < 0) { +	    displayBuffer(Currentbuf, B_NORMAL);  	    return; +	}  	f = fopen(file, "w");  	is_pipe = FALSE;      } @@ -4548,7 +4462,7 @@ reload(void)  	    ldDL();  	    return;  	} -	disp_err_message("Can't reload...", FALSE); +	disp_err_message("Can't reload...", TRUE);  	return;      }      if (Currentbuf->currentURL.scheme == SCM_LOCAL && @@ -4564,8 +4478,10 @@ reload(void)  	    message("Rendering frame", 0, 0);  	    refresh();  	} -	if (!(buf = renderFrame(fbuf, 1))) +	if (!(buf = renderFrame(fbuf, 1))) { +	    displayBuffer(Currentbuf, B_NORMAL);  	    return; +	}  	if (fbuf->linkBuffer[LB_FRAME]) {  	    if (buf->sourcefile &&  		fbuf->linkBuffer[LB_FRAME]->sourcefile && @@ -4621,10 +4537,11 @@ reload(void)      if (multipart)  	unlink(request->body);      if (buf == NULL) { -	disp_err_message("Can't reload...", FALSE); +	disp_err_message("Can't reload...", TRUE);  	return;      }      else if (buf == NO_BUFFER) { +	displayBuffer(Currentbuf, B_NORMAL);  	return;      }      if (fbuf != NULL) @@ -4746,8 +4663,10 @@ rFrame(void)  	refresh();      }      buf = renderFrame(Currentbuf, 0); -    if (buf == NULL) +    if (buf == NULL) { +	displayBuffer(Currentbuf, B_NORMAL);  	return; +    }      buf->linkBuffer[LB_N_FRAME] = Currentbuf;      Currentbuf->linkBuffer[LB_FRAME] = buf;      pushBuffer(buf); @@ -4787,8 +4706,10 @@ invoke_browser(char *url)      else {  	browser = conv_to_system(browser);      } -    if (browser == NULL || *browser == '\0') +    if (browser == NULL || *browser == '\0') { +	displayBuffer(Currentbuf, B_NORMAL);  	return; +    }      if ((len = strlen(browser)) >= 2 && browser[len - 1] == '&' &&  	browser[len - 2] != '\\') { @@ -4807,7 +4728,7 @@ void  extbrz()  {      if (Currentbuf->bufferprop & BP_INTERNAL) { -	disp_err_message("Can't browse...", FALSE); +	disp_err_message("Can't browse...", TRUE);  	return;      }      if (Currentbuf->currentURL.scheme == SCM_LOCAL && @@ -5055,7 +4976,7 @@ process_mouse(int btn, int x, int y)  			     - Currentbuf->rootX - 1)  #endif  			)) { -			onA(); +			displayBuffer(Currentbuf, B_NORMAL);  			followTab(t);  		    }  		    if (buf == Currentbuf) @@ -5230,7 +5151,6 @@ movMs(void)  	     mouse_action.cursorY < LASTLINE) {  	cursorXY(Currentbuf, mouse_action.cursorX - Currentbuf->rootX,  		 mouse_action.cursorY - Currentbuf->rootY); -	onA();      }      displayBuffer(Currentbuf, B_NORMAL);  } @@ -5253,7 +5173,7 @@ menuMs(void)  	     mouse_action.cursorY < LASTLINE) {  	cursorXY(Currentbuf, mouse_action.cursorX - Currentbuf->rootX,  		 mouse_action.cursorY - Currentbuf->rootY); -	onA(); +	displayBuffer(Currentbuf, B_NORMAL);      }      mainMn();  } @@ -5291,7 +5211,7 @@ closeTMs(void)  void  dispVer()  { -    disp_message(Sprintf("w3m version %s", w3m_version)->ptr, FALSE); +    disp_message(Sprintf("w3m version %s", w3m_version)->ptr, TRUE);  }  void @@ -5299,11 +5219,11 @@ wrapToggle(void)  {      if (WrapSearch) {  	WrapSearch = FALSE; -	disp_message("Wrap search off", FALSE); +	disp_message("Wrap search off", TRUE);      }      else {  	WrapSearch = TRUE; -	disp_message("Wrap search on", FALSE); +	disp_message("Wrap search on", TRUE);      }  } @@ -5375,7 +5295,8 @@ execdict(char *word)  		      Str_form_quote(Strnew_charp(w))->ptr)->ptr;      buf = loadGeneralFile(dictcmd, NULL, NO_REFERER, 0, NULL);      if (buf == NULL) { -	disp_message("Execution failed", FALSE); +	disp_message("Execution failed", TRUE); +	return;      }      else {  	buf->filename = w; @@ -5584,12 +5505,12 @@ SigAlarm(SIGNAL_ARG)  	    mouse_inactive();  #endif  	w3mFuncList[CurrentAlarm.cmd].func(); +	displayBuffer(Currentbuf, B_NORMAL);  #ifdef USE_MOUSE  	if (use_mouse)  	    mouse_active();  #endif  	CurrentCmdData = NULL; -	onA();  	if (CurrentAlarm.status & AL_IMPLICIT) {  	    CurrentAlarm.buffer = Currentbuf;  	    CurrentAlarm.status = AL_IMPLICIT_DONE @@ -5714,6 +5635,7 @@ reinit()  #ifdef USE_MOUSE      if (!strcasecmp(resource, "MOUSE")) {  	initMouseAction(); +	displayBuffer(Currentbuf, B_NORMAL);  	return;      }  #endif @@ -1,4 +1,4 @@ -/* $Id: map.c,v 1.21 2002/12/09 15:51:09 ukai Exp $ */ +/* $Id: map.c,v 1.22 2002/12/13 02:19:01 ukai Exp $ */  /*   * client-side image maps   */ @@ -128,8 +128,8 @@ searchMapArea(Buffer *buf, MapList *ml, Anchor *a_img)      return n;  } -Str -getCurrentMapLabel(Buffer *buf) +MapArea * +retrieveCurrentMapArea(Buffer *buf)  {      Anchor *a_img, *a_form;      FormItemList *fi; @@ -137,7 +137,6 @@ getCurrentMapLabel(Buffer *buf)      ListItem *al;      MapArea *a;      int i, n; -    Str s = NULL;      a_img = retrieveCurrentImg(buf);      if (!(a_img && a_img->image && a_img->image->map)) @@ -157,20 +156,8 @@ getCurrentMapLabel(Buffer *buf)  	return NULL;      for (i = 0, al = ml->area->first; al != NULL; i++, al = al->next) {  	a = (MapArea *) al->ptr; -	if (!(a && i == n)) -	    continue; -	if (*a->alt) -	    s = Sprintf("[%s]", a->alt); -	if (*a->url) { -	    ParsedURL pu; -	    parseURL2(a->url, &pu, baseURL(buf)); -	    if (s) -		Strcat_char(s, ' '); -	    else -		s = Strnew(); -	    Strcat(s, parsedURL2Str(&pu)); -	} -	return s; +	if (a && i == n) +	    return a;      }      return NULL;  } @@ -1,4 +1,4 @@ -/* $Id: proto.h,v 1.70 2002/12/12 23:55:30 ukai Exp $ */ +/* $Id: proto.h,v 1.71 2002/12/13 02:19:01 ukai Exp $ */  /*    *   This file was automatically generated by version 1.7 of cextract.   *   Manual editing not recommended. @@ -271,16 +271,7 @@ extern int readBufferCache(Buffer *buf);  extern void fmTerm(void);  extern void fmInit(void);  extern void displayBuffer(Buffer *buf, int mode); -extern void redrawBuffer(Buffer *buf); -extern void redrawNLine(Buffer *buf, int n); -extern Line *redrawLine(Buffer *buf, Line *l, int i); -extern int redrawLineRegion(Buffer *buf, Line *l, int i, int bpos, int epos); -extern void do_effects(Lineprop m); -#ifdef USE_ANSI_COLOR -extern void do_color(Linecolor c); -#endif  extern void addChar(char c, Lineprop mode); -extern GeneralList *message_list;  extern void record_err_message(char *s);  extern Buffer *message_list_panel(void);  extern void message(char *s, int return_x, int return_y); @@ -390,7 +381,7 @@ extern Buffer *follow_map_panel(Buffer *buf, char *name);  #endif  #ifdef USE_IMAGE  extern int getMapXY(Buffer *buf, Anchor *a, int *x, int *y); -extern Str getCurrentMapLabel(Buffer *buf); +extern MapArea *retrieveCurrentMapArea(Buffer *buf);  #endif  extern Anchor *retrieveCurrentMap(Buffer *buf);  extern MapArea *newMapArea(char *url, char *target, char *alt, char *shape, | 
