From 4f5b72cf50855f4c75c8cc8a5ed34f53a11bfa7d Mon Sep 17 00:00:00 2001 From: Eduardo Casino Date: Tue, 24 May 2022 21:49:53 +0200 Subject: Do not uppercase volume names --- lfn.h | 4 ++-- sftsr.c | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lfn.h b/lfn.h index d58807e..df4d421 100644 --- a/lfn.h +++ b/lfn.h @@ -33,7 +33,7 @@ #ifdef __IN_SFTSR__ -static inline bool translate_filename_from_host(SHFLSTRING *, bool); +static inline bool translate_filename_from_host(SHFLSTRING *, bool, bool); static bool matches_8_3_wildcard(const char __far *, const char __far *); static int my_strrchr(const char __far *, char); @@ -325,7 +325,7 @@ static inline char *find_real_name( } d = _fstrcpy_local(dest, &shfldirinfo.dirinfo.name.ach); - translate_filename_from_host(&shfldirinfo.dirinfo.name, false); + translate_filename_from_host(&shfldirinfo.dirinfo.name, false, true); mangle_to_8_3_filename(hash, fcb_name, &shfldirinfo.dirinfo.name); if (match_to_8_3_filename(filename, fcb_name)) diff --git a/sftsr.c b/sftsr.c index 9282c58..f87aac0 100644 --- a/sftsr.c +++ b/sftsr.c @@ -235,12 +235,14 @@ static int my_strrchr(const char __far *str, char c) return last; } -static inline bool translate_filename_from_host(SHFLSTRING *str, bool case_insensitive) +static inline bool translate_filename_from_host(SHFLSTRING *str, bool case_insensitive, bool uppercase) { bool valid = utf8_to_local(&data, str->ach, str->ach, &str->u16Length); - valid = (nls_uppercase(str) || case_insensitive) && valid; - + if (uppercase) + { + valid = (nls_uppercase(str) || case_insensitive) && valid; + } return valid; } @@ -996,7 +998,7 @@ static vboxerr find_volume_label(SHFLROOT root) err = vbox_shfl_query_map_name(&data.vb, data.hgcm_client_id, root, &shflstr.shflstr); if (err) return err; - (void) translate_filename_from_host(&shflstr.shflstr, false); + (void) translate_filename_from_host(&shflstr.shflstr, false, false); dprintf("label: %s\n", shflstr.buf); @@ -1101,7 +1103,7 @@ static vboxerr find_next_from_vbox(unsigned openfile, char __far *path) dprintf(" Host short filename: '%s'\n", shfldirinfo.dirinfo.name.ach); } else { - valid = translate_filename_from_host(&shfldirinfo.dirinfo.name, data.drives[drive].case_insensitive); + valid = translate_filename_from_host(&shfldirinfo.dirinfo.name, data.drives[drive].case_insensitive, true); } if (valid) { -- cgit v1.2.3