Closed
Bug 155696
Opened 22 years ago
Closed 22 years ago
MOZ_PLUGIN_PATH should support colon-delimited PATH syntax
Categories
(Core Graveyard :: Plug-ins, defect, P2)
Core Graveyard
Plug-ins
Tracking
(Not tracked)
VERIFIED
FIXED
mozilla1.2final
People
(Reporter: dmosedale, Assigned: timeless)
References
Details
(Whiteboard: [PL2:P2])
Attachments
(1 file)
3.61 KB,
patch
|
ccarlen
:
review+
shaver
:
superreview+
dbaron
:
approval+
|
Details | Diff | Splinter Review |
The $MOZ_PLUGIN_PATH env var is currently expected to be just a single variable. It really should support the usual colon-delimited PATH syntax. I was reminded of this by the following comment in bug 13474: ------- Additional Comments From bzbarsky@mit.edu 2002-07-01 21:14 ------- Almost forgot. There's some really dumb PATH-walking code in uriloader/exthandler/unix/nsOSHelperAppService.cpp. It may make sense to prettify it some, make it a little more careful, and put it somewhere where this code can use it too...
Comment 1•22 years ago
|
||
assigning to serge
Assignee: beppe → serge
Priority: -- → P3
Target Milestone: --- → mozilla1.2beta
Comment 2•22 years ago
|
||
*** Bug 151208 has been marked as a duplicate of this bug. ***
Comment 3•22 years ago
|
||
This is actually for ALL platforms, Windows uses this variable too. With the current way we use the app directory service provider, this may be a little difficult to fix. Perhaps we can move the MOZ_PLUGIN_PATH key into it's own directory service provider?
OS: Linux → All
Hardware: PC → All
Whiteboard: [PL2:P2]
Comment 4•22 years ago
|
||
It's not so hard. That env variable is used in a context where the provider is being asked for a list of files, it is not a publicly available key. http://lxr.mozilla.org/mozilla/source/xpcom/io/nsAppFileLocationProvider.cpp#509 In this code, if the environment var was parsed as a list of files, it could return multiple files. It would make the iterator object a little more complex though.
Updated•22 years ago
|
Priority: P3 → P2
Comment 5•22 years ago
|
||
This is really bothering our (Ximian) users, its one of the most reported bugs after shipping Mozilla 1.0. Are there any patches floating around?
Comment 6•22 years ago
|
||
Conrad, you are that code owner, would you take this bug, please?
Comment 8•22 years ago
|
||
thanks.
Comment 9•22 years ago
|
||
ping?
Comment 10•22 years ago
|
||
So I'm guessing this won't be fixed in 1.2 either?
Comment 11•22 years ago
|
||
Since this is breaking plugins on EVERY mozilla release, I'd like to see it fixed for the next one. Adding nomination for mozilla1.2
Keywords: mozilla1.2
Assignee | ||
Comment 12•22 years ago
|
||
frb tested a version of this on linux
Comment 13•22 years ago
|
||
Yes, this seems to work fine if the user/mozilla wrapper script sets MOZ_PLUGIN_PATH
Comment on attachment 103216 [details] [diff] [review] create a special class which parses the first path by the os path delim >+ static const char* keys[] = { nsnull, NS_USER_PLUGINS_DIR, NS_APP_PLUGINS_DIR, nsnull }; >+ if (!*keys) >+ keys[0] = PR_GetEnv("MOZ_PLUGIN_PATH"); Why the condition? You're guaranteeing that it's going to be true in the line above it, no?
Assignee | ||
Comment 15•22 years ago
|
||
static const
char* keys[] = { nsnull, NS_USER_PLUGINS_DIR, NS_APP_PLUGINS_DIR, nsnull };
if (!*keys)
keys[0] = PR_GetEnv("MOZ_PLUGIN_PATH");
> Why the condition? You're guaranteeing that it's going to be true in the line
> above it, no?
no :), but perhaps if you saw it like this it'd make more sense:
if (!keys[0])
keys[0] = PR_GetEnv("MOZ_PLUGIN_PATH");
Assignee: ccarlen → timeless
OK, so maybe I'm a moron, but I'm still not seeing it. You set char * keys to { nsnull, NS_USER_PLUGINS_DID, ... }. That means that keys[0] is nsnull. This in turn means that the condition (!*keys) or, equivalently, the condition (!keys[0]) will always evaluate to true, since keys[0] will always be nsnull/0/false. Did I lose my mind?
Comment 17•22 years ago
|
||
shaver, that's a static. So after the first call to that function it will not be null anymore.
Comment on attachment 103216 [details] [diff] [review] create a special class which parses the first path by the os path delim None of that happened. sr=shaver.
Attachment #103216 -
Flags: superreview+
Comment 19•22 years ago
|
||
Comment on attachment 103216 [details] [diff] [review] create a special class which parses the first path by the os path delim >Index: mozilla/xpcom/io/nsAppFileLocationProvider.cpp > >+#if defined(XP_WIN) || defined(XP_OS2)/* Win32, Win16, and OS/2 */ >+#define PATH_SEPARATOR ';' >+#else /*if defined(XP_UNIX) || defined(XP_MAC) || defined(XP_BEOS)*/ Nice. Thanks for taking this. r=ccarlen One nit: remove the XP_MAC from the above comment. This doesn't apply to Mac and that definition, on 1st read, gave me a scare. >+#define PATH_SEPARATOR ':' >+#endif
Attachment #103216 -
Flags: review+
Comment 20•22 years ago
|
||
Comment on attachment 103216 [details] [diff] [review] create a special class which parses the first path by the os path delim >+ static const char* keys[] = { nsnull, NS_USER_PLUGINS_DIR, NS_APP_PLUGINS_DIR, nsnull }; >+ if (!*keys) >+ keys[0] = PR_GetEnv("MOZ_PLUGIN_PATH"); to eliminate an expansive |PR_GetEnv| call I would change it to something like this: if (!keys[0] && !(keys[0] = PR_GetEnv("MOZ_PLUGIN_PATH"))) { static const char nullstr = 0; keys[0] = &nullstr; }
Comment on attachment 103216 [details] [diff] [review] create a special class which parses the first path by the os path delim a=dbaron for trunk checkin
Attachment #103216 -
Flags: approval+
Assignee | ||
Comment 22•22 years ago
|
||
checked in
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Target Milestone: mozilla1.2beta → mozilla1.2final
Comment 23•22 years ago
|
||
verified that this works: chb@frodo:~/mozilla/opt/xpcom$ ls /tmp/p* /tmp/p1: nppdf.so /tmp/p2: libflashplayer.so $ MOZ_PLUGIN_PATH=/tmp/p1:/tmp/p2 ~/mozilla/opt/dist/bin/mozilla about:plugins then correctly showed both the PDF plugin and the Flash plugin. marking VERIFIED on linux using latest CVS (of the changed file only, other stuff is a bit older)
Status: RESOLVED → VERIFIED
Updated•2 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•