Skip to content

Commit dd62740

Browse files
committed
concat_dir_file: avoid redundant directory separator
When adding "file.txt" to "some/path/" there is no need to add another '/'. This is a cosmetical change, for the benefit of user-facing output, since both Unix-like OSs and Windows tolerate the additional directory separators.
1 parent c7bb936 commit dd62740

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

src/util/file_util.cpp

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,28 @@ std::string concat_dir_file(
160160
const std::string &directory,
161161
const std::string &file_name)
162162
{
163-
#ifdef _WIN32
164-
return (file_name.size() > 1 && file_name[0] != '/' && file_name[1] == ':') ?
165-
file_name : directory + "\\" + file_name;
166-
#else
167-
return (!file_name.empty() && file_name[0]=='/') ?
168-
file_name : directory+"/"+file_name;
169-
#endif
163+
#ifdef _WIN32
164+
if(
165+
file_name.size() > 1 && file_name[0] != '/' && file_name[0] != '\\' &&
166+
file_name[1] == ':')
167+
{
168+
return file_name;
169+
}
170+
else if(
171+
!directory.empty() && (directory.back() == '/' || directory.back() == '\\'))
172+
{
173+
return directory + file_name;
174+
}
175+
else
176+
return directory + '\\' + file_name;
177+
#else
178+
if(!file_name.empty() && file_name[0] == '/')
179+
return file_name;
180+
else if(!directory.empty() && directory.back() == '/')
181+
return directory + file_name;
182+
else
183+
return directory + '/' + file_name;
184+
#endif
170185
}
171186

172187
bool is_directory(const std::string &path)

0 commit comments

Comments
 (0)