Printing with Acrobat Reader
Rick C. Petty
rick-freebsd at kiwi-computer.com
Thu Apr 12 15:51:05 UTC 2007
[cc: line snipped]
On Thu, Apr 12, 2007 at 04:28:37PM +0200, Oliver Fromme wrote:
>
> Alexander Leidinger wrote:
> > Oliver Fromme wrote:
> > > That's correct. Obviously Adobe Reader performs some kind
> > > of sanity check on the path (if one is given), and for some
> > > reason it always prepends /compat/linux in that case.
> >
> > No linux application does this, it's the kernel. It tries with the
> > compat path first and then with the normal path. I don't know why it
> > does not work in acroread, I never investigated this issue. An
> > application should not be able to know if the command is from compat
> > or not.
>
> Adobe Reader does. Dont ask me how and why, but it does.
> Any other explanation of the symptom is even less likely.
I get the sense that Acroread does something like the following:
opendir("/usr/bin") --> maps to /compat because /usr/bin exists there
repeat:
readdir() --> still reading from /compat/linux/usr/bin
"lpr" not found in /usr/bin/
I don't think our ABI layer checks for this kind of behavior. Because
/compat/linux/usr/bin was found, it doesn't try to look in /usr/bin. I've
seen this behavior in Acroread since version 7 and maybe even earlier, in
6-STABLE so it's not due to recent linux ABI changes.
Similarly, I've seen this behavior in linux-firefox. Sometimes after
running ffox I'll notice that this directory gets completely filled:
/compat/linux/home/$user/mozilla/firefox/$profilename/
and sometimes it doesn't. I end up doing "rm -rf /compat/linux/home" a
lot and trying to restart ffox until it works from /home/$user. My guess
is that the program picks up my profile in /home and reads most of the
files, but then tries to do a "mkdir -p" equivalent on /home/$user/...
but it's picking up in /compat somehow.
The ABI is performing similar to a unionfs but not quite, and maybe that's
the problem-- I think we want all writes to happen to the underlying
filesystem and all reads to check /compat first, but that may not be
trivial to implement at the VFS layer? I think I even tried using symlinks
from /compat/linux/home to /home but the linux program sees:
/home --> /home
-- Rick C. Petty
More information about the freebsd-emulation
mailing list