]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/terminal-util.h
sd-id128: make size constraints a bit more obvious
[thirdparty/systemd.git] / src / basic / terminal-util.h
CommitLineData
288a74cc
RC
1#pragma once
2
3/***
4 This file is part of systemd.
5
6 Copyright 2010 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
22#include <stdbool.h>
23#include <stdarg.h>
24#include <stdio.h>
25
26#include "macro.h"
27#include "time-util.h"
28
29#define ANSI_HIGHLIGHT_ON "\x1B[1;39m"
30#define ANSI_RED_ON "\x1B[31m"
31#define ANSI_HIGHLIGHT_RED_ON "\x1B[1;31m"
32#define ANSI_GREEN_ON "\x1B[32m"
33#define ANSI_HIGHLIGHT_GREEN_ON "\x1B[1;32m"
34#define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m"
35#define ANSI_HIGHLIGHT_BLUE_ON "\x1B[1;34m"
36#define ANSI_HIGHLIGHT_OFF "\x1B[0m"
37#define ANSI_ERASE_TO_END_OF_LINE "\x1B[K"
38
39int reset_terminal_fd(int fd, bool switch_to_text);
40int reset_terminal(const char *name);
41
42int open_terminal(const char *name, int mode);
43int acquire_terminal(const char *name, bool fail, bool force, bool ignore_tiocstty_eperm, usec_t timeout);
44int release_terminal(void);
45
46int terminal_vhangup_fd(int fd);
47int terminal_vhangup(const char *name);
48
49int chvt(int vt);
50
51int read_one_char(FILE *f, char *ret, usec_t timeout, bool *need_nl);
52int ask_char(char *ret, const char *replies, const char *text, ...) _printf_(3, 4);
53int ask_string(char **ret, const char *text, ...) _printf_(2, 3);
54
55int vt_disallocate(const char *name);
56
57char *resolve_dev_console(char **active);
58bool tty_is_vc(const char *tty);
59bool tty_is_vc_resolve(const char *tty);
60bool tty_is_console(const char *tty) _pure_;
61int vtnr_from_tty(const char *tty);
62const char *default_term_for_tty(const char *tty);
63
64void warn_melody(void);
65
66int make_stdio(int fd);
67int make_null_stdio(void);
68int make_console_stdio(void);
69
70int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char *format, va_list ap) _printf_(4,0);
71int status_printf(const char *status, bool ellipse, bool ephemeral, const char *format, ...) _printf_(4,5);
72
73int fd_columns(int fd);
74unsigned columns(void);
75int fd_lines(int fd);
76unsigned lines(void);
77void columns_lines_cache_reset(int _unused_ signum);
78
79bool on_tty(void);
80
81static inline const char *ansi_highlight(void) {
82 return on_tty() ? ANSI_HIGHLIGHT_ON : "";
83}
84
85static inline const char *ansi_highlight_red(void) {
86 return on_tty() ? ANSI_HIGHLIGHT_RED_ON : "";
87}
88
89static inline const char *ansi_highlight_green(void) {
90 return on_tty() ? ANSI_HIGHLIGHT_GREEN_ON : "";
91}
92
93static inline const char *ansi_highlight_yellow(void) {
94 return on_tty() ? ANSI_HIGHLIGHT_YELLOW_ON : "";
95}
96
97static inline const char *ansi_highlight_blue(void) {
98 return on_tty() ? ANSI_HIGHLIGHT_BLUE_ON : "";
99}
100
101static inline const char *ansi_highlight_off(void) {
102 return on_tty() ? ANSI_HIGHLIGHT_OFF : "";
103}
104
105int get_ctty_devnr(pid_t pid, dev_t *d);
106int get_ctty(pid_t, dev_t *_devnr, char **r);
107
108int getttyname_malloc(int fd, char **r);
109int getttyname_harder(int fd, char **r);
a07c35c3
LP
110
111int ptsname_namespace(int pty, char **ret);