Add is_dir and get_home_dir functions
authorMikko Rasa <tdb@tdb.fi>
Wed, 27 Feb 2008 10:00:55 +0000 (10:00 +0000)
committerMikko Rasa <tdb@tdb.fi>
Wed, 27 Feb 2008 10:00:55 +0000 (10:00 +0000)
source/utils.cpp
source/utils.h

index 721fc69249a98f8d7a85a471eb39b6db167bf9a8..18784b3a423bb8b5d165c79ef95d72db0d594877 100644 (file)
@@ -158,6 +158,14 @@ bool exists(const Path &path)
        return access(path.str().c_str(), F_OK)==0;
 }
 
+bool is_dir(const Path &path)
+{
+       struct stat st;
+       if(stat(path, st)==0)
+               return S_ISDIR(st.st_mode);
+       return false;
+}
+
 Filename splitext(const string &fn)
 {
        Filename result;
@@ -224,4 +232,16 @@ Path getcwd()
        return ::getcwd(buf, sizeof(buf));
 }
 
+Path get_home_dir()
+{
+#ifndef WIN32
+       const char *home=getenv("HOME");
+       if(home)
+               return home;
+       return ".";
+#else
+       return ".";
+#endif
+}
+
 } // namespace Msp
index 47efcacd9ddb24e299411793ca745ada759ac829..db6a32c74fcc684369f9345486bcabde28a02939 100644 (file)
@@ -53,6 +53,9 @@ std::string basename(const std::string &);
 /// Tests for existence of a file
 bool exists(const Path &path);
 
+/// Tests whether a path refers to an existing directory
+bool is_dir(const Path &paht);
+
 /**
 Gets information about a file.  Returns 0 on success or -1 on error.  This
 version can be used to check for file existence and get information in one
@@ -68,6 +71,9 @@ struct stat stat(const Path &fn);
 
 Path getcwd();
 
+/// Returns the user's home directory
+Path get_home_dir();
+
 inline bool is_windows_drive(const std::string &p)
 { return (p.size()==2 && ((p[0]>='A' && p[0]<='Z') || (p[0]>='a' && p[0]<='z')) && p[1]==':'); }