This patch hacks urlview-0.9 to add and document BROWSER support.
See the BROWSER page at http://www.tuxedo.org/~esr/BROWSER/ for discussion.
Diffs between last version checked in and current workfile(s):
--- README 2001/01/24 14:55:19 1.1
+++ README 2001/01/24 14:56:39
@@ -5,7 +5,8 @@
`urlview' is a curses program for extracting URLs from text files and
displaying a menu from which you can select a specific URL to view using
-your favorite browser program.
+your favorite browser program. It respects the BROWSER convention
+(see )
Requires: working regcomp() or GNU rx.
@@ -15,4 +16,6 @@
Thomas Roessler
July 4, 2000
+Eric S. Raymond
+Jan 24, 2001
--- sample.urlview 2001/01/24 14:55:41 1.1
+++ sample.urlview 2001/01/24 14:56:40
@@ -20,7 +20,8 @@
REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):]
# Command to invoke for selected URL. Use lynx, netscape, or url_handler.sh
-# shell script.
+# shell script. Alternatively, you can leave COMMAND unset and set the BROWSER
+# environment variable instead.
#COMMAND lynx %s
#COMMAND netscape -remote 'openURL(%s)'
--- urlview.c 2001/01/24 14:53:41 1.1
+++ urlview.c 2001/01/24 15:20:40
@@ -174,6 +174,7 @@
int optind = 1;
int reopen_tty = 0;
int is_filter = 0;
+ int noquote;
int expert = 0;
@@ -181,7 +182,19 @@
is_filter = 1;
strncpy (regexp, DEFAULT_REGEXP, sizeof (regexp) - 1);
- strncpy (command, DEFAULT_COMMAND, sizeof (command) - 1);
+
+ pc = getenv("BROWSER");
+ if (pc)
+ {
+ strncpy (command, pc, sizeof (command) - 1);
+ noquote = 1;
+ }
+ else
+ {
+ strncpy (command, DEFAULT_COMMAND, sizeof (command) - 1);
+ noquote = 0;
+ }
+ printf("Using %s\n", command);
/*** read the initialization file ***/
@@ -503,16 +516,28 @@
mvaddstr (LINES - 1, 0, "URL: ");
if (mutt_enter_string (buf, sizeof (buf), LINES - 1, 5, 0) == 0 && buf[0])
{
+ char *part;
+
free (url[current]);
url[current] = strdup (buf);
endwin ();
- if (strstr (command, "%s"))
- snprintf (buf, sizeof (buf), command, quote (scratch, sizeof (scratch), url[current]));
- else
- snprintf (buf, sizeof (buf), "%s %s", command, quote (scratch, sizeof (scratch), url[current]));
- printf ("Executing: %s...\n", buf);
- fflush (stdout);
- system (buf);
+
+ part = strtok(command, ":");
+ do {
+ if (noquote)
+ strncpy (scratch, url[current], sizeof (scratch));
+ else
+ quote (scratch, sizeof (scratch), url[current]);
+ if (strstr (part, "%s"))
+ snprintf (buf, sizeof (buf), part, scratch);
+ else
+ snprintf (buf, sizeof (buf), "%s %s", part, scratch);
+ printf ("Executing: %s...\n", buf);
+ fflush (stdout);
+ if (system (buf) == 0)
+ break;
+ } while
+ (part = strtok(command, NULL));
}
move (LINES - 1, 0);
clrtoeol ();
--- urlview.man 2001/01/24 14:56:16 1.1
+++ urlview.man 2001/01/24 15:23:31
@@ -59,11 +59,19 @@
.BR %s ,
it will be subsituted
with the URL that was requested, otherwise the URL is appended to
-the COMMAND string. The default COMMAND is:
+the COMMAND string separated by a space. The default COMMAND is:
.br
.sp
url_handler.sh %s
.PP
+Actually, \fIcommand\fP may consist of a colon-separated sequence of
+browser commands to be tried in order until one succeeds. This may
+help you if you routinely share your
+.I ~/.urlview
+file across systems; it can also be useful for specifying both X and
+console-based browsers so that urlview will do the right thing
+whichever environment it is invoked in.
+.PP
.B Note:
You should
.I never
@@ -80,6 +88,13 @@
system-wide urlview configuration file
.IP "~/.urlview"
urlview configuration file
+.SH ENVIRONMENT
+If the environment variable BROWSER exists and you have not specified
+COMMAND in your
+.IP "~/.urlview"
+file, the value of BROWSER is interpreted as though it were a COMMAND
+setting, except that urlview does not try to put quotes around %s
+substitutions.
.SH SEE ALSO
.PP
.BR printf (3),
End of diffs.