From 9deb40216e07db902d7895a8f9bb91b7336a034b Mon Sep 17 00:00:00 2001 From: mfranz Date: Sat, 26 Apr 2008 15:25:29 +0000 Subject: [PATCH] Nicolas: let SGPath::create_dir() return success/failure (for screenshot) --- simgear/misc/sg_path.cxx | 16 +++++++++------- simgear/misc/sg_path.hxx | 9 +++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/simgear/misc/sg_path.cxx b/simgear/misc/sg_path.cxx index ce466142..f5c7a8c8 100644 --- a/simgear/misc/sg_path.cxx +++ b/simgear/misc/sg_path.cxx @@ -165,7 +165,7 @@ string SGPath::base() const { } } -// get the extention (everything after the final ".") +// get the extension (everything after the final ".") // but make sure no "/" follows the "." character (otherwise it // is has to be a directory name containing a "."). string SGPath::extension() const { @@ -193,10 +193,10 @@ bool SGPath::exists() const { #endif -void SGPath::create_dir( mode_t mode ) { +int SGPath::create_dir( mode_t mode ) { string_list dirlist = sgPathSplit(dir()); if ( dirlist.empty() ) - return; + return -1; string path = dirlist[0]; string_list path_elements = sgPathBranchSplit(path); bool absolute = !path.empty() && path[0] == sgDirPathSep; @@ -216,19 +216,21 @@ void SGPath::create_dir( mode_t mode ) { dir.append(path_elements[i]); } if ( r == 0 ) { - return; // Directory already exists + return 0; // Directory already exists } if ( sgMkDir( dir.c_str(), mode) ) { SG_LOG( SG_IO, SG_ALERT, "Error creating directory: " + dir.str() ); - return; + return -2; } - for(;i < path_elements.size(); i++) { + for(; i < path_elements.size(); i++) { dir.append(path_elements[i]); if ( sgMkDir( dir.c_str(), mode) ) { SG_LOG( SG_IO, SG_ALERT, "Error creating directory: " + dir.str() ); - break; + return -2; } } + + return 0; } string_list sgPathBranchSplit( const string &dirpath ) { diff --git a/simgear/misc/sg_path.hxx b/simgear/misc/sg_path.hxx index e48e0564..a0636085 100644 --- a/simgear/misc/sg_path.hxx +++ b/simgear/misc/sg_path.hxx @@ -91,7 +91,7 @@ public: /** * Concatenate a string to the end of the path without inserting a * path separator. - * @param p addtional path suffix + * @param p additional path suffix */ void concat( const string& p ); @@ -114,8 +114,8 @@ public: string base() const; /** - * Get the extention part of the path (everything after the final ".") - * @return the extention string + * Get the extension part of the path (everything after the final ".") + * @return the extension string */ string extension() const; @@ -139,8 +139,9 @@ public: /** * Create the designated directory. + * @return 0 on success, or <0 on failure. */ - void create_dir(mode_t mode); + int create_dir(mode_t mode); private: -- 2.39.5