Skip to content

Commit b4aaea0

Browse files
committed
tcgetattr_dump.c
1 parent 84839c8 commit b4aaea0

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

posix/curses/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@
1010
1. [clear](clear.c)
1111
1. [Check key pressed](check_key_pressed.c)
1212
1. Canonical. TODO. <http://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html>
13+
1. [tcgetattr_dump.c](tcgetattr_dump.c)

posix/curses/tcgetattr_dump.c

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/* Commented out prints are not implemented in Linux,
2+
* they are documented in man tcgetattr */
3+
4+
/* GNU extensions needed for several of the values. */
5+
#define _GNU_SOURCE
6+
#include <curses.h>
7+
#include <stdio.h>
8+
#include <inttypes.h>
9+
#include <termios.h>
10+
#include <unistd.h>
11+
12+
#define PRINT(field, flag) printf(#field "." #flag " %zu\n", (uintmax_t)termio.field & flag);
13+
14+
int main(void) {
15+
struct termios termio;
16+
tcgetattr(fileno(stdin), &termio);
17+
PRINT(c_iflag, ICRNL);
18+
PRINT(c_iflag, IGNBRK);
19+
PRINT(c_iflag, IGNCR);
20+
PRINT(c_iflag, IMAXBEL);
21+
PRINT(c_iflag, INLCR);
22+
PRINT(c_iflag, INPCK);
23+
PRINT(c_iflag, ISTRIP);
24+
PRINT(c_iflag, IUCLC);
25+
PRINT(c_iflag, IUTF8);
26+
PRINT(c_iflag, IXANY);
27+
PRINT(c_iflag, IXOFF);
28+
PRINT(c_iflag, IXON);
29+
puts("");
30+
31+
PRINT(c_oflag, BSDLY);
32+
PRINT(c_oflag, CRDLY);
33+
PRINT(c_oflag, FFDLY);
34+
PRINT(c_oflag, NLDLY);
35+
PRINT(c_oflag, OCRNL);
36+
PRINT(c_oflag, OFDEL);
37+
PRINT(c_oflag, OFILL);
38+
PRINT(c_oflag, OLCUC);
39+
PRINT(c_oflag, ONLCR);
40+
PRINT(c_oflag, ONLRET);
41+
PRINT(c_oflag, ONOCR);
42+
PRINT(c_oflag, OPOST);
43+
PRINT(c_oflag, TABDLY);
44+
PRINT(c_oflag, VTDLY);
45+
puts("");
46+
47+
PRINT(c_cflag, CBAUD);
48+
PRINT(c_cflag, CBAUDEX);
49+
PRINT(c_cflag, CIBAUD);
50+
PRINT(c_cflag, CLOCAL);
51+
PRINT(c_cflag, CMSPAR);
52+
PRINT(c_cflag, CREAD);
53+
PRINT(c_cflag, CRTSCTS);
54+
PRINT(c_cflag, CSIZE);
55+
PRINT(c_cflag, CSTOPB);
56+
PRINT(c_cflag, HUPCL);
57+
/* PRINT(c_cflag, LOBLK); */
58+
PRINT(c_cflag, PARENB);
59+
PRINT(c_cflag, PARODD);
60+
puts("");
61+
62+
PRINT(c_lflag, ISIG);
63+
PRINT(c_lflag, ICANON);
64+
PRINT(c_lflag, XCASE);
65+
PRINT(c_lflag, ECHO);
66+
PRINT(c_lflag, ECHOE);
67+
PRINT(c_lflag, ECHOK);
68+
PRINT(c_lflag, ECHONL);
69+
PRINT(c_lflag, ECHOCTL);
70+
PRINT(c_lflag, ECHOPRT);
71+
PRINT(c_lflag, ECHOKE);
72+
/* PRINT(c_lflag, DEFECHO); */
73+
PRINT(c_lflag, FLUSHO);
74+
PRINT(c_lflag, NOFLSH);
75+
PRINT(c_lflag, TOSTOP);
76+
PRINT(c_lflag, PENDIN);
77+
PRINT(c_lflag, IEXTEN);
78+
PRINT(c_lflag, VDISCARD);
79+
/* PRINT(c_lflag, VDSUSP); */
80+
PRINT(c_lflag, VEOF);
81+
PRINT(c_lflag, VEOL);
82+
PRINT(c_lflag, VEOL2);
83+
PRINT(c_lflag, VERASE);
84+
PRINT(c_lflag, VINTR);
85+
PRINT(c_lflag, VKILL);
86+
PRINT(c_lflag, VLNEXT);
87+
PRINT(c_lflag, VMIN);
88+
PRINT(c_lflag, VQUIT);
89+
PRINT(c_lflag, VREPRINT);
90+
PRINT(c_lflag, VSTART);
91+
/* PRINT(c_lflag, VSTATUS); */
92+
PRINT(c_lflag, VSTOP);
93+
PRINT(c_lflag, VSUSP);
94+
/* PRINT(c_lflag, VSWTCH); */
95+
PRINT(c_lflag, VTIME);
96+
PRINT(c_lflag, VWERASE);
97+
puts("");
98+
99+
return 0;
100+
}

0 commit comments

Comments
 (0)