2015-04-11 00:15:59 +03:00
/***
This file is part of systemd .
Copyright 2010 Lennart Poettering
Copyright 2013 Thomas H . P . Andersen
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 <stdbool.h>
2015-11-17 00:09:36 +03:00
# include <stdio.h>
2015-04-11 00:15:59 +03:00
2015-10-26 20:05:03 +03:00
# include "fd-util.h"
# include "fileio.h"
# include "log.h"
2015-04-11 00:15:59 +03:00
# include "macro.h"
2015-10-26 20:05:03 +03:00
# include "terminal-util.h"
2015-04-11 00:15:59 +03:00
# include "util.h"
static void test_default_term_for_tty ( void ) {
puts ( default_term_for_tty ( " /dev/tty23 " ) ) ;
puts ( default_term_for_tty ( " /dev/ttyS23 " ) ) ;
puts ( default_term_for_tty ( " /dev/tty0 " ) ) ;
puts ( default_term_for_tty ( " /dev/pty0 " ) ) ;
puts ( default_term_for_tty ( " /dev/pts/0 " ) ) ;
puts ( default_term_for_tty ( " /dev/console " ) ) ;
puts ( default_term_for_tty ( " tty23 " ) ) ;
puts ( default_term_for_tty ( " ttyS23 " ) ) ;
puts ( default_term_for_tty ( " tty0 " ) ) ;
puts ( default_term_for_tty ( " pty0 " ) ) ;
puts ( default_term_for_tty ( " pts/0 " ) ) ;
puts ( default_term_for_tty ( " console " ) ) ;
}
static void test_read_one_char ( void ) {
_cleanup_fclose_ FILE * file = NULL ;
char r ;
bool need_nl ;
char name [ ] = " /tmp/test-read_one_char.XXXXXX " ;
int fd ;
fd = mkostemp_safe ( name , O_RDWR | O_CLOEXEC ) ;
assert_se ( fd > = 0 ) ;
file = fdopen ( fd , " r+ " ) ;
assert_se ( file ) ;
assert_se ( fputs ( " c \n " , file ) > = 0 ) ;
rewind ( file ) ;
assert_se ( read_one_char ( file , & r , 1000000 , & need_nl ) > = 0 ) ;
assert_se ( ! need_nl ) ;
assert_se ( r = = ' c ' ) ;
assert_se ( read_one_char ( file , & r , 1000000 , & need_nl ) < 0 ) ;
rewind ( file ) ;
assert_se ( fputs ( " foobar \n " , file ) > = 0 ) ;
rewind ( file ) ;
assert_se ( read_one_char ( file , & r , 1000000 , & need_nl ) < 0 ) ;
rewind ( file ) ;
assert_se ( fputs ( " \n " , file ) > = 0 ) ;
rewind ( file ) ;
assert_se ( read_one_char ( file , & r , 1000000 , & need_nl ) < 0 ) ;
unlink ( name ) ;
}
int main ( int argc , char * argv [ ] ) {
log_parse_environment ( ) ;
log_open ( ) ;
test_default_term_for_tty ( ) ;
test_read_one_char ( ) ;
return 0 ;
}