X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Futils.c;h=4b733fb5cc346ead97b928809c9056eb42290904;hb=fac26884aa477a653fb72cc009fb14f970833baf;hp=f9e6a99eafeec26afa4c7640f8a8d5a2c64178b1;hpb=3d07185530211f3a650a7218199af44d4c77bf13;p=lttng-tools.git diff --git a/src/common/utils.c b/src/common/utils.c index f9e6a99ea..4b733fb5c 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -1062,13 +1062,13 @@ end: /* * Try to remove a hierarchy of empty directories, recursively. Don't unlink - * any file. + * any file. Try to rmdir any empty directory within the hierarchy. */ LTTNG_HIDDEN int utils_recursive_rmdir(const char *path) { DIR *dir; - int dir_fd, ret = 0, closeret; + int dir_fd, ret = 0, closeret, is_empty = 1; struct dirent *entry; /* Open directory */ @@ -1098,15 +1098,14 @@ int utils_recursive_rmdir(const char *path) PATH_MAX - strlen(subpath) - 1); strncat(subpath, entry->d_name, PATH_MAX - strlen(subpath) - 1); - ret = utils_recursive_rmdir(subpath); - if (ret) { - goto end; + if (utils_recursive_rmdir(subpath)) { + is_empty = 0; } break; } case DT_REG: - ret = -EBUSY; - goto end; + is_empty = 0; + break; default: ret = -EINVAL; goto end; @@ -1117,7 +1116,7 @@ end: if (closeret) { PERROR("closedir"); } - if (!ret) { + if (is_empty) { DBG3("Attempting rmdir %s", path); ret = rmdir(path); }