瀏覽代碼

Fix return type of mkdir wrapper function

Patrick-Christopher Mattulat 2 年之前
父節點
當前提交
33261b7a35
共有 2 個文件被更改,包括 9 次插入6 次删除
  1. 1 1
      include/ls-std/io/File.hpp
  2. 8 5
      source/ls-std/io/File.cpp

+ 1 - 1
include/ls-std/io/File.hpp

@@ -99,7 +99,7 @@ namespace ls::std::io
 #ifdef _WIN32
       [[nodiscard]] static ::std::list<::std::string> _listWindows(const ::std::string &_path, bool withDirectories);
 #endif
-      [[nodiscard]] static int _mkdir(const ::std::string &_path);
+      [[nodiscard]] static bool _mkdir(const ::std::string &_path);
       [[nodiscard]] static ::std::string _normalizePath(::std::string _path);
       [[nodiscard]] static ::std::string _reduceSeparators(const ::std::string &_path);
       static void _remove(const ::std::string &_path);

+ 8 - 5
source/ls-std/io/File.cpp

@@ -182,7 +182,7 @@ time_t ls::std::io::File::lastModified()
 
 void ls::std::io::File::makeDirectory()
 {
-  if (ls::std::io::File::_mkdir(this->absoluteFilePath))
+  if (!ls::std::io::File::_mkdir(this->absoluteFilePath))
   {
     throw ls::std::core::FileOperationException{};
   }
@@ -198,9 +198,12 @@ void ls::std::io::File::makeDirectories()
   {
     currentHierarchy += subDirectory;
 
-    if (!ls::std::io::File::_exists(currentHierarchy))
+    if (!ls::std::io::File::_exists(currentHierarchy) && !currentHierarchy.empty())
     {
-      ls::std::io::File::_mkdir(currentHierarchy); // TODO: think of return type usage, maybe change to bool?
+      if (!ls::std::io::File::_mkdir(currentHierarchy))
+      {
+        throw ls::std::core::FileOperationException{}; // TODO: add missing test
+      }
     }
 
     currentHierarchy += separator;
@@ -564,7 +567,7 @@ time_t ls::std::io::File::_lastModified(const ::std::string &_path)
 
 #endif
 
-int ls::std::io::File::_mkdir(const ::std::string &_path)
+bool ls::std::io::File::_mkdir(const ::std::string &_path)
 {
   int result;
 
@@ -576,7 +579,7 @@ int ls::std::io::File::_mkdir(const ::std::string &_path)
   result = mkdir(_path.c_str(), 0777);
 #endif
 
-  return result;
+  return result == 0;
 }
 
 ::std::string ls::std::io::File::_normalizePath(::std::string _path)