From 901e29436d79a8d649280f007400c38ba609fdc5 Mon Sep 17 00:00:00 2001 From: Thomas Jarosch Date: Thu, 8 Jul 2010 16:25:25 +0200 Subject: [PATCH] Implement umask() --- src/filefunc.cpp | 10 ++++++++++ src/filefunc.hxx | 2 ++ test/test_filefunc.cpp | 9 +++++---- 3 files changed, 17 insertions(+), 4 deletions(-) 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) -- 1.7.1