static int farm_format(struct siocb *iocb) { char path[PATH_MAX]; unsigned ret; const uint8_t name[] = "farm"; dprintf("try get a clean store\n"); snprintf(path, sizeof(path), "%s", obj_path); ret = rmdir_r(path); if (ret && ret != -ENOENT) { eprintf("failed to remove %s: %s\n", path, strerror(-ret)); return SD_RES_EIO; } if (mkdir(path, def_dmode) < 0) { eprintf("%m\n"); return SD_RES_EIO; } if (set_cluster_store(name) < 0) return SD_RES_EIO; trunk_reset(); return SD_RES_SUCCESS; }
int default_cleanup(void) { rmdir_r(stale_dir); if (mkdir(stale_dir, 0755) < 0) { eprintf("%m\n"); return SD_RES_EIO; } return SD_RES_SUCCESS; }
int main(int argc, char **argv) { if (argc != 2) { usage(); return -1; } rmdir_r(argv[1]); return 0; }
int default_format(void) { unsigned ret; dprintf("try get a clean store\n"); ret = rmdir_r(obj_path); if (ret && ret != -ENOENT) { eprintf("failed to remove %s: %s\n", obj_path, strerror(-ret)); return SD_RES_EIO; } if (mkdir(obj_path, def_dmode) < 0) { eprintf("%m\n"); return SD_RES_EIO; } return SD_RES_SUCCESS; }
/* Purge directory recursively */ int purge_directory(const char *dir_path) { int ret = 0; struct stat s; DIR *dir; struct dirent *d; char path[PATH_MAX]; dir = opendir(dir_path); if (!dir) { if (errno != ENOENT) sd_err("failed to open %s: %m", dir_path); return -errno; } while ((d = readdir(dir))) { if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, "..")) continue; snprintf(path, sizeof(path), "%s/%s", dir_path, d->d_name); ret = stat(path, &s); if (ret) { sd_err("failed to stat %s: %m", path); goto out; } if (S_ISDIR(s.st_mode)) ret = rmdir_r(path); else ret = unlink(path); if (ret != 0) { sd_err("failed to remove %s %s: %m", S_ISDIR(s.st_mode) ? "directory" : "file", path); goto out; } } out: closedir(dir); return ret; }