Hello,

Ok, so I realized that winebrowser is an actual program, not a script.
I fixed the bug, but I'm sending the patch here first so somebody can
look over it because I've never written more than a couple lines of C
before.

This patch allows commands with up to 4 arguments, such as "kfmclient
exec" to be used for winebrowser:

diff --git a/programs/winebrowser/main.c b/programs/winebrowser/main.c
index 690f931..600d06b 100644
--- a/programs/winebrowser/main.c
+++ b/programs/winebrowser/main.c
@@ -51,20 +51,39 @@ typedef LPSTR (*wine_get_unix_file_name_
/* try to launch an app from a comma separated string of app names */
static int launch_app( char *candidates, const char *argv1 )
{
-    char *app;
-    const char *argv_new[3];
+    char *app, *appname;
+    const char *argv_new[6];
+    int i1 = 0, i2 = 0, i3 = 0, len = 0;

    app = strtok( candidates, "," );
    while (app)
    {
-        argv_new[0] = app;
-        argv_new[1] = argv1;
-        argv_new[2] = NULL;
+        i2 = 0;
+        i3 = 0;
+        len = strlen(app);
+        appname = (char *)malloc(len);
+        for(i1 = 0; i1 < len && i3 < 4; i1++)
+        {
+            appname[i1] = app[i1];
+            if (app[i1] == ' ')
+            {
+                app[i1] = '\0';
+                argv_new[i3] = app + i2;
+                i3++;
+                i2 = i1 + 1;
+            }
+        }
+
+        appname[i1] = '\0';
+        argv_new[i3] = app+i2;
+        argv_new[i3+1] = argv1;
+        argv_new[i3+2] = NULL;

-        fprintf( stderr, "Considering: %s\n", app );
+        fprintf( stderr, "Considering: %s\n", appname );
        fprintf( stderr, "argv[1]: %s\n", argv1 );

        spawnvp( _P_OVERLAY, app, argv_new );  /* only returns on error */
+        free(appname);
        app = strtok( NULL, "," );  /* grab the next app */
    }
    fprintf( stderr, "winebrowser: could not find a suitable app to run\n" );

On 8/2/06, Yuriy <[EMAIL PROTECTED]> wrote:
Hi,

I noticed that winebrowser doesn't work with browsers/commands that
are more than one word.  For example, the command to run konqueror
with the webbrowsing profile on kubuntu is:

kfmclient openProfile webbrowsing [url]

Setting that to be the first attempted webbrowser in the registry:

[HKEY_USERS\S-1-5-4\Software\Wine\WineBrowser]
"Browsers"="kfmclient openProfile
webbrowsing,konqueror,firefox,mozilla,netscape,galeon,opera,dillo"

and running:
winebrowser http://www.winehq.org

yields this:
Considering: kfmclient openProfile webbrowsing
argv[1]: http://www.winehq.org
Considering: firefox
argv[1]: http://www.winehq.org

then it opens up with firefox.

Is this a bug?  Would it just be a matter of modifying the winebrowser
script to fix?

~Yuriy



Reply via email to