[w3m-dev 03140] Forward: Bug#139305:

w3m: EXTERN_LINK does not work if href ends with ampersand
* main.c (invoke_browser): check bg by browser
From: Kiyokazu SUTO <suto@ks-and-ks.ne.jp>
This commit is contained in:
Fumitoshi UKAI
2002-03-22 15:35:44 +00:00
parent 7d9c4711a4
commit 69649838b1
2 changed files with 19 additions and 12 deletions
+7 -1
View File
@@ -1,3 +1,9 @@
2002-03-23 Kiyokazu SUTO <suto@ks-and-ks.ne.jp>
* [w3m-dev 03140] Forward: Bug#139305:
w3m: EXTERN_LINK does not work if href ends with ampersand
* main.c (invoke_browser): check bg by browser
2002-03-21 Fumitoshi UKAI <ukai@debian.or.jp> 2002-03-21 Fumitoshi UKAI <ukai@debian.or.jp>
* terms.c (term_title): use ttyf instead of stderr * terms.c (term_title): use ttyf instead of stderr
@@ -3281,4 +3287,4 @@
* release-0-2-1 * release-0-2-1
* import w3m-0.2.1 * import w3m-0.2.1
$Id: ChangeLog,v 1.359 2002/03/20 17:53:00 ukai Exp $ $Id: ChangeLog,v 1.360 2002/03/22 15:35:44 ukai Exp $
+12 -11
View File
@@ -1,4 +1,4 @@
/* $Id: main.c,v 1.91 2002/03/19 16:06:52 ukai Exp $ */ /* $Id: main.c,v 1.92 2002/03/22 15:35:44 ukai Exp $ */
#define MAINPROGRAM #define MAINPROGRAM
#include "fm.h" #include "fm.h"
#include <signal.h> #include <signal.h>
@@ -4439,7 +4439,7 @@ invoke_browser(char *url)
{ {
Str cmd; Str cmd;
char *browser = NULL; char *browser = NULL;
int bg = 0; int bg = 0, len;
CurrentKeyData = NULL; /* not allowed in w3m-control: */ CurrentKeyData = NULL; /* not allowed in w3m-control: */
browser = searchKeyData(); browser = searchKeyData();
@@ -4468,12 +4468,13 @@ invoke_browser(char *url)
if (browser == NULL || *browser == '\0') if (browser == NULL || *browser == '\0')
return; return;
cmd = myExtCommand(browser, shell_quote(url), FALSE); if ((len = strlen(browser)) >= 2 && browser[len - 1] == '&' &&
Strremovetrailingspaces(cmd); browser[len - 2] != '\\') {
if (Strlastchar(cmd) == '&') { browser = allocStr(browser, len - 2);
Strshrink(cmd, 1);
bg = 1; bg = 1;
} }
cmd = myExtCommand(browser, shell_quote(url), FALSE);
Strremovetrailingspaces(cmd);
fmTerm(); fmTerm();
mySystem(cmd->ptr, bg); mySystem(cmd->ptr, bg);
fmInit(); fmInit();
@@ -4988,10 +4989,10 @@ execCmd(void)
data = searchKeyData(); data = searchKeyData();
if (data == NULL || *data == '\0') { if (data == NULL || *data == '\0') {
data = inputStrHist("command [; ...]: ", "", TextHist); data = inputStrHist("command [; ...]: ", "", TextHist);
if (data == NULL) { if (data == NULL) {
displayBuffer(Currentbuf, B_NORMAL); displayBuffer(Currentbuf, B_NORMAL);
return; return;
} }
} }
/* data: FUNC [DATA] [; FUNC [DATA] ...] */ /* data: FUNC [DATA] [; FUNC [DATA] ...] */
while (*data) { while (*data) {
@@ -5042,7 +5043,7 @@ SigAlarm(SIGNAL_ARG)
CurrentCmdData = NULL; CurrentCmdData = NULL;
onA(); onA();
disp_message_nsec(Sprintf("%s %s", w3mFuncList[alarm_event.cmd].id, disp_message_nsec(Sprintf("%s %s", w3mFuncList[alarm_event.cmd].id,
CurrentCmdData ? CurrentCmdData : "")->ptr, CurrentCmdData ? CurrentCmdData : "")->ptr,
FALSE, alarm_sec - 1, FALSE, TRUE); FALSE, alarm_sec - 1, FALSE, TRUE);
if (alarm_status == AL_IMPLICIT) { if (alarm_status == AL_IMPLICIT) {
alarm_buffer = Currentbuf; alarm_buffer = Currentbuf;