* path.cc (path_conv::check): Reset FH_CYGDRIVE if iterating through path.
This commit is contained in:
parent
a0c1938145
commit
a12a3466b1
@ -1,3 +1,8 @@
|
|||||||
|
2001-12-06 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
|
* path.cc (path_conv::check): Reset FH_CYGDRIVE if iterating through
|
||||||
|
path.
|
||||||
|
|
||||||
2001-12-06 Christopher Faylor <cgf@redhat.com>
|
2001-12-06 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
* path.cc (path_conv::check): Don't complain if /dev/x/foo when x
|
* path.cc (path_conv::check): Don't complain if /dev/x/foo when x
|
||||||
|
@ -100,7 +100,7 @@ struct symlink_info
|
|||||||
int is_symlink;
|
int is_symlink;
|
||||||
bool ext_tacked_on;
|
bool ext_tacked_on;
|
||||||
int error;
|
int error;
|
||||||
BOOL case_clash;
|
bool case_clash;
|
||||||
int check (char *path, const suffix_info *suffixes, unsigned opt);
|
int check (char *path, const suffix_info *suffixes, unsigned opt);
|
||||||
BOOL case_check (char *path);
|
BOOL case_check (char *path);
|
||||||
};
|
};
|
||||||
@ -401,7 +401,7 @@ path_conv::check (const char *src, unsigned opt,
|
|||||||
path_flags = 0;
|
path_flags = 0;
|
||||||
known_suffix = NULL;
|
known_suffix = NULL;
|
||||||
fileattr = (DWORD) -1;
|
fileattr = (DWORD) -1;
|
||||||
case_clash = FALSE;
|
case_clash = false;
|
||||||
devn = unit = 0;
|
devn = unit = 0;
|
||||||
root_dir[0] = '\0';
|
root_dir[0] = '\0';
|
||||||
fs_name[0] = '\0';
|
fs_name[0] = '\0';
|
||||||
@ -479,10 +479,16 @@ path_conv::check (const char *src, unsigned opt,
|
|||||||
if (error)
|
if (error)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* devn should not be a device. If it is, then stop parsing now. */
|
if (devn == FH_CYGDRIVE)
|
||||||
if (devn != FH_BAD)
|
|
||||||
{
|
{
|
||||||
if (devn != FH_CYGDRIVE)
|
if (component)
|
||||||
|
devn = FH_BAD;
|
||||||
|
fileattr = !unit ? FILE_ATTRIBUTE_DIRECTORY
|
||||||
|
: GetFileAttributes (full_path);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
/* devn should not be a device. If it is, then stop parsing now. */
|
||||||
|
else if (devn != FH_BAD)
|
||||||
{
|
{
|
||||||
fileattr = 0;
|
fileattr = 0;
|
||||||
if (component)
|
if (component)
|
||||||
@ -490,10 +496,6 @@ path_conv::check (const char *src, unsigned opt,
|
|||||||
error = ENOTDIR;
|
error = ENOTDIR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (!component)
|
|
||||||
fileattr = !unit ? FILE_ATTRIBUTE_DIRECTORY
|
|
||||||
: GetFileAttributes (full_path);
|
|
||||||
goto out; /* Found a device. Stop parsing. */
|
goto out; /* Found a device. Stop parsing. */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -502,9 +504,10 @@ path_conv::check (const char *src, unsigned opt,
|
|||||||
/* Eat trailing slashes */
|
/* Eat trailing slashes */
|
||||||
char *dostail = strchr (full_path, '\0');
|
char *dostail = strchr (full_path, '\0');
|
||||||
|
|
||||||
/* If path is only a drivename, Windows interprets it as the current working
|
/* If path is only a drivename, Windows interprets it as the
|
||||||
directory on this drive instead of the root dir which is what we want. So
|
current working directory on this drive instead of the root
|
||||||
we need the trailing backslash in this case. */
|
dir which is what we want. So we need the trailing backslash
|
||||||
|
in this case. */
|
||||||
while (dostail > full_path + 3 && (*--dostail == '\\'))
|
while (dostail > full_path + 3 && (*--dostail == '\\'))
|
||||||
*tail = '\0';
|
*tail = '\0';
|
||||||
|
|
||||||
@ -537,7 +540,6 @@ path_conv::check (const char *src, unsigned opt,
|
|||||||
if (!component)
|
if (!component)
|
||||||
case_clash = TRUE;
|
case_clash = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(opt & PC_SYM_IGNORE))
|
if (!(opt & PC_SYM_IGNORE))
|
||||||
{
|
{
|
||||||
if (!component)
|
if (!component)
|
||||||
@ -692,8 +694,8 @@ out:
|
|||||||
update_fs_info (path);
|
update_fs_info (path);
|
||||||
if (!fs_name[0])
|
if (!fs_name[0])
|
||||||
{
|
{
|
||||||
set_has_acls (FALSE);
|
set_has_acls (false);
|
||||||
set_has_buggy_open (FALSE);
|
set_has_buggy_open (false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -701,7 +703,7 @@ out:
|
|||||||
debug_printf ("root_dir(%s), this->path(%s), set_has_acls(%d)",
|
debug_printf ("root_dir(%s), this->path(%s), set_has_acls(%d)",
|
||||||
root_dir, this->path, fs_flags & FS_PERSISTENT_ACLS);
|
root_dir, this->path, fs_flags & FS_PERSISTENT_ACLS);
|
||||||
if (!allow_smbntsec && is_remote_drive)
|
if (!allow_smbntsec && is_remote_drive)
|
||||||
set_has_acls (FALSE);
|
set_has_acls (false);
|
||||||
else
|
else
|
||||||
set_has_acls (fs_flags & FS_PERSISTENT_ACLS);
|
set_has_acls (fs_flags & FS_PERSISTENT_ACLS);
|
||||||
/* Known file systems with buggy open calls. Further explanation
|
/* Known file systems with buggy open calls. Further explanation
|
||||||
@ -1022,10 +1024,10 @@ win32_device_name (const char *src_path, char *win32_path,
|
|||||||
devn = get_device_number (src_path, win32_path, unit);
|
devn = get_device_number (src_path, win32_path, unit);
|
||||||
|
|
||||||
if (devn == FH_BAD)
|
if (devn == FH_BAD)
|
||||||
return FALSE;
|
return false;
|
||||||
|
|
||||||
if ((devfmt = windows_device_names[FHDEVN (devn)]) == NULL)
|
if ((devfmt = windows_device_names[FHDEVN (devn)]) == NULL)
|
||||||
return FALSE;
|
return false;
|
||||||
switch (devn)
|
switch (devn)
|
||||||
{
|
{
|
||||||
case FH_RANDOM:
|
case FH_RANDOM:
|
||||||
@ -1724,7 +1726,7 @@ mount_info::read_mounts (reg_key& r)
|
|||||||
mount_flags = subkey.get_int ("flags", 0);
|
mount_flags = subkey.get_int ("flags", 0);
|
||||||
|
|
||||||
/* Add mount_item corresponding to registry mount point. */
|
/* Add mount_item corresponding to registry mount point. */
|
||||||
res = mount_table->add_item (native_path, posix_path, mount_flags, FALSE);
|
res = mount_table->add_item (native_path, posix_path, mount_flags, false);
|
||||||
if (res && get_errno () == EMFILE)
|
if (res && get_errno () == EMFILE)
|
||||||
break; /* The number of entries exceeds MAX_MOUNTS */
|
break; /* The number of entries exceeds MAX_MOUNTS */
|
||||||
}
|
}
|
||||||
@ -2187,7 +2189,7 @@ int
|
|||||||
mount_info::del_item (const char *path, unsigned flags, int reg_p)
|
mount_info::del_item (const char *path, unsigned flags, int reg_p)
|
||||||
{
|
{
|
||||||
char pathtmp[MAX_PATH];
|
char pathtmp[MAX_PATH];
|
||||||
int posix_path_p = FALSE;
|
int posix_path_p = false;
|
||||||
|
|
||||||
/* Something's wrong if path is NULL or empty. */
|
/* Something's wrong if path is NULL or empty. */
|
||||||
if (path == NULL || *path == 0 || !isabspath (path))
|
if (path == NULL || *path == 0 || !isabspath (path))
|
||||||
@ -2533,14 +2535,14 @@ set_symlink_ea (const char* frompath, const char* topath)
|
|||||||
if (!NTWriteEA (frompath, SYMLINK_EA_NAME, topath, strlen (topath) + 1))
|
if (!NTWriteEA (frompath, SYMLINK_EA_NAME, topath, strlen (topath) + 1))
|
||||||
{
|
{
|
||||||
debug_printf ("Cannot save symlink in EA");
|
debug_printf ("Cannot save symlink in EA");
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a symlink from FROMPATH to TOPATH. */
|
/* Create a symlink from FROMPATH to TOPATH. */
|
||||||
|
|
||||||
/* If TRUE create symlinks as Windows shortcuts, if FALSE create symlinks
|
/* If TRUE create symlinks as Windows shortcuts, if false create symlinks
|
||||||
as normal files with magic number and system bit set. */
|
as normal files with magic number and system bit set. */
|
||||||
int allow_winsymlinks = TRUE;
|
int allow_winsymlinks = TRUE;
|
||||||
|
|
||||||
@ -2900,7 +2902,7 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt)
|
|||||||
|
|
||||||
pflags &= ~PATH_SYMLINK;
|
pflags &= ~PATH_SYMLINK;
|
||||||
|
|
||||||
case_clash = FALSE;
|
case_clash = false;
|
||||||
|
|
||||||
while (suffix.next ())
|
while (suffix.next ())
|
||||||
{
|
{
|
||||||
@ -2984,7 +2986,7 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
file_not_symlink:
|
file_not_symlink:
|
||||||
is_symlink = FALSE;
|
is_symlink = false;
|
||||||
syscall_printf ("not a symlink");
|
syscall_printf ("not a symlink");
|
||||||
res = 0;
|
res = 0;
|
||||||
break;
|
break;
|
||||||
@ -2997,7 +2999,7 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt)
|
|||||||
|
|
||||||
/* Check the correct case of the last path component (given in DOS style).
|
/* Check the correct case of the last path component (given in DOS style).
|
||||||
Adjust the case in this->path if pcheck_case == PCHECK_ADJUST or return
|
Adjust the case in this->path if pcheck_case == PCHECK_ADJUST or return
|
||||||
FALSE if pcheck_case == PCHECK_STRICT.
|
false if pcheck_case == PCHECK_STRICT.
|
||||||
Dont't call if pcheck_case == PCHECK_RELAXED.
|
Dont't call if pcheck_case == PCHECK_RELAXED.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -3027,7 +3029,7 @@ symlink_info::case_check (char *path)
|
|||||||
/* If check is set to STRICT, a wrong case results
|
/* If check is set to STRICT, a wrong case results
|
||||||
in returning a ENOENT. */
|
in returning a ENOENT. */
|
||||||
if (pcheck_case == PCHECK_STRICT)
|
if (pcheck_case == PCHECK_STRICT)
|
||||||
return FALSE;
|
return false;
|
||||||
|
|
||||||
/* PCHECK_ADJUST adjusts the case in the incoming
|
/* PCHECK_ADJUST adjusts the case in the incoming
|
||||||
path which points to the path in *this. */
|
path which points to the path in *this. */
|
||||||
@ -3541,7 +3543,7 @@ cwdstuff::get_hash ()
|
|||||||
void
|
void
|
||||||
cwdstuff::init ()
|
cwdstuff::init ()
|
||||||
{
|
{
|
||||||
lock = new_muto (FALSE, "cwd");
|
lock = new_muto (false, "cwd");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get initial cwd. Should only be called once in a
|
/* Get initial cwd. Should only be called once in a
|
||||||
|
Loading…
x
Reference in New Issue
Block a user