summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorOmar Polo <op@omarpolo.com>2021-08-09 09:39:20 +0000
committerOmar Polo <op@omarpolo.com>2021-10-08 20:10:26 +0200
commita3384b7461005260d0dd5c8f05df28ee842442de (patch)
tree9e5bbd41c081a10743ad454f1294da6f4c3043d4 /platform
parent0cbb19a246b2a701dde848d86bff319b571efad7 (diff)
use .get_file() instead of basename(3)
On OpenBSD the compiler complains that calling basename(3) would lose const qualifier. basename(3) is defined as char *basename(char *); and can, accorgindly to the POSIX.1, modify the passed string. This uses the .get_file() method. The check is necessary because file_name could be a directory, in which case .get_file() would return an empty string. The .get_base_dir().get_file() idiom is already used. The usage of get_file() and the check were suggested by theraot, thanks!
Diffstat (limited to 'platform')
-rw-r--r--platform/linuxbsd/os_linuxbsd.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/platform/linuxbsd/os_linuxbsd.cpp b/platform/linuxbsd/os_linuxbsd.cpp
index 23e448fbd7..65a9f3b042 100644
--- a/platform/linuxbsd/os_linuxbsd.cpp
+++ b/platform/linuxbsd/os_linuxbsd.cpp
@@ -399,7 +399,10 @@ Error OS_LinuxBSD::move_to_trash(const String &p_path) {
// The trash can is successfully created, now we check that we don't exceed our file name length limit.
// If the file name is too long trim it so we can add the identifying number and ".trashinfo".
// Assumes that the file name length limit is 255 characters.
- String file_name = basename(p_path.utf8().get_data());
+ String file_name = p_path.get_file();
+ if (file_name.length() == 0) {
+ file_name = p_path.get_base_dir().get_file();
+ }
if (file_name.length() > 240) {
file_name = file_name.substr(0, file_name.length() - 15);
}