shared: add terminal-util.[ch]
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "util.h"
|
||||
#include "terminal-util.h"
|
||||
#include "def.h"
|
||||
|
||||
static void test_one(const char *p) {
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "util.h"
|
||||
#include "macro.h"
|
||||
#include "virt.h"
|
||||
#include "terminal-util.h"
|
||||
|
||||
static void test_get_process_comm(void) {
|
||||
struct stat st;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "util.h"
|
||||
#include "terminal-util.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
char *p;
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
/***
|
||||
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 <stdio.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "terminal-util.h"
|
||||
#include "macro.h"
|
||||
#include "util.h"
|
||||
#include "log.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;
|
||||
}
|
||||
@@ -522,21 +522,6 @@ static void test_foreach_word_quoted(void) {
|
||||
true);
|
||||
}
|
||||
|
||||
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_memdup_multiply(void) {
|
||||
int org[] = {1, 2, 3};
|
||||
int *dup;
|
||||
@@ -981,38 +966,6 @@ static void test_readlink_and_make_absolute(void) {
|
||||
assert_se(rm_rf(tempdir, REMOVE_ROOT|REMOVE_PHYSICAL) >= 0);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
static void test_ignore_signals(void) {
|
||||
assert_se(ignore_signals(SIGINT, -1) >= 0);
|
||||
assert_se(kill(getpid(), SIGINT) >= 0);
|
||||
@@ -1525,7 +1478,6 @@ int main(int argc, char *argv[]) {
|
||||
test_cunescape();
|
||||
test_foreach_word();
|
||||
test_foreach_word_quoted();
|
||||
test_default_term_for_tty();
|
||||
test_memdup_multiply();
|
||||
test_hostname_is_valid();
|
||||
test_u64log2();
|
||||
@@ -1552,7 +1504,6 @@ int main(int argc, char *argv[]) {
|
||||
test_close_nointr();
|
||||
test_unlink_noerrno();
|
||||
test_readlink_and_make_absolute();
|
||||
test_read_one_char();
|
||||
test_ignore_signals();
|
||||
test_strshorten();
|
||||
test_strjoina();
|
||||
|
||||
Reference in New Issue
Block a user