diff options
author | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2009-01-09 16:30:28 +0000 |
---|---|---|
committer | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2009-01-09 16:30:28 +0000 |
commit | 3ab8f66d9afc44d39b6a7b95a9651d744b74bb23 (patch) | |
tree | 891b4e47521e088354daa3c1ea2aec32d7cbfd28 | |
parent | 5e0a47a2382b58e15336a742017a57e24611375f (diff) | |
download | libcg-3ab8f66d9afc44d39b6a7b95a9651d744b74bb23.tar.gz libcg-3ab8f66d9afc44d39b6a7b95a9651d744b74bb23.tar.xz libcg-3ab8f66d9afc44d39b6a7b95a9651d744b74bb23.zip |
libcgrouptest: open may fail wrt permissions, so use stat
From: Sudhir Kumar <skumar@linux.vnet.ibm.com>
The patch was adding a warning
"test_functions.c:359: warning: unused variable ‘ret’"
Hence resending correcting it.
open may fail in case there is not proper permissions and hence giving
a wrong result. This patch uses stat instead which is always better.
Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com>
Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@312 4f4bb910-9a46-0410-90c8-c897d4f1cd53
-rw-r--r-- | tests/test_functions.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/tests/test_functions.c b/tests/test_functions.c index fcdd308..6af9efd 100644 --- a/tests/test_functions.c +++ b/tests/test_functions.c @@ -288,7 +288,7 @@ void test_cgroup_delete_cgroup(int retcode, struct cgroup *cgrp, /* check group under mountpoint2 */ build_path(path1_group, mountpoint2, name, NULL); - if (group_exist(path1_group) == -1) + if (group_exist(path1_group) == ENOENT) message(i, PASS, "delete_cgroup()", retval, info[GRPDELETEDINFS]); else @@ -299,10 +299,10 @@ void test_cgroup_delete_cgroup(int retcode, struct cgroup *cgrp, /* check group under both mountpoints */ /* Check if the group deleted under both mountpoints */ build_path(path1_group, mountpoint, name, NULL); - if (group_exist(path1_group) == -1) { + if (group_exist(path1_group) == ENOENT) { build_path(path2_group, mountpoint2, name, NULL); - if (group_exist(path2_group) == -1) + if (group_exist(path2_group) == ENOENT) message(i, PASS, "delete_cgroup()", retval, info[GRPDELETEDINFS]); else @@ -347,11 +347,20 @@ void get_controllers(const char *name, int *exist) */ int group_exist(char *path_group) { - int ret; - ret = open(path_group, O_DIRECTORY); - if (ret == -1) - return ret; - return 0; + struct stat statbuf; + if (stat(path_group, &statbuf) == -1) { + /* Group deleted. OK */ + if (errno == ENOENT) + return ENOENT; + /* There is some other failure */ + printf("stat failed, return code is %d\n", errno); + return -1; + } + + if (S_ISDIR(statbuf.st_mode)) + return 0; + else + return -1; } /** |