fd9abdda70912b99b24e3bf1a38f26fde908a74cnd * Jakub Hrozek <jhrozek@redhat.com>
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd * Copyright (C) 2008 Red Hat
7fb4c0766e858653c9776474005a6ae6d94828afgryzor * see file 'COPYING' for use and warranty information
7fb4c0766e858653c9776474005a6ae6d94828afgryzor * This program is free software; you can redistribute it and/or
7fb4c0766e858653c9776474005a6ae6d94828afgryzor * modify it under the terms of the GNU General Public License as
96ad5d81ee4a2cc66a4ae19893efc8aa6d06fae7jailletc * published by the Free Software Foundation; version 3 or (at
7fb4c0766e858653c9776474005a6ae6d94828afgryzor * your option) any later version.
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * This program is distributed in the hope that it will be useful,
2e545ce2450a9953665f701bb05350f0d3f26275nd * but WITHOUT ANY WARRANTY; without even the implied warranty of
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * GNU General Public License for more details.
7fb4c0766e858653c9776474005a6ae6d94828afgryzor * You should have received a copy of the GNU General Public License
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen * along with this program; if not, write to the Free Software
3f08db06526d6901aa08c110b5bc7dde6bc39905nd * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create a temporary directory that we fill with stuff later on */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor dir_path = mkdtemp(talloc_asprintf(test_ctx, "%s/%s", TESTS_PATH, tpl_dir));
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh dst_path = mkdtemp(talloc_asprintf(test_ctx, "%s/%s", TESTS_PATH, tpl_dir));
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* OK this is crude but since the functions to remove tree are under test.. */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor cmd = talloc_asprintf(test_ctx, "/bin/rm -rf %s\n", dir_path);
7fb4c0766e858653c9776474005a6ae6d94828afgryzor DEBUG(SSSDBG_CRIT_FAILURE, "Removing [%s] failed.\n", dir_path);
7fb4c0766e858653c9776474005a6ae6d94828afgryzor cmd = talloc_asprintf(test_ctx, "/bin/rm -rf %s\n", dst_path);
7fb4c0766e858653c9776474005a6ae6d94828afgryzor DEBUG(SSSDBG_CRIT_FAILURE, "Removing [%s] failed.\n", dst_path);
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* clean up */
7fb4c0766e858653c9776474005a6ae6d94828afgryzorstatic int create_simple_file(const char *name, const char *content)
7fb4c0766e858653c9776474005a6ae6d94828afgryzor fail_unless(getcwd(origpath, PATH_MAX) == origpath, "Cannot getcwd\n");
7fb4c0766e858653c9776474005a6ae6d94828afgryzor DEBUG(SSSDBG_FUNC_DATA, "About to delete %s\n", dir_path);
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create a file */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create a subdir and file inside it */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create another subdir, empty this time */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* go back */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* and finally wipe it out.. */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* check if really gone */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor fail_unless(ret == -1, "directory still there after remove_tree\n");
7fb4c0766e858653c9776474005a6ae6d94828afgryzor fail_unless(getcwd(origpath, PATH_MAX) == origpath, "Cannot getcwd\n");
7fb4c0766e858653c9776474005a6ae6d94828afgryzor DEBUG(SSSDBG_FUNC_DATA, "About to delete %s\n", dir_path);
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create a file */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create a subdir and file inside it */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create another subdir, empty this time */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* go back */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* and finally wipe it out.. */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* check if really gone */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor fail_unless(ret == 0, "unable to delete root directory\n");
7fb4c0766e858653c9776474005a6ae6d94828afgryzor fail_unless(getcwd(origpath, PATH_MAX) == origpath, "Cannot getcwd\n");
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create a file */
7fb4c0766e858653c9776474005a6ae6d94828afgryzor /* create a subdir and file inside it */
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh /* go back */
0d0ba3a410038e179b695446bb149cce6264e0abnd /* and finally copy.. */
ac082aefa89416cbdc9a1836eaf3bed9698201c8humbedooh ret = copy_tree(dir_path, dst_path, 0700, uid, gid);
0d0ba3a410038e179b695446bb149cce6264e0abnd /* check if really copied */
0d0ba3a410038e179b695446bb149cce6264e0abnd fail_unless(ret == 0, "destination directory not there\n");
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh tmp = talloc_asprintf(test_ctx, "%s/bar", dst_path);
205f749042ed530040a4f0080dbcb47ceae8a374rjung ret = check_and_open_readonly(tmp, &fd, uid, gid, S_IFREG|S_IRWXU, 0);
errno = 0;
errno = 0;
errno = 0;