diff -ur slrn-0.9.7.2.orig/src/art.c slrn-0.9.7.2/src/art.c
--- slrn-0.9.7.2.orig/src/art.c	Mon Aug 20 20:41:05 2001
+++ slrn-0.9.7.2/src/art.c	Thu Sep 20 18:11:01 2001
@@ -1023,6 +1023,49 @@
    return new_url;
 }
 
+static char *create_browser_command (char *cmd, char *url) /*{{{*/
+{
+   unsigned int len, urllen;
+   char ch, *buf, *bp, *p = cmd;
+   
+   len = strlen (cmd) + 1;
+   urllen = strlen (url);
+   while (0 != (ch = *p++))
+     {
+	if (ch == '%')
+	  {
+	     ch = *p++;
+	     if (ch == 's')
+	       len += urllen - 1;
+	     else if (ch != '%')
+	       {
+		  slrn_error ("Invalid Browser definition.");
+		  return NULL;
+	       }
+	  }
+     }
+   buf = bp = slrn_safe_malloc (len);
+   p = cmd;
+   while (0 != (ch = *p++))
+     {
+	if (ch == '%')
+	  {
+	     ch = *p++;
+	     if (ch == 's')
+	       {
+		  strcpy (bp, url); /* safe */
+		  bp += urllen;
+	       }
+	     else
+	       *bp++ = '%';
+	  }
+	else
+	  *bp++ = ch;
+     }
+   return buf;
+}
+/*}}}*/
+
 /* If want_edit is 1, url can be changed by user. */
 static void launch_url (char *url, int want_edit) /*{{{*/
 {
@@ -1113,7 +1156,7 @@
      return;
 
    if (has_percent != NULL)
-     command = slrn_strdup_printf (browser, url);
+     command = create_browser_command (browser, url);
    else
      /* Is this quoting ok on VMS and OS/2?? */
      command = slrn_strdup_printf ("%s '%s'", browser, url);
