dlls/shell32/shfldr_unixfs.c breaks non-GNU/Linux platforms
The following patches to dlls/shell32/shfldr_unixfs.c break FreeBSD and other non-GNU platforms: revision 1.70 date: 2006-01-31 17:24:37 +0000; author: julliard; state: Exp; lines: +1 -1 Michael Jung <mjung(a)iss.tu-darmstadt.de> unixfs: Only append '/' to base path if not already present in UNIXFS_get_unix_path. ---------------------------- revision 1.69 date: 2006-01-31 12:05:30 +0000; author: julliard; state: Exp; lines: +24 -64 Michael Jung <mjung(a)iss.tu-darmstadt.de> unixfs: Only resolve the 'dosdevices' based symbol links in UNIXFS_get_unix_path, but leave all others alone. The reason is that canonicalize_file_name() is not found during linking. The man page for this function states "The function is a GNU extension", so this clearly kills portability. :-( Would you mind having a look? Thanks, Gerald
Hi Gerald, On Wednesday 01 February 2006 16:25, you wrote:
The following patches to dlls/shell32/shfldr_unixfs.c break FreeBSD and other non-GNU platforms:
<snip>
The reason is that canonicalize_file_name() is not found during linking.
The man page for this function states "The function is a GNU extension", so this clearly kills portability. :-(
We could fall back to "realpath", if "canonicalize_file_name" is not available. However the man page on "realpath" states: "Never use this function. It is broken by design" Do you know of a function on BSD, which can be applied here? If all else fails, we'll have to re-implement path-canonicalization. But I would prefer to use a library function. Bye, -- Michael Jung mjung(a)iss.tu-darmstadt.de
Perhaps build a configurable option to use canonicalize_file_name if it exists, and fall back on realpath if it doesn't... realpath is supposed to be safe if you use necessary precautions... On Wed, 2006-02-01 at 17:45 +0100, Michael Jung wrote:
Hi Gerald,
On Wednesday 01 February 2006 16:25, you wrote:
The following patches to dlls/shell32/shfldr_unixfs.c break FreeBSD and other non-GNU platforms:
<snip>
The reason is that canonicalize_file_name() is not found during linking.
The man page for this function states "The function is a GNU extension", so this clearly kills portability. :-(
We could fall back to "realpath", if "canonicalize_file_name" is not available. However the man page on "realpath" states: "Never use this function. It is broken by design"
Do you know of a function on BSD, which can be applied here? If all else fails, we'll have to re-implement path-canonicalization. But I would prefer to use a library function.
Bye,
participants (3)
-
Coleman Kane -
Gerald Pfeifer -
Michael Jung