X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fbasic%2Frm-rf.h;fp=src%2Fbasic%2Frm-rf.h;h=40b5b527d57265e98f7994dbdbea8eae82ab5f78;hb=c6ec3ad2eb8d451af61a6180047918092c71656e;hp=6d032689190266f9f6429d42f0deb9558c8fc631;hpb=c6ac7991dc7a5b7a35d446bf211c947611418b70;p=elogind.git diff --git a/src/basic/rm-rf.h b/src/basic/rm-rf.h index 6d0326891..40b5b527d 100644 --- a/src/basic/rm-rf.h +++ b/src/basic/rm-rf.h @@ -30,3 +30,12 @@ typedef enum RemoveFlags { int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev); int rm_rf(const char *path, RemoveFlags flags); + +/* Useful for usage with _cleanup_(), destroys a directory and frees the pointer */ +static inline void rm_rf_and_free(char *p) { + if (!p) + return; + (void) rm_rf(p, REMOVE_ROOT); + free(p); +} +DEFINE_TRIVIAL_CLEANUP_FUNC(char*, rm_rf_and_free);