On Mon, Mar 03, 2003 at 04:24:10PM +0100, Andrzej Pruszynski
wrote:> Hi,
>
> Here is the problem (syscall.c, function do_open) on NT, Win2K, WinXP,
> with stripped "/" for UNC path convention, detected in release
2.5.5,
> 2.5.6:
>
> int do_open(char *pathname, int flags, mode_t mode)
> {
> if (flags != O_RDONLY) {
> if (dry_run) return -1;
> CHECK_RO
> }
> #ifdef O_BINARY
> /* for Windows */
> flags |= O_BINARY;
> #endif
>
> /* some systems can't handle a double / */
> if (pathname[0] == '/' && pathname[1] == '/')
pathname++;
>
> return open(pathname, flags, mode);
> }
>
> I suggest the following fix, allowing files to be open even on WinNTs,
> if UNC path is provided:
>
> int do_open(char *pathname, int flags, mode_t mode)
> {
> if (flags != O_RDONLY) {
> if (dry_run) return -1;
> CHECK_RO
> }
> #ifdef O_BINARY
> /* for Windows */
> flags |= O_BINARY;
> #else
> /* some systems can't handle a double / */
> if (pathname[0] == '/' && pathname[1] == '/')
pathname++;
> #endif
>
> return open(pathname, flags, mode);
> }
I think this belongs in sanitize_path(), not here.
I know it shouldn't be dependent of O_BINARY.
It should probably be done only for those few systems that
have a problem with double leading //
--
________________________________________________________________
J.W. Schultz Pegasystems Technologies
email address: jw@pegasys.ws
Remember Cernan and Schmitt