1 /**
2 * D header file for POSIX.
3 *
4 * Copyright: Copyright Sean Kelly 2005 - 2009.
5 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6 * Authors: Sean Kelly, Alex Rønne Petersen
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8 */
9
10 /* Copyright Sean Kelly 2005 - 2009.
11 * Distributed under the Boost Software License, Version 1.0.
12 * (See accompanying file LICENSE or copy at
13 * http://www.boost.org/LICENSE_1_0.txt)
14 */
15 module core.sys.posix.termios;
16
17 import core.sys.posix.config;
18 public import core.sys.posix.sys.types; // for pid_t
19
20 version (OSX)
21 version = Darwin;
22 else version (iOS)
23 version = Darwin;
24 else version (TVOS)
25 version = Darwin;
26 else version (WatchOS)
27 version = Darwin;
28
version(Posix)29 version (Posix):
30 extern (C):
31
32 nothrow:
33 @nogc:
34 @system:
35
36 //
37 // Required
38 //
39 /*
40 cc_t
41 speed_t
42 tcflag_t
43
44 NCCS
45
46 struct termios
47 {
48 tcflag_t c_iflag;
49 tcflag_t c_oflag;
50 tcflag_t c_cflag;
51 tcflag_t c_lflag;
52 cc_t[NCCS] c_cc;
53 }
54
55 VEOF
56 VEOL
57 VERASE
58 VINTR
59 VKILL
60 VMIN
61 VQUIT
62 VSTART
63 VSTOP
64 VSUSP
65 VTIME
66
67 BRKINT
68 ICRNL
69 IGNBRK
70 IGNCR
71 IGNPAR
72 INLCR
73 INPCK
74 ISTRIP
75 IXOFF
76 IXON
77 PARMRK
78
79 OPOST
80
81 B0
82 B50
83 B75
84 B110
85 B134
86 B150
87 B200
88 B300
89 B600
90 B1200
91 B1800
92 B2400
93 B4800
94 B9600
95 B19200
96 B38400
97
98 CSIZE
99 CS5
100 CS6
101 CS7
102 CS8
103 CSTOPB
104 CREAD
105 PARENB
106 PARODD
107 HUPCL
108 CLOCAL
109
110 ECHO
111 ECHOE
112 ECHOK
113 ECHONL
114 ICANON
115 IEXTEN
116 ISIG
117 NOFLSH
118 TOSTOP
119
120 TCSANOW
121 TCSADRAIN
122 TCSAFLUSH
123
124 TCIFLUSH
125 TCIOFLUSH
126 TCOFLUSH
127
128 TCIOFF
129 TCION
130 TCOOFF
131 TCOON
132 */
133
134 version (linux)
135 {
136 alias ubyte cc_t;
137 alias uint speed_t;
138 alias uint tcflag_t;
139
140 enum NCCS = 32;
141
142 struct termios
143 {
144 tcflag_t c_iflag;
145 tcflag_t c_oflag;
146 tcflag_t c_cflag;
147 tcflag_t c_lflag;
148 cc_t c_line;
149 cc_t[NCCS] c_cc;
150 speed_t c_ispeed;
151 speed_t c_ospeed;
152 }
153
154 enum VEOF = 4;
155 enum VEOL = 11;
156 enum VERASE = 2;
157 enum VINTR = 0;
158 enum VKILL = 3;
159 enum VMIN = 6;
160 enum VQUIT = 1;
161 enum VSTART = 8;
162 enum VSTOP = 9;
163 enum VSUSP = 10;
164 enum VTIME = 5;
165
166 enum BRKINT = 0x0000002; // 0000002
167 enum ICRNL = 0x0000100; // 0000400
168 enum IGNBRK = 0x0000001; // 0000001
169 enum IGNCR = 0x0000080; // 0000200
170 enum IGNPAR = 0x0000004; // 0000004
171 enum INLCR = 0x0000040; // 0000100
172 enum INPCK = 0x0000010; // 0000020
173 enum ISTRIP = 0x0000020; // 0000040
174 enum IXOFF = 0x0001000; // 0010000
175 enum IXON = 0x0000400; // 0002000
176 enum PARMRK = 0x0000008; // 0000010
177
178 enum OPOST = 0x0000001; // 0000001
179
180 enum B0 = 0x0000000; // 0000000
181 enum B50 = 0x0000001; // 0000001
182 enum B75 = 0x0000002; // 0000002
183 enum B110 = 0x0000003; // 0000003
184 enum B134 = 0x0000004; // 0000004
185 enum B150 = 0x0000005; // 0000005
186 enum B200 = 0x0000006; // 0000006
187 enum B300 = 0x0000007; // 0000007
188 enum B600 = 0x0000008; // 0000010
189 enum B1200 = 0x0000009; // 0000011
190 enum B1800 = 0x000000A; // 0000012
191 enum B2400 = 0x000000B; // 0000013
192 enum B4800 = 0x000000C; // 0000014
193 enum B9600 = 0x000000D; // 0000015
194 enum B19200 = 0x000000E; // 0000016
195 enum B38400 = 0x000000F; // 0000017
196
197 enum CSIZE = 0x0000030; // 0000060
198 enum CS5 = 0x0000000; // 0000000
199 enum CS6 = 0x0000010; // 0000020
200 enum CS7 = 0x0000020; // 0000040
201 enum CS8 = 0x0000030; // 0000060
202 enum CSTOPB = 0x0000040; // 0000100
203 enum CREAD = 0x0000080; // 0000200
204 enum PARENB = 0x0000100; // 0000400
205 enum PARODD = 0x0000200; // 0001000
206 enum HUPCL = 0x0000400; // 0002000
207 enum CLOCAL = 0x0000800; // 0004000
208
209 enum ECHO = 0x0000008; // 0000010
210 enum ECHOE = 0x0000010; // 0000020
211 enum ECHOK = 0x0000020; // 0000040
212 enum ECHONL = 0x0000040; // 0000100
213 enum ICANON = 0x0000002; // 0000002
214 enum IEXTEN = 0x0008000; // 0100000
215 enum ISIG = 0x0000001; // 0000001
216 enum NOFLSH = 0x0000080; // 0000200
217 enum TOSTOP = 0x0000100; // 0000400
218
219 enum TCSANOW = 0;
220 enum TCSADRAIN = 1;
221 enum TCSAFLUSH = 2;
222
223 enum TCIFLUSH = 0;
224 enum TCOFLUSH = 1;
225 enum TCIOFLUSH = 2;
226
227 enum TCIOFF = 2;
228 enum TCION = 3;
229 enum TCOOFF = 0;
230 enum TCOON = 1;
231 }
version(Darwin)232 else version (Darwin)
233 {
234 alias ubyte cc_t;
235 alias c_ulong speed_t;
236 alias c_ulong tcflag_t;
237
238 enum NCCS = 20;
239
240 struct termios
241 {
242 tcflag_t c_iflag;
243 tcflag_t c_oflag;
244 tcflag_t c_cflag;
245 tcflag_t c_lflag;
246 cc_t[NCCS] c_cc;
247 speed_t c_ispeed;
248 speed_t c_ospeed;
249 }
250
251 enum VEOF = 0;
252 enum VEOL = 1;
253 enum VERASE = 3;
254 enum VINTR = 8;
255 enum VKILL = 5;
256 enum VMIN = 16;
257 enum VQUIT = 9;
258 enum VSTART = 12;
259 enum VSTOP = 13;
260 enum VSUSP = 10;
261 enum VTIME = 17;
262
263 enum BRKINT = 0x0000002;
264 enum ICRNL = 0x0000100;
265 enum IGNBRK = 0x0000001;
266 enum IGNCR = 0x0000080;
267 enum IGNPAR = 0x0000004;
268 enum INLCR = 0x0000040;
269 enum INPCK = 0x0000010;
270 enum ISTRIP = 0x0000020;
271 enum IXOFF = 0x0000400;
272 enum IXON = 0x0000200;
273 enum PARMRK = 0x0000008;
274
275 enum OPOST = 0x0000001;
276
277 enum B0 = 0;
278 enum B50 = 50;
279 enum B75 = 75;
280 enum B110 = 110;
281 enum B134 = 134;
282 enum B150 = 150;
283 enum B200 = 200;
284 enum B300 = 300;
285 enum B600 = 600;
286 enum B1200 = 1200;
287 enum B1800 = 1800;
288 enum B2400 = 2400;
289 enum B4800 = 4800;
290 enum B9600 = 9600;
291 enum B19200 = 19200;
292 enum B38400 = 38400;
293
294 enum CSIZE = 0x0000300;
295 enum CS5 = 0x0000000;
296 enum CS6 = 0x0000100;
297 enum CS7 = 0x0000200;
298 enum CS8 = 0x0000300;
299 enum CSTOPB = 0x0000400;
300 enum CREAD = 0x0000800;
301 enum PARENB = 0x0001000;
302 enum PARODD = 0x0002000;
303 enum HUPCL = 0x0004000;
304 enum CLOCAL = 0x0008000;
305
306 enum ECHO = 0x00000008;
307 enum ECHOE = 0x00000002;
308 enum ECHOK = 0x00000004;
309 enum ECHONL = 0x00000010;
310 enum ICANON = 0x00000100;
311 enum IEXTEN = 0x00000400;
312 enum ISIG = 0x00000080;
313 enum NOFLSH = 0x80000000;
314 enum TOSTOP = 0x00400000;
315
316 enum TCSANOW = 0;
317 enum TCSADRAIN = 1;
318 enum TCSAFLUSH = 2;
319
320 enum TCIFLUSH = 1;
321 enum TCOFLUSH = 2;
322 enum TCIOFLUSH = 3;
323
324 enum TCIOFF = 3;
325 enum TCION = 4;
326 enum TCOOFF = 1;
327 enum TCOON = 2;
328 }
version(FreeBSD)329 else version (FreeBSD)
330 {
331 alias ubyte cc_t;
332 alias uint speed_t;
333 alias uint tcflag_t;
334
335 enum NCCS = 20;
336
337 struct termios
338 {
339 tcflag_t c_iflag;
340 tcflag_t c_oflag;
341 tcflag_t c_cflag;
342 tcflag_t c_lflag;
343 cc_t[NCCS] c_cc;
344 speed_t c_ispeed;
345 speed_t c_ospeed;
346 }
347
348 enum VEOF = 0;
349 enum VEOL = 1;
350 enum VERASE = 3;
351 enum VINTR = 8;
352 enum VKILL = 5;
353 enum VMIN = 16;
354 enum VQUIT = 9;
355 enum VSTART = 12;
356 enum VSTOP = 13;
357 enum VSUSP = 10;
358 enum VTIME = 17;
359
360 enum BRKINT = 0x0000002;
361 enum ICRNL = 0x0000100;
362 enum IGNBRK = 0x0000001;
363 enum IGNCR = 0x0000080;
364 enum IGNPAR = 0x0000004;
365 enum INLCR = 0x0000040;
366 enum INPCK = 0x0000010;
367 enum ISTRIP = 0x0000020;
368 enum IXOFF = 0x0000400;
369 enum IXON = 0x0000200;
370 enum PARMRK = 0x0000008;
371
372 enum OPOST = 0x0000001;
373
374 enum B0 = 0;
375 enum B50 = 50;
376 enum B75 = 75;
377 enum B110 = 110;
378 enum B134 = 134;
379 enum B150 = 150;
380 enum B200 = 200;
381 enum B300 = 300;
382 enum B600 = 600;
383 enum B1200 = 1200;
384 enum B1800 = 1800;
385 enum B2400 = 2400;
386 enum B4800 = 4800;
387 enum B9600 = 9600;
388 enum B19200 = 19200;
389 enum B38400 = 38400;
390
391 enum CSIZE = 0x0000300;
392 enum CS5 = 0x0000000;
393 enum CS6 = 0x0000100;
394 enum CS7 = 0x0000200;
395 enum CS8 = 0x0000300;
396 enum CSTOPB = 0x0000400;
397 enum CREAD = 0x0000800;
398 enum PARENB = 0x0001000;
399 enum PARODD = 0x0002000;
400 enum HUPCL = 0x0004000;
401 enum CLOCAL = 0x0008000;
402
403 enum ECHO = 0x00000008;
404 enum ECHOE = 0x00000002;
405 enum ECHOK = 0x00000004;
406 enum ECHONL = 0x00000010;
407 enum ICANON = 0x00000100;
408 enum IEXTEN = 0x00000400;
409 enum ISIG = 0x00000080;
410 enum NOFLSH = 0x80000000;
411 enum TOSTOP = 0x00400000;
412
413 enum TCSANOW = 0;
414 enum TCSADRAIN = 1;
415 enum TCSAFLUSH = 2;
416
417 enum TCIFLUSH = 1;
418 enum TCOFLUSH = 2;
419 enum TCIOFLUSH = 3;
420
421 enum TCIOFF = 3;
422 enum TCION = 4;
423 enum TCOOFF = 1;
424 enum TCOON = 2;
425 }
version(DragonFlyBSD)426 else version (DragonFlyBSD)
427 {
428 alias ubyte cc_t;
429 alias uint speed_t;
430 alias uint tcflag_t;
431
432 enum NCCS = 20;
433
434 struct termios
435 {
436 tcflag_t c_iflag;
437 tcflag_t c_oflag;
438 tcflag_t c_cflag;
439 tcflag_t c_lflag;
440 cc_t[NCCS] c_cc;
441 speed_t c_ispeed;
442 speed_t c_ospeed;
443 }
444
445 enum VEOF = 0;
446 enum VEOL = 1;
447 enum VERASE = 3;
448 enum VINTR = 8;
449 enum VKILL = 5;
450 enum VMIN = 16;
451 enum VQUIT = 9;
452 enum VSTART = 12;
453 enum VSTOP = 13;
454 enum VSUSP = 10;
455 enum VTIME = 17;
456
457 enum BRKINT = 0x0000002;
458 enum ICRNL = 0x0000100;
459 enum IGNBRK = 0x0000001;
460 enum IGNCR = 0x0000080;
461 enum IGNPAR = 0x0000004;
462 enum INLCR = 0x0000040;
463 enum INPCK = 0x0000010;
464 enum ISTRIP = 0x0000020;
465 enum IXOFF = 0x0000400;
466 enum IXON = 0x0000200;
467 enum PARMRK = 0x0000008;
468
469 enum OPOST = 0x0000001;
470
471 enum B0 = 0;
472 enum B50 = 50;
473 enum B75 = 75;
474 enum B110 = 110;
475 enum B134 = 134;
476 enum B150 = 150;
477 enum B200 = 200;
478 enum B300 = 300;
479 enum B600 = 600;
480 enum B1200 = 1200;
481 enum B1800 = 1800;
482 enum B2400 = 2400;
483 enum B4800 = 4800;
484 enum B9600 = 9600;
485 enum B19200 = 19200;
486 enum B38400 = 38400;
487
488 enum CSIZE = 0x0000300;
489 enum CS5 = 0x0000000;
490 enum CS6 = 0x0000100;
491 enum CS7 = 0x0000200;
492 enum CS8 = 0x0000300;
493 enum CSTOPB = 0x0000400;
494 enum CREAD = 0x0000800;
495 enum PARENB = 0x0001000;
496 enum PARODD = 0x0002000;
497 enum HUPCL = 0x0004000;
498 enum CLOCAL = 0x0008000;
499
500 enum ECHO = 0x00000008;
501 enum ECHOE = 0x00000002;
502 enum ECHOK = 0x00000004;
503 enum ECHONL = 0x00000010;
504 enum ICANON = 0x00000100;
505 enum IEXTEN = 0x00000400;
506 enum ISIG = 0x00000080;
507 enum NOFLSH = 0x80000000;
508 enum TOSTOP = 0x00400000;
509
510 enum TCSANOW = 0;
511 enum TCSADRAIN = 1;
512 enum TCSAFLUSH = 2;
513
514 enum TCIFLUSH = 1;
515 enum TCOFLUSH = 2;
516 enum TCIOFLUSH = 3;
517
518 enum TCIOFF = 3;
519 enum TCION = 4;
520 enum TCOOFF = 1;
521 enum TCOON = 2;
522 }
version(NetBSD)523 else version (NetBSD)
524 {
525 alias ubyte cc_t;
526 alias uint speed_t;
527 alias uint tcflag_t;
528
529 enum NCCS = 20;
530
531 struct termios
532 {
533 tcflag_t c_iflag;
534 tcflag_t c_oflag;
535 tcflag_t c_cflag;
536 tcflag_t c_lflag;
537 cc_t[NCCS] c_cc;
538 speed_t c_ispeed;
539 speed_t c_ospeed;
540 }
541
542 enum VEOF = 0;
543 enum VEOL = 1;
544 enum VERASE = 3;
545 enum VINTR = 8;
546 enum VKILL = 5;
547 enum VMIN = 16;
548 enum VQUIT = 9;
549 enum VSTART = 12;
550 enum VSTOP = 13;
551 enum VSUSP = 10;
552 enum VTIME = 17;
553
554 enum BRKINT = 0x0000002;
555 enum ICRNL = 0x0000100;
556 enum IGNBRK = 0x0000001;
557 enum IGNCR = 0x0000080;
558 enum IGNPAR = 0x0000004;
559 enum INLCR = 0x0000040;
560 enum INPCK = 0x0000010;
561 enum ISTRIP = 0x0000020;
562 enum IXOFF = 0x0000400;
563 enum IXON = 0x0000200;
564 enum PARMRK = 0x0000008;
565
566 enum OPOST = 0x0000001;
567
568 enum B0 = 0;
569 enum B50 = 50;
570 enum B75 = 75;
571 enum B110 = 110;
572 enum B134 = 134;
573 enum B150 = 150;
574 enum B200 = 200;
575 enum B300 = 300;
576 enum B600 = 600;
577 enum B1200 = 1200;
578 enum B1800 = 1800;
579 enum B2400 = 2400;
580 enum B4800 = 4800;
581 enum B9600 = 9600;
582 enum B19200 = 19200;
583 enum B38400 = 38400;
584
585 enum CSIZE = 0x0000300;
586 enum CS5 = 0x0000000;
587 enum CS6 = 0x0000100;
588 enum CS7 = 0x0000200;
589 enum CS8 = 0x0000300;
590 enum CSTOPB = 0x0000400;
591 enum CREAD = 0x0000800;
592 enum PARENB = 0x0001000;
593 enum PARODD = 0x0002000;
594 enum HUPCL = 0x0004000;
595 enum CLOCAL = 0x0008000;
596
597 enum ECHO = 0x00000008;
598 enum ECHOE = 0x00000002;
599 enum ECHOK = 0x00000004;
600 enum ECHONL = 0x00000010;
601 enum ICANON = 0x00000100;
602 enum IEXTEN = 0x00000400;
603 enum ISIG = 0x00000080;
604 enum NOFLSH = 0x80000000;
605 enum TOSTOP = 0x00400000;
606
607 enum TCSANOW = 0;
608 enum TCSADRAIN = 1;
609 enum TCSAFLUSH = 2;
610
611 enum TCIFLUSH = 1;
612 enum TCOFLUSH = 2;
613 enum TCIOFLUSH = 3;
614
615 enum TCIOFF = 3;
616 enum TCION = 4;
617 enum TCOOFF = 1;
618 enum TCOON = 2;
619 }
version(OpenBSD)620 else version (OpenBSD)
621 {
622 alias uint tcflag_t;
623 alias ubyte cc_t;
624 alias uint speed_t;
625
626 enum NCCS = 20;
627
628 struct termios
629 {
630 tcflag_t c_iflag;
631 tcflag_t c_oflag;
632 tcflag_t c_cflag;
633 tcflag_t c_lflag;
634 cc_t[NCCS] c_cc;
635 int c_ispeed;
636 int c_ospeed;
637 }
638
639 enum VEOF = 0;
640 enum VEOL = 1;
641 enum VERASE = 3;
642 enum VINTR = 8;
643 enum VKILL = 5;
644 enum VMIN = 16;
645 enum VQUIT = 9;
646 enum VSTART = 12;
647 enum VSTOP = 13;
648 enum VSUSP = 10;
649 enum VTIME = 17;
650
651 enum BRKINT = 0x0000002;
652 enum ICRNL = 0x0000100;
653 enum IGNBRK = 0x0000001;
654 enum IGNCR = 0x0000080;
655 enum IGNPAR = 0x0000004;
656 enum INLCR = 0x0000040;
657 enum INPCK = 0x0000010;
658 enum ISTRIP = 0x0000020;
659 enum IXOFF = 0x0000400;
660 enum IXON = 0x0000200;
661 enum PARMRK = 0x0000008;
662
663 enum OPOST = 0x0000001;
664
665 enum B0 = 0;
666 enum B50 = 50;
667 enum B75 = 75;
668 enum B110 = 110;
669 enum B134 = 134;
670 enum B150 = 150;
671 enum B200 = 200;
672 enum B300 = 300;
673 enum B600 = 600;
674 enum B1200 = 1200;
675 enum B1800 = 1800;
676 enum B2400 = 2400;
677 enum B4800 = 4800;
678 enum B9600 = 9600;
679 enum B19200 = 19200;
680 enum B38400 = 38400;
681
682 enum CSIZE = 0x0000300;
683 enum CS5 = 0x0000000;
684 enum CS6 = 0x0000100;
685 enum CS7 = 0x0000200;
686 enum CS8 = 0x0000300;
687 enum CSTOPB = 0x0000400;
688 enum CREAD = 0x0000800;
689 enum PARENB = 0x0001000;
690 enum PARODD = 0x0002000;
691 enum HUPCL = 0x0004000;
692 enum CLOCAL = 0x0008000;
693
694 enum ECHO = 0x00000008;
695 enum ECHOE = 0x00000002;
696 enum ECHOK = 0x00000004;
697 enum ECHONL = 0x00000010;
698 enum ICANON = 0x00000100;
699 enum IEXTEN = 0x00000400;
700 enum ISIG = 0x00000080;
701 enum NOFLSH = 0x80000000;
702 enum TOSTOP = 0x00400000;
703
704 enum TCSANOW = 0;
705 enum TCSADRAIN = 1;
706 enum TCSAFLUSH = 2;
707
708 enum TCIFLUSH = 1;
709 enum TCOFLUSH = 2;
710 enum TCIOFLUSH = 3;
711
712 enum TCIOFF = 3;
713 enum TCION = 4;
714 enum TCOOFF = 1;
715 enum TCOON = 2;
716 }
version(Solaris)717 else version (Solaris)
718 {
719 alias tcflag_t = uint;
720 alias cc_t = ubyte;
721 alias speed_t = uint;
722
723 enum NCCS = 19;
724
725 struct termios
726 {
727 tcflag_t c_iflag; /* input modes */
728 tcflag_t c_oflag; /* output modes */
729 tcflag_t c_cflag; /* control modes */
730 tcflag_t c_lflag; /* line discipline modes */
731 cc_t[NCCS] c_cc; /* control chars */
732 }
733
734 /* control characters */
735 enum VINTR = 0;
736 enum VQUIT = 1;
737 enum VERASE = 2;
738 enum VKILL = 3;
739 enum VEOF = 4;
740 enum VEOL = 5;
741 enum VMIN = 4;
742 enum VTIME = 5;
743 enum VSTART = 8;
744 enum VSTOP = 9;
745 enum VSUSP = 10;
746
747 /* input modes */
748 enum IGNBRK = 0x000001;
749 enum BRKINT = 0x000002;
750 enum IGNPAR = 0x000004;
751 enum PARMRK = 0x000008;
752 enum INPCK = 0x000010;
753 enum ISTRIP = 0x000020;
754 enum INLCR = 0x000040;
755 enum IGNCR = 0x000080;
756 enum ICRNL = 0x000100;
757 enum IXON = 0x000400;
758 enum IXOFF = 0x001000;
759
760 /* output modes */
761 enum OPOST = 0x000001;
762
763 /* control modes */
764 enum CSIZE = 0x000030;
765 enum CS5 = 0x000000;
766 enum CS6 = 0x000010;
767 enum CS7 = 0x000020;
768 enum CS8 = 0x000030;
769 enum CSTOPB = 0x000040;
770 enum CREAD = 0x000080;
771 enum PARENB = 0x000100;
772 enum PARODD = 0x000200;
773 enum HUPCL = 0x000400;
774 enum CLOCAL = 0x000800;
775
776 enum CRTSCTS = 0x10000000;
777
778 /* line discipline 0 modes */
779 enum ISIG = 0x000001;
780 enum ICANON = 0x000002;
781 enum ECHO = 0x000008;
782 enum ECHOE = 0x000010;
783 enum ECHOK = 0x000020;
784 enum ECHONL = 0x000040;
785 enum NOFLSH = 0x000080;
786 enum TOSTOP = 0x000100;
787
788 enum ECHOCTL = 0x000200;
789 enum ECHOPRT = 0x000400;
790 enum ECHOKE = 0x000800;
791
792 enum IEXTEN = 0x008000; /* POSIX flag - enable POSIX extensions */
793
794 enum _TIOC = ('T'<<8);
795 enum TCSANOW = (_TIOC|14);
796 enum TCSADRAIN = (_TIOC|15);
797 enum TCSAFLUSH = (_TIOC|16);
798
799 /* termios option flags */
800 enum TCIFLUSH = 0; /* flush data received but not read */
801 enum TCOFLUSH = 1; /* flush data written but not transmitted */
802 enum TCIOFLUSH = 2; /* flush both data both input and output queues */
803
804 enum TCOOFF = 0; /* suspend output */
805 enum TCOON = 1; /* restart suspended output */
806 enum TCIOFF = 2; /* suspend input */
807 enum TCION = 3; /* restart suspended input */
808
809 /* Speeds */
810 enum B0 = 0;
811 enum B50 = 1;
812 enum B75 = 2;
813 enum B110 = 3;
814 enum B134 = 4;
815 enum B150 = 5;
816 enum B200 = 6;
817 enum B300 = 7;
818 enum B600 = 8;
819 enum B1200 = 9;
820 enum B1800 = 10;
821 enum B2400 = 11;
822 enum B4800 = 12;
823 enum B9600 = 13;
824 enum B19200 = 14;
825 enum B38400 = 15;
826 enum B57600 = 16;
827 enum B76800 = 17;
828 enum B115200 = 18;
829 enum B153600 = 19;
830 enum B230400 = 20;
831 enum B307200 = 21;
832 enum B460800 = 22;
833 enum B921600 = 23;
834 }
835
836 /*
837 speed_t cfgetispeed(const scope termios*);
838 speed_t cfgetospeed(const scope termios*);
839 int cfsetispeed(termios*, speed_t);
840 int cfsetospeed(termios*, speed_t);
841 int tcdrain(int);
842 int tcflow(int, int);
843 int tcflush(int, int);
844 int tcgetattr(int, termios*);
845 int tcsendbreak(int, int);
846 int tcsetattr(int, int, const scope termios*);
847 */
848
version(CRuntime_Glibc)849 version (CRuntime_Glibc)
850 {
851 speed_t cfgetispeed(const scope termios*);
852 speed_t cfgetospeed(const scope termios*);
853 int cfsetispeed(termios*, speed_t);
854 int cfsetospeed(termios*, speed_t);
855 int tcdrain(int);
856 int tcflow(int, int);
857 int tcflush(int, int);
858 int tcgetattr(int, termios*);
859 int tcsendbreak(int, int);
860 int tcsetattr(int, int, const scope termios*);
861 }
version(Darwin)862 else version (Darwin)
863 {
864 speed_t cfgetispeed(const scope termios*);
865 speed_t cfgetospeed(const scope termios*);
866 int cfsetispeed(termios*, speed_t);
867 int cfsetospeed(termios*, speed_t);
868 int tcdrain(int);
869 int tcflow(int, int);
870 int tcflush(int, int);
871 int tcgetattr(int, termios*);
872 int tcsendbreak(int, int);
873 int tcsetattr(int, int, const scope termios*);
874
875 }
version(FreeBSD)876 else version (FreeBSD)
877 {
878 speed_t cfgetispeed(const scope termios*);
879 speed_t cfgetospeed(const scope termios*);
880 int cfsetispeed(termios*, speed_t);
881 int cfsetospeed(termios*, speed_t);
882 int tcdrain(int);
883 int tcflow(int, int);
884 int tcflush(int, int);
885 int tcgetattr(int, termios*);
886 int tcsendbreak(int, int);
887 int tcsetattr(int, int, const scope termios*);
888 }
version(DragonFlyBSD)889 else version (DragonFlyBSD)
890 {
891 speed_t cfgetispeed(const scope termios*);
892 speed_t cfgetospeed(const scope termios*);
893 int cfsetispeed(termios*, speed_t);
894 int cfsetospeed(termios*, speed_t);
895 int tcdrain(int);
896 int tcflow(int, int);
897 int tcflush(int, int);
898 int tcgetattr(int, termios*);
899 int tcsendbreak(int, int);
900 int tcsetattr(int, int, const scope termios*);
901 }
version(NetBSD)902 else version (NetBSD)
903 {
904 speed_t cfgetispeed(const scope termios*);
905 speed_t cfgetospeed(const scope termios*);
906 int cfsetispeed(termios*, speed_t);
907 int cfsetospeed(termios*, speed_t);
908 int tcdrain(int);
909 int tcflow(int, int);
910 int tcflush(int, int);
911 int tcgetattr(int, termios*);
912 int tcsendbreak(int, int);
913 int tcsetattr(int, int, const scope termios*);
914 }
version(OpenBSD)915 else version (OpenBSD)
916 {
917 speed_t cfgetispeed(const scope termios*);
918 speed_t cfgetospeed(const scope termios*);
919 int cfsetispeed(termios*, speed_t);
920 int cfsetospeed(termios*, speed_t);
921 int tcdrain(int);
922 int tcflow(int, int);
923 int tcflush(int, int);
924 int tcgetattr(int, termios*);
925 int tcsendbreak(int, int);
926 int tcsetattr(int, int, const scope termios*);
927 }
version(Solaris)928 else version (Solaris)
929 {
930 speed_t cfgetospeed(const scope termios*);
931 int cfsetospeed(termios*, speed_t);
932 speed_t cfgetispeed(const scope termios*);
933 int cfsetispeed(termios*, speed_t);
934 int tcgetattr(int, termios*);
935 int tcsetattr(int, int, const scope termios*);
936 int tcsendbreak(int, int);
937 int tcdrain(int);
938 int tcflush(int, int);
939 int tcflow(int, int);
940 }
version(CRuntime_UClibc)941 else version (CRuntime_UClibc)
942 {
943 speed_t cfgetispeed(const scope termios*);
944 speed_t cfgetospeed(const scope termios*);
945 int cfsetispeed(termios*, speed_t);
946 int cfsetospeed(termios*, speed_t);
947 int tcdrain(int);
948 int tcflow(int, int);
949 int tcflush(int, int);
950 int tcgetattr(int, termios*);
951 int tcsendbreak(int, int);
952 int tcsetattr(int, int, const scope termios*);
953 }
954
955 //
956 // XOpen (XSI)
957 //
958 /*
959 IXANY
960
961 ONLCR
962 OCRNL
963 ONOCR
964 ONLRET
965 OFILL
966 NLDLY
967 NL0
968 NL1
969 CRDLY
970 CR0
971 CR1
972 CR2
973 CR3
974 TABDLY
975 TAB0
976 TAB1
977 TAB2
978 TAB3
979 BSDLY
980 BS0
981 BS1
982 VTDLY
983 VT0
984 VT1
985 FFDLY
986 FF0
987 FF1
988
989 pid_t tcgetsid(int);
990 */
991
version(CRuntime_Glibc)992 version (CRuntime_Glibc)
993 {
994 enum IXANY = 0x0000800; // 0004000
995
996 enum ONLCR = 0x0000004; // 0000004
997 enum OCRNL = 0x0000008; // 0000010
998 enum ONOCR = 0x0000010; // 0000020
999 enum ONLRET = 0x0000020; // 0000040
1000 enum OFILL = 0x0000040; // 0000100
1001 enum NLDLY = 0x0000100; // 0000400
1002 enum NL0 = 0x0000000; // 0000000
1003 enum NL1 = 0x0000100; // 0000400
1004 enum CRDLY = 0x0000600; // 0003000
1005 enum CR0 = 0x0000000; // 0000000
1006 enum CR1 = 0x0000200; // 0001000
1007 enum CR2 = 0x0000400; // 0002000
1008 enum CR3 = 0x0000600; // 0003000
1009 enum TABDLY = 0x0001800; // 0014000
1010 enum TAB0 = 0x0000000; // 0000000
1011 enum TAB1 = 0x0000800; // 0004000
1012 enum TAB2 = 0x0001000; // 0010000
1013 enum TAB3 = 0x0001800; // 0014000
1014 enum BSDLY = 0x0002000; // 0020000
1015 enum BS0 = 0x0000000; // 0000000
1016 enum BS1 = 0x0002000; // 0020000
1017 enum VTDLY = 0x0004000; // 0040000
1018 enum VT0 = 0x0000000; // 0000000
1019 enum VT1 = 0x0004000; // 0040000
1020 enum FFDLY = 0x0008000; // 0100000
1021 enum FF0 = 0x0000000; // 0000000
1022 enum FF1 = 0x0008000; // 0100000
1023
1024 pid_t tcgetsid(int);
1025 }
1026
version(Darwin)1027 else version (Darwin)
1028 {
1029 enum IXANY = 0x00000800;
1030
1031 enum ONLCR = 0x00000002;
1032 enum OCRNL = 0x00000010;
1033 enum ONOCR = 0x00000020;
1034 enum ONLRET = 0x00000040;
1035 enum OFILL = 0x00000080;
1036 enum NLDLY = 0x00000300;
1037 enum NL0 = 0x00000000;
1038 enum NL1 = 0x00000100;
1039 enum CRDLY = 0x00003000;
1040 enum CR0 = 0x00000000;
1041 enum CR1 = 0x00001000;
1042 enum CR2 = 0x00002000;
1043 enum CR3 = 0x00003000;
1044 enum TABDLY = 0x00000c04;
1045 enum TAB0 = 0x00000000;
1046 enum TAB1 = 0x00000400;
1047 enum TAB2 = 0x00000800;
1048 enum TAB3 = 0x00000004;
1049 enum BSDLY = 0x00008000;
1050 enum BS0 = 0x00000000;
1051 enum BS1 = 0x00008000;
1052 enum VTDLY = 0x00010000;
1053 enum VT0 = 0x00000000;
1054 enum VT1 = 0x00010000;
1055 enum FFDLY = 0x00004000;
1056 enum FF0 = 0x00000000;
1057 enum FF1 = 0x00004000;
1058
1059 pid_t tcgetsid (int);
1060 }
1061
version(FreeBSD)1062 else version (FreeBSD)
1063 {
1064 enum IXANY = 0x00000800;
1065
1066 enum ONLCR = 0x00000002;
1067 enum OCRNL = 0x00000010;
1068 enum ONOCR = 0x00000020;
1069 enum ONLRET = 0x00000040;
1070 //enum OFILL
1071 //enum NLDLY
1072 //enum NL0
1073 //enum NL1
1074 //enum CRDLY
1075 //enum CR0
1076 //enum CR1
1077 //enum CR2
1078 //enum CR3
1079 enum TABDLY = 0x00000004;
1080 enum TAB0 = 0x00000000;
1081 //enum TAB1
1082 //enum TAB2
1083 enum TAB3 = 0x00000004;
1084 //enum BSDLY
1085 //enum BS0
1086 //enum BS1
1087 //enum VTDLY
1088 //enum VT0
1089 //enum VT1
1090 //enum FFDLY
1091 //enum FF0
1092 //enum FF1
1093
1094 pid_t tcgetsid(int);
1095 }
version(DragonFlyBSD)1096 else version (DragonFlyBSD)
1097 {
1098 enum IXANY = 0x00000800;
1099
1100 enum ONLCR = 0x00000002;
1101 enum OCRNL = 0x00000010;
1102 enum ONOCR = 0x00000020;
1103 enum ONLRET = 0x00000040;
1104 //enum OFILL
1105 //enum NLDLY
1106 //enum NL0
1107 //enum NL1
1108 //enum CRDLY
1109 //enum CR0
1110 //enum CR1
1111 //enum CR2
1112 //enum CR3
1113 enum TABDLY = 0x00000004;
1114 enum TAB0 = 0x00000000;
1115 //enum TAB1
1116 //enum TAB2
1117 enum TAB3 = 0x00000004;
1118 //enum BSDLY
1119 //enum BS0
1120 //enum BS1
1121 //enum VTDLY
1122 //enum VT0
1123 //enum VT1
1124 //enum FFDLY
1125 //enum FF0
1126 //enum FF1
1127
1128 pid_t tcgetsid(int);
1129 }
version(NetBSD)1130 else version (NetBSD)
1131 {
1132 enum IXANY = 0x00000800;
1133
1134 enum ONLCR = 0x00000002;
1135 enum OCRNL = 0x00000010;
1136 enum ONOCR = 0x00000020;
1137 enum ONLRET = 0x00000040;
1138 //enum OFILL
1139 //enum NLDLY
1140 //enum NL0
1141 //enum NL1
1142 //enum CRDLY
1143 //enum CR0
1144 //enum CR1
1145 //enum CR2
1146 //enum CR3
1147 enum TABDLY = 0x00000004;
1148 enum TAB0 = 0x00000000;
1149 //enum TAB1
1150 //enum TAB2
1151 enum TAB3 = 0x00000004;
1152 //enum BSDLY
1153 //enum BS0
1154 //enum BS1
1155 //enum VTDLY
1156 //enum VT0
1157 //enum VT1
1158 //enum FFDLY
1159 //enum FF0
1160 //enum FF1
1161
1162 pid_t tcgetsid(int);
1163 }
version(OpenBSD)1164 else version (OpenBSD)
1165 {
1166 enum IXANY = 0x00000800;
1167
1168 enum ONLCR = 0x00000002;
1169 enum OCRNL = 0x00000010;
1170 enum ONOCR = 0x00000040;
1171 enum ONLRET = 0x00000080;
1172 //enum OFILL
1173 //enum NLDLY
1174 //enum NL0
1175 //enum NL1
1176 //enum CRDLY
1177 //enum CR0
1178 //enum CR1
1179 //enum CR2
1180 //enum CR3
1181 //enum TABDLY
1182 //enum TAB0
1183 //enum TAB1
1184 //enum TAB2
1185 //enum TAB3
1186 //enum BSDLY
1187 //enum BS0
1188 //enum BS1
1189 //enum VTDLY
1190 //enum VT0
1191 //enum VT1
1192 //enum FFDLY
1193 //enum FF0
1194 //enum FF1
1195
1196 pid_t tcgetsid(int);
1197 }
version(Solaris)1198 else version (Solaris)
1199 {
1200 enum IXANY = 0x0000800;
1201
1202 enum ONLCR = 0x0000004;
1203 enum OCRNL = 0x0000008;
1204 enum ONOCR = 0x0000010;
1205 enum ONLRET = 0x0000020;
1206 enum OFILL = 0x0000040;
1207 enum OFDEL = 0x0000080;
1208 enum NLDLY = 0x0000100;
1209 enum NL0 = 0x0000000;
1210 enum NL1 = 0x0000100;
1211 enum CRDLY = 0x0000600;
1212 enum CR0 = 0x0000000;
1213 enum CR1 = 0x0000200;
1214 enum CR2 = 0x0000400;
1215 enum CR3 = 0x0000600;
1216 enum TABDLY = 0x0001800;
1217 enum TAB0 = 0x0000000;
1218 enum TAB1 = 0x0000800;
1219 enum TAB2 = 0x0001000;
1220 enum TAB3 = 0x0001800;
1221 enum BSDLY = 0x0002000;
1222 enum BS0 = 0x0000000;
1223 enum BS1 = 0x0002000;
1224 enum VTDLY = 0x0004000;
1225 enum VT0 = 0x0000000;
1226 enum VT1 = 0x0004000;
1227 enum FFDLY = 0x0008000;
1228 enum FF0 = 0x0000000;
1229 enum FF1 = 0x0008000;
1230 enum XCASE = 0x0000004;
1231
1232 pid_t tcgetsid(int);
1233 }
version(CRuntime_UClibc)1234 else version (CRuntime_UClibc)
1235 {
1236 enum IXANY = 0x0000800; // 0004000
1237
1238 enum ONLCR = 0x0000004; // 0000004
1239 enum OCRNL = 0x0000008; // 0000010
1240 enum ONOCR = 0x0000010; // 0000020
1241 enum ONLRET = 0x0000020; // 0000040
1242 enum OFILL = 0x0000040; // 0000100
1243 enum NLDLY = 0x0000100; // 0000400
1244 enum NL0 = 0x0000000; // 0000000
1245 enum NL1 = 0x0000100; // 0000400
1246 enum CRDLY = 0x0000600; // 0003000
1247 enum CR0 = 0x0000000; // 0000000
1248 enum CR1 = 0x0000200; // 0001000
1249 enum CR2 = 0x0000400; // 0002000
1250 enum CR3 = 0x0000600; // 0003000
1251 enum TABDLY = 0x0001800; // 0014000
1252 enum TAB0 = 0x0000000; // 0000000
1253 enum TAB1 = 0x0000800; // 0004000
1254 enum TAB2 = 0x0001000; // 0010000
1255 enum TAB3 = 0x0001800; // 0014000
1256 enum BSDLY = 0x0002000; // 0020000
1257 enum BS0 = 0x0000000; // 0000000
1258 enum BS1 = 0x0002000; // 0020000
1259 enum VTDLY = 0x0004000; // 0040000
1260 enum VT0 = 0x0000000; // 0000000
1261 enum VT1 = 0x0004000; // 0040000
1262 enum FFDLY = 0x0008000; // 0100000
1263 enum FF0 = 0x0000000; // 0000000
1264 enum FF1 = 0x0008000; // 0100000
1265
1266 pid_t tcgetsid(int);
1267 }
1268