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 <[email protected]> Acked-by: Dhaval Giani <[email protected]> Acked-by: Balbir Singh <[email protected]> --- tests/test_functions.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) Index: trunk/tests/test_functions.c =================================================================== --- trunk.orig/tests/test_functions.c +++ trunk/tests/test_functions.c @@ -288,7 +288,7 @@ void test_cgroup_delete_cgroup(int retco /* 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 retco /* 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,21 @@ void get_controllers(const char *name, i */ int group_exist(char *path_group) { + struct stat statbuf; int ret; - ret = open(path_group, O_DIRECTORY); - if (ret == -1) - return ret; - return 0; + 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; } /** ------------------------------------------------------------------------------ Check out the new SourceForge.net Marketplace. It is the best place to buy or sell services for just about anything Open Source. http://p.sf.net/sfu/Xq1LFB _______________________________________________ Libcg-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libcg-devel
