Added parameter mode and made more generic getDirContents function 20/73520/5
authorZbigniew Jasinski <z.jasinski@samsung.com>
Wed, 8 Jun 2016 10:03:26 +0000 (12:03 +0200)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Thu, 16 Jun 2016 12:15:26 +0000 (05:15 -0700)
Like previously, for files in dir use getFilesFromDirectory.
For listing directories only - getDirsFromDirectory.

Change-Id: Ic7ed060fcbaef90e3a6f15d8815a3f1ec522d062
Signed-off-by: Zbigniew Jasinski <z.jasinski@samsung.com>
src/common/filesystem.cpp
src/common/include/filesystem.h

index 5ad5232..6582104 100644 (file)
 namespace SecurityManager {
 namespace FS {
 
+FileNameVector getDirsFromDirectory(const std::string &path)
+{
+    return getDirContents(path, S_IFDIR);
+}
+
 FileNameVector getFilesFromDirectory(const std::string &path)
 {
+    return getDirContents(path, S_IFREG);
+}
+
+FileNameVector getDirContents(const std::string &path, const mode_t &mode)
+{
     FileNameVector result;
     dirent tmp, *ptr;
     int err;
@@ -68,9 +78,8 @@ FileNameVector getFilesFromDirectory(const std::string &path)
             ThrowMsg(FS::Exception::FileError, "Error reading: " << ptr->d_name);
         }
 
-        if (S_ISREG(finfo.st_mode)) {
+        if ((finfo.st_mode & S_IFMT) == mode)
             result.push_back(ptr->d_name);
-        }
     }
 
     return result;
index e2f15f8..9806edb 100644 (file)
@@ -34,7 +34,9 @@ namespace FS {
 
 typedef std::vector<std::string> FileNameVector;
 
+FileNameVector getDirContents(const std::string &path, const mode_t &mode);
 FileNameVector getFilesFromDirectory(const std::string &path);
+FileNameVector getDirsFromDirectory(const std::string &path);
 
 } // namespace FS
 } // nanespace SecurityManager