From: Jaemin Ryu Date: Wed, 2 Jan 2019 01:44:18 +0000 (+0900) Subject: Add create(int flags, mode_t mode) to File class X-Git-Tag: submit/tizen/20190219.012108~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c8a4b1e482d7ae81b8afd4b3e300e8f6165f1d86;p=platform%2Fcore%2Fsecurity%2Fklay.git Add create(int flags, mode_t mode) to File class Change-Id: Ie01c1d7861d29220762c4df7aea8fffca533d283 Signed-off-by: Jaemin Ryu --- diff --git a/include/klay/filesystem.h b/include/klay/filesystem.h index 3cc60c8..27a28b3 100644 --- a/include/klay/filesystem.h +++ b/include/klay/filesystem.h @@ -98,6 +98,7 @@ public: off_t size() const; void create(mode_t mode); + void create(int flags, mode_t mode); void open(int flags); void read(void *buffer, const size_t size) const; void write(const void *buffer, const size_t size) const; diff --git a/src/filesystem.cpp b/src/filesystem.cpp index 80fd074..fa8484c 100644 --- a/src/filesystem.cpp +++ b/src/filesystem.cpp @@ -196,6 +196,24 @@ void File::create(mode_t mode) } } +void File::create(int flags, mode_t mode) +{ + if (descriptor != -1) { + close(); + } + + while (1) { + descriptor = ::open(path.c_str(), O_CREAT | flags, mode); + if (descriptor == -1) { + if (errno == EINTR) { + continue; + } + throw runtime::Exception(runtime::GetSystemErrorMessage()); + } + return; + } +} + void File::open(int flags) { if (descriptor != -1) {