2017-11-18 19:09:20 +03:00
/* SPDX-License-Identifier: LGPL-2.1+ */
2015-04-04 12:52:57 +03:00
# pragma once
/***
This file is part of systemd .
Copyright 2015 Lennart Poettering
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation ; either version 2.1 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
# include <sys/stat.h>
typedef enum RemoveFlags {
REMOVE_ONLY_DIRECTORIES = 1 ,
REMOVE_ROOT = 2 ,
REMOVE_PHYSICAL = 4 , /* if not set, only removes files on tmpfs, never physical file systems */
2015-04-04 20:22:00 +03:00
REMOVE_SUBVOLUME = 8 ,
2015-04-04 12:52:57 +03:00
} RemoveFlags ;
int rm_rf_children ( int fd , RemoveFlags flags , struct stat * root_dev ) ;
int rm_rf ( const char * path , RemoveFlags flags ) ;
2016-04-08 19:54:05 +03:00
/* Useful for usage with _cleanup_(), destroys a directory and frees the pointer */
2016-05-20 16:08:24 +03:00
static inline void rm_rf_physical_and_free ( char * p ) {
( void ) rm_rf ( p , REMOVE_ROOT | REMOVE_PHYSICAL ) ;
2016-04-08 19:54:05 +03:00
free ( p ) ;
}
2016-05-20 16:08:24 +03:00
DEFINE_TRIVIAL_CLEANUP_FUNC ( char * , rm_rf_physical_and_free ) ;