--- FeedConverter.js.orig 2008-04-02 08:50:52.000000000 +0900 +++ FeedConverter.js 2008-04-04 18:34:43.000000000 +0900 @@ -390,7 +390,10 @@ var FeedResultService = { switch (handler) { case "client": + const PREF_SELECTED_APP_ARGS = "browser.feeds.handlers.application.args"; + var clientApp = prefs.getComplexValue(getPrefAppForType(feedType), Ci.nsILocalFile); + var feedhandlerArgs = safeGetCharPref(PREF_SELECTED_APP_ARGS, Ci.nsILocalFile); // For the benefit of applications that might know how to deal with more // URLs than just feeds, send feed: URLs in the following format: @@ -403,17 +406,24 @@ var FeedResultService = { Cc["@mozilla.org/network/io-service;1"]. getService(Ci.nsIIOService); var feedURI = ios.newURI(spec, null, null); - if (feedURI.schemeIs("http")) { + if (feedURI.schemeIs("http") && !(feedhandlerArgs)) { feedURI.scheme = "feed"; spec = feedURI.spec; } else spec = "feed:" + spec; - var ss = - Cc["@mozilla.org/browser/shell-service;1"]. - getService(Ci.nsIShellService); - ss.openApplicationWithURI(clientApp, spec); + var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); + file.initWithPath(clientApp.persistentDescriptor); + var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); + process.init(file); + + if (feedhandlerArgs) + var args = [feedhandlerArgs, spec]; + else + var args = [spec]; + + process.run(false, args, args.length); break; default: