[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-devel
Subject: re: Detecting Wine
From: "Dan Kegel" <dank () kegel ! com>
Date: 2008-09-30 12:34:28
Message-ID: a71bd89a0809300534u3f94b9cm5e6e8f9ce2de43ae () mail ! gmail ! com
[Download RAW message or body]
Mark W. wrote:
>As part of the installation process, under Windows our
>program does a full-disk search of all local hard drives,
>but ignoring network drives and removable media.
>Under Wine, this doesn't work too well, as there's not
>a one-to-one mapping between disks and drive letters,
>and there's usually at least one way to access the entire *nix
>filesystem. If someone's got a few network drives mounted,
>the installer could spend hours searching them.
We have a similar issue in Picasa. There, we try to
default to just searching the user's home directory
when running on Wine, and I think we blacklist
known do-not-search directories like /proc.
We have gone back and forth about whether to
follow symlinks; there are often symlinks to
network filesystems inside people's home directories.
The right thing to do is probably something like:
a) get the set of initial seeds by using the output
of the 'mount' command and ignoring anything with
a type field that is not a known local filesystem type
(e.g. ext2, ext3, ufs, reiserfs, xfs); you'll need to expand
this whitelist as customers complain about their pet filesystems
(And you'll need to ignore any that can't be mapped
to Wine paths, but people usually map Z: to /.)
(You could use /proc/mounts under Linux, but
better to use the standardized 'mount' command
or maybe /etc/mtab, otherwise your code will break
on MacOSX or Solaris.)
b) when recursing, and you find a reparse point aka symlink,
check the filesystem type of the symlink destination
before following it. You might need to get bug
http://bugs.winehq.org/show_bug.cgi?id=12401 fixed
before this works the windows way, but you could
probably do something wine-specific now by
converting each directory path you encounter
into a unix path, then using a unix api to check
whether it's a symbolic link. Bleah. Best way
to do that is to patch wine, and then you're part
way to fixing bug 12401 :-)
c) beware: Wine's implementation of FindFirstChange/FindNextChange
does not really work if you ask it to monitor two different
names for the same directory. See
http://bugs.winehq.org/show_bug.cgi?id=7216
- Dan
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic