diff --git a/src/bin/urlwrapper.cpp b/src/bin/urlwrapper.cpp index ef2918645c..389549d9d3 100644 --- a/src/bin/urlwrapper.cpp +++ b/src/bin/urlwrapper.cpp @@ -222,6 +222,7 @@ UrlWrapper::ArgvReceived(int32 argc, char** argv) const char* failc = " || read -p 'Press any key'"; const char* pausec = " ; read -p 'Press any key'"; char* args[] = { (char *)"/bin/sh", (char *)"-c", NULL, NULL}; + status_t err; BPrivate::Support::BUrl url(argv[1]); @@ -503,6 +504,25 @@ UrlWrapper::ArgvReceived(int32 argc, char** argv) return; } + if (proto == "doi") { + BString url("http://dx.doi.org/"); + BString mimetype; + + url << full; + BPrivate::Support::BUrl u(url.String()); + args[0] = const_cast("urlwrapper"); //XXX + args[1] = (char*)u.String(); + args[2] = NULL; + mimetype = kURLHandlerSigBase; + mimetype += u.Proto(); + + err = be_roster->Launch(mimetype.String(), 1, args + 1); + if (err != B_OK && err != B_ALREADY_RUNNING) + err = be_roster->Launch(kAppSig, 1, args + 1); + // TODO: handle errors + return; + } + /* More ? diff --git a/src/bin/urlwrapper.rdef b/src/bin/urlwrapper.rdef index ca6dc2037f..26fd69f5d9 100644 --- a/src/bin/urlwrapper.rdef +++ b/src/bin/urlwrapper.rdef @@ -25,6 +25,7 @@ resource(1, "BEOS:FILE_TYPES") message "types" = "application/x-vnd.Be.URL.ssh", "types" = "application/x-vnd.Be.URL.ftp", "types" = "application/x-vnd.Be.URL.sftp", - "types" = "application/x-vnd.Be.URL.finger" + "types" = "application/x-vnd.Be.URL.finger", + "types" = "application/x-vnd.Be.URL.doi" };