From: Thomas Jarosch Date: Thu, 8 Jul 2010 14:25:25 +0000 (+0200) Subject: Implement umask() X-Git-Tag: v2.6~52 X-Git-Url: http://developer.intra2net.com/git/?a=commitdiff_plain;h=901e29436d79a8d649280f007400c38ba609fdc5;p=libi2ncommon Implement umask() --- diff --git a/src/filefunc.cpp b/src/filefunc.cpp index 908b693..a753324 100644 --- a/src/filefunc.cpp +++ b/src/filefunc.cpp @@ -859,4 +859,14 @@ bool chdir(const std::string &path, std::string *error) return false; } +/** + Set file mode creation mask + @param mask Creation mask + @return Previous creation mask (function call always succeeds) +*/ +mode_t umask(mode_t mask) +{ + return ::umask(mask); +} + } // eo namespace I2n diff --git a/src/filefunc.hxx b/src/filefunc.hxx index 453c1d3..d901e8d 100644 --- a/src/filefunc.hxx +++ b/src/filefunc.hxx @@ -184,6 +184,8 @@ bool rmdir(const std::string &path, std::string *error=NULL); std::string getcwd(); bool chdir(const std::string &path, std::string *error=NULL); +mode_t umask(mode_t mask); + } #endif diff --git a/test/test_filefunc.cpp b/test/test_filefunc.cpp index dda31db..c137b5a 100644 --- a/test/test_filefunc.cpp +++ b/test/test_filefunc.cpp @@ -385,15 +385,16 @@ BOOST_AUTO_TEST_CASE(DirectoryCreatePermission) { string dirname = "test_directory"; - // TODO: Save and fix umask + // Save and fix umask + mode_t previous_mask = I2n::umask(0); I2n::rmdir (dirname); BOOST_CHECK_EQUAL(true, I2n::mkdir(dirname, 0770)); - // TODO: Enable check - // BOOST_CHECK_EQUAL(0770, Stat(dirname).mode()); + BOOST_CHECK_EQUAL(0770, Stat(dirname).mode()); I2n::rmdir (dirname); - // TODO: Restore umask + // Restore umask + I2n::umask(previous_mask); } BOOST_AUTO_TEST_CASE(ChangeDirectory)