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@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@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,
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,