]> granicus.if.org Git - p11-kit/commitdiff
common: Make p11_test_directory_delete() work recursively
authorDaiki Ueno <dueno@redhat.com>
Tue, 27 Feb 2018 13:57:20 +0000 (14:57 +0100)
committerDaiki Ueno <ueno@gnu.org>
Tue, 27 Feb 2018 15:33:59 +0000 (16:33 +0100)
common/test.c

index 86c8c52b50c5fe145eed00f67e92dfb5b7d48c18..e9177015386d1043667f19c28ed12bd828e1ed5f 100644 (file)
@@ -430,6 +430,8 @@ p11_test_directory_delete (const char *directory)
 {
        struct dirent *dp;
        DIR *dir;
+       char *path;
+       struct stat st;
 
        dir = opendir (directory);
        if (dir == NULL) {
@@ -442,7 +444,15 @@ p11_test_directory_delete (const char *directory)
                    strcmp (dp->d_name, "..") == 0)
                        continue;
 
-               p11_test_file_delete (directory, dp->d_name);
+               if (asprintf (&path, "%s/%s", directory, dp->d_name) < 0)
+                       assert_not_reached ();
+               if (stat (path, &st) < 0)
+                       assert_not_reached ();
+               if (S_ISDIR (st.st_mode))
+                       p11_test_directory_delete (path);
+               else
+                       p11_test_file_delete (directory, dp->d_name);
+               free (path);
        }
 
        closedir (dir);