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!
This commit is contained in:
Omar Polo 2021-08-09 09:39:20 +00:00
parent 0cbb19a246
commit a3384b7461

View file

@ -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. // 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". // 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. // 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) { if (file_name.length() > 240) {
file_name = file_name.substr(0, file_name.length() - 15); file_name = file_name.substr(0, file_name.length() - 15);
} }