cosmopolitan/libc/calls/termios.internal.h
Justine Tunney ea0b5d9d1c Get Cosmopolitan into releasable state
A new rollup tool now exists for flattening out the headers in a way
that works better for our purposes than cpp. A lot of the API clutter
has been removed. APIs that aren't a sure thing in terms of general
recommendation are now marked internal.

There's now a smoke test for the amalgamation archive and gigantic
header file. So we can now guarantee you can use this project on the
easiest difficulty setting without the gigantic repository.

A website is being created, which is currently a work in progress:
https://justine.storage.googleapis.com/cosmopolitan/index.html
2020-11-25 08:19:00 -08:00

30 lines
1.3 KiB
C

#ifndef COSMOPOLITAN_LIBC_CALLS_TERMIOS_INTERNAL_H_
#define COSMOPOLITAN_LIBC_CALLS_TERMIOS_INTERNAL_H_
#ifndef __STRICT_ANSI__
#include "libc/bits/safemacros.internal.h"
#include "libc/calls/struct/metatermios.internal.h"
#include "libc/calls/struct/termios.h"
#include "libc/str/str.h"
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
#define COPY_TERMIOS(TO, FROM) \
do { \
memset((TO), 0, sizeof(*(TO))); \
(TO)->c_iflag = (FROM)->c_iflag; \
(TO)->c_oflag = (FROM)->c_oflag; \
(TO)->c_cflag = (FROM)->c_cflag; \
(TO)->c_lflag = (FROM)->c_lflag; \
memcpy((TO)->c_cc, (FROM)->c_cc, \
min(sizeof((TO)->c_cc), sizeof((FROM)->c_cc))); \
(TO)->c_ispeed = (FROM)->c_ispeed; \
(TO)->c_ospeed = (FROM)->c_ospeed; \
} while (0)
void *termios2host(union metatermios *, const struct termios *);
void termios2linux(struct termios *, const union metatermios *);
COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* !ANSI */
#endif /* COSMOPOLITAN_LIBC_CALLS_TERMIOS_INTERNAL_H_ */