/* Useful for usage with _cleanup_(), unmounts, removes a directory and frees the pointer */
static inline char* umount_and_rmdir_and_free(char *p) {
+ if (!p)
+ return NULL;
+
PROTECT_ERRNO;
- if (p) {
- (void) umount_recursive(p, 0);
- (void) rmdir(p);
- }
+ (void) umount_recursive(p, 0);
+ (void) rmdir(p);
return mfree(p);
}
DEFINE_TRIVIAL_CLEANUP_FUNC(char*, umount_and_rmdir_and_free);
-static inline char *umount_and_free(char *p) {
+static inline char* umount_and_free(char *p) {
+ if (!p)
+ return NULL;
+
PROTECT_ERRNO;
- if (p)
- (void) umount_recursive(p, 0);
+ (void) umount_recursive(p, 0);
return mfree(p);
}
DEFINE_TRIVIAL_CLEANUP_FUNC(char*, umount_and_free);