#### 17.4.5 Output Modes

This section describes the terminal flags and fields that control how output characters are translated and padded for display. All of these are contained in the `c_oflag` member of the `struct termios` structure.

The `c_oflag` member itself is an integer, and you change the flags and fields using the operators `&`, `|`, and `^`. Don't try to specify the entire value for `c_oflag`—instead, change only specific flags and leave the rest untouched (see Setting Modes).

— Macro: tcflag_t OPOST

> If this bit is set, output data is processed in some unspecified way so that it is displayed appropriately on the terminal device. This typically includes mapping newline characters (`'\n'`) onto carriage return and linefeed pairs.

> If this bit isn't set, the characters are transmitted as-is.

The following three bits are effective only if `OPOST` is set.

— Macro: tcflag_t ONLCR

> If this bit is set, convert the newline character on output into a pair of characters, carriage return followed by linefeed.

— Macro: tcflag_t OXTABS

> If this bit is set, convert tab characters on output into the appropriate number of spaces to emulate a tab stop every eight columns. This bit exists only on BSD systems and GNU/Hurd systems; on GNU/Linux systems it is available as `XTABS`.

— Macro: tcflag_t ONOEOT

> If this bit is set, discard `C-d` characters (code `004`) on output. These characters cause many dial-up terminals to disconnect. This bit exists only on BSD systems and GNU/Hurd systems.