pocoproject/poco

Poco::Path::forDirectory("C:") throws if the path is disk-letter only

aleks-f opened this issue · 0 comments

Discussed in #4573

Originally posted by siren186 May 21, 2024
Is your feature request related to a problem? Please describe.

Poco::Path::forDirectory("G:\\abc\\"); // OK
Poco::Path::forDirectory("G:\\abc"); // OK
Poco::Path::forDirectory("G:\\"); // OK
Poco::Path::forDirectory("G:"); // Poco::PathSyntaxException


// Why not auto add backslash for directories
// If I use Poco::Path, I have to do something else like this:
std::string str = "G:";
if (!str.ends_with('\\'))
{
    str.push_back('\\'); // To ensure Poco::Path not crash for me
}
Poco::Path::forDirectory(str);

Describe the solution you'd like

// If Poco::Path can auto add backslash for me, It can make my code looks more clean.
std::string str = "G:";
Poco::Path::forDirectory(str); // Please do not throw any exception

Describe alternatives you've considered

Or Poco can add some methods just like Windows API PathAddBackslash do

LPWSTR PathAddBackslashW(
  [in, out] LPWSTR pszPath
);