2017-11-18 19:09:20 +03:00
/* SPDX-License-Identifier: LGPL-2.1+ */
2016-11-22 22:19:08 +03:00
/***
This file is part of systemd .
Copyright 2016 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/mount.h>
# include "log.h"
# include "mount-util.h"
# include "string-util.h"
2016-12-03 21:57:42 +03:00
static void test_mount_propagation_flags ( const char * name , int ret , unsigned long expected ) {
long unsigned flags ;
2016-11-22 22:19:08 +03:00
2017-11-07 16:04:20 +03:00
assert_se ( mount_propagation_flags_from_string ( name , & flags ) = = ret ) ;
2016-12-03 21:57:42 +03:00
if ( ret > = 0 ) {
const char * c ;
assert_se ( flags = = expected ) ;
c = mount_propagation_flags_to_string ( flags ) ;
if ( isempty ( name ) )
assert_se ( isempty ( c ) ) ;
else
assert_se ( streq ( c , name ) ) ;
}
2016-11-22 22:19:08 +03:00
}
int main ( int argc , char * argv [ ] ) {
log_set_max_level ( LOG_DEBUG ) ;
2016-12-03 21:57:42 +03:00
test_mount_propagation_flags ( " shared " , 0 , MS_SHARED ) ;
test_mount_propagation_flags ( " slave " , 0 , MS_SLAVE ) ;
test_mount_propagation_flags ( " private " , 0 , MS_PRIVATE ) ;
test_mount_propagation_flags ( NULL , 0 , 0 ) ;
test_mount_propagation_flags ( " " , 0 , 0 ) ;
test_mount_propagation_flags ( " xxxx " , - EINVAL , 0 ) ;
test_mount_propagation_flags ( " " , - EINVAL , 0 ) ;
2016-11-22 22:19:08 +03:00
return 0 ;
}