X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Futils.cpp;h=ca6d6f346469c6f4f980e601f6339fd9f587083f;hp=acf7dcd1f66516a04ca8fdc928dc1ee0da4f513c;hb=e6fec68039fb5212993d687d352c540e407e6d96;hpb=0ba3e9d15af4e8c30eef5445d2b64fee4870505f diff --git a/source/utils.cpp b/source/utils.cpp index acf7dcd..ca6d6f3 100644 --- a/source/utils.cpp +++ b/source/utils.cpp @@ -1,13 +1,14 @@ /* $Id$ -This file is part of libmsppath -Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions +This file is part of libmspfs +Copyright © 2006-2008 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ #include -#include -#include +#include +#include +#include #ifndef WIN32 #include #else @@ -158,6 +159,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; @@ -181,7 +190,7 @@ Path relative(const Path &path, const Path &base) { Path::Iterator i=path.begin(); Path::Iterator j=base.begin(); - for(; (i!=path.end() && j!=base.end() && *i==*j); ++i,++j); + for(; (i!=path.end() && j!=base.end() && *i==*j); ++i, ++j) ; Path result; for(; j!=base.end(); ++j) @@ -224,4 +233,22 @@ 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 +} + +void chdir(const Path &path) +{ + if(::chdir(path.str().c_str())==-1) + throw SystemError("chdir failed", errno); +} + } // namespace Msp