next dos83 fixes namespace.c
All checks were successful
Source release / source-package (push) Successful in 42s

This commit is contained in:
Mario Fetka
2026-05-20 08:16:28 +02:00
parent 8fc9c9e8e6
commit c567f75fdb

View File

@@ -1518,7 +1518,37 @@ static int search_match(struct dirent *dirbuff,
XDPRINTF((8,0,"search_match, Name='%s' dname='%s'", name, dname));
if (!inode_search) {
if (namespace == NAME_DOS) {
flag = (*name != '.' && fn_dos_match_old(dname, entry, vol_options));
uint8 dosname[DOS83_NAME_MAX + 1];
char saved_dir[1024];
char *slash;
if (*name == '.') {
flag = 0;
} else {
/*
* ds->unixname currently points to the full directory path used
* during scanning. Convert it to the containing directory string
* expected by namedos.c.
*/
strncpy(saved_dir, (char *)ds->unixname, sizeof(saved_dir) - 1);
saved_dir[sizeof(saved_dir) - 1] = '\0';
slash = strrchr(saved_dir, '/');
if (slash)
*slash = '\0';
else
strcpy(saved_dir, ".");
flag = dos83_match_name_in_dir(saved_dir,
name,
entry,
vol_options,
dosname,
sizeof(dosname));
if (flag)
strmaxcpy(dname, (char *)dosname, size_dname - 1);
}
} else if (namespace == NAME_OS2) {
flag = (*name != '.' || (*(name+1) != '.' && *(name+1) != '\0' ))
&& fn_os2_match(dname, entry, vol_options);