Cygwin: mount: define binary mount as default
Commit c1023ee353
changed the way
path_conv::binmode() works. Rather than returning three states,
O_BINARY, O_TEXT, 0, it only returned 2 states, O_BINARY, O_TEXT. Since
mounts are only binary if they are explicitely mounted binary by setting
the MOUNT_BINARY flag, textmode is default.
This introduced a new bug. When inheriting stdio HANDLEs from native
Windows processes, the fhandler and its path_conv are created from a
device struct only. None of the path or mount flags get set this way.
So the mount flags are 0 and path_conv::binmode() returned 0.
After the path_conv::binmode() change it returned O_TEXT since, as
explained above, the default mount mode is textmode.
Rather than just enforcing binary mode for path_conv's created from
device structs, this patch changes the default mount mode to binary:
Replace MOUNT_BINARY flag with MOUNT_TEXT flag with opposite meaning.
Drop all explicit setting of MOUNT_BINARY. Drop local set_flags
function, it doesn't add any value.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
@@ -174,9 +174,7 @@ class path_conv
|
||||
int has_buggy_basic_info () const {return fs.has_buggy_basic_info ();}
|
||||
int binmode () const
|
||||
{
|
||||
if (mount_flags & MOUNT_BINARY)
|
||||
return O_BINARY;
|
||||
return O_TEXT;
|
||||
return (mount_flags & MOUNT_TEXT) ? O_TEXT : O_BINARY;
|
||||
}
|
||||
int issymlink () const {return path_flags & PATH_SYMLINK;}
|
||||
int is_lnk_symlink () const {return path_flags & PATH_LNK;}
|
||||
|
Reference in New Issue
Block a user