]> git.mxchange.org Git - simgear.git/commitdiff
Add a function to create aa new directory
authorehofman <ehofman>
Sat, 17 Dec 2005 15:06:56 +0000 (15:06 +0000)
committerehofman <ehofman>
Sat, 17 Dec 2005 15:06:56 +0000 (15:06 +0000)
simgear/misc/sg_path.cxx
simgear/misc/sg_path.hxx

index 54f7138dbcde9167cb979b3a93a74a769107c340..dd0b70683e1f5049f32157ef3a074669e7b1885a 100644 (file)
 #include <simgear/compiler.h>
 
 #include <simgear_config.h>
+#include <simgear/debug/logstream.hxx>
 #include <stdio.h>
+#include <sys/stat.h>
+#include <sys/stat.h>
 
 #include "sg_path.hxx"
 
@@ -183,6 +186,23 @@ bool SGPath::exists() const {
 }
 
 
+void SGPath::create_dir( mode_t mode ) {
+    string_list dirlist = sgPathSplit(dir());
+    SGPath dir = dirlist[0];
+    int i;
+    for(i=1; dir.exists() && i < dirlist.size(); i++) {
+        dir.add(dirlist[i]);
+    }
+    for(;i < dirlist.size(); i++) {
+        string subdir = dirlist[i];
+        if ( mkdir( subdir.c_str(), mode) ) {
+            SG_LOG( SG_IO, SG_ALERT, "Error creating directory: " + dir.str() );
+            break;
+        }
+        dir.add(subdir);
+    }
+}
+
 string_list sgPathSplit( const string &search_path ) {
     string tmp = search_path;
     string_list result;
index 263024934faa07f26cbb1c8aede570ef7d512cca..2921ac27b4a6f5126c7e5fa651f3cc94da5d0cdd 100644 (file)
@@ -29,6 +29,7 @@
 #ifndef _SG_PATH_HXX
 #define _SG_PATH_HXX
 
+#include <sys/types.h>
 
 #include <simgear/compiler.h>
 #include STL_STRING
@@ -132,6 +133,11 @@ public:
      */
     bool exists() const;
 
+    /**
+     * Create the designated directory.
+     */
+    void create_dir(mode_t mode);
+
 private:
 
     void fix();