Initial commit

This commit is contained in:
pjht 2024-09-23 14:45:19 -05:00
commit be3963718a
Signed by: pjht
GPG Key ID: CA239FC6934E6F3A
4 changed files with 214 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

7
Cargo.lock generated Normal file
View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "termios"
version = "0.1.0"

6
Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "termios"
version = "0.1.0"
edition = "2021"
[dependencies]

200
src/lib.rs Normal file
View File

@ -0,0 +1,200 @@
pub struct Iflags {
pub brkint: bool,
pub icrnl: bool,
pub ignbrk: bool,
pub igncr: bool,
pub ignpar: bool,
pub inlcr: bool,
pub inpck: bool,
pub istrip: bool,
pub ixany: bool,
pub ixoff: bool,
pub ixon: bool,
pub parmark: bool,
}
impl Default for Iflags {
fn default() -> Self {
Self {
brkint: false,
icrnl: true,
ignbrk: false,
igncr: false,
ignpar: true,
inlcr: false,
inpck: true,
istrip: false,
ixany: false,
ixoff: false,
ixon: true,
parmark: false,
}
}
}
pub struct Oflags {
pub opost: bool,
pub onlcr: bool,
pub ocrnl: bool,
pub onocr: bool,
pub onlret: bool,
pub ofdel: bool,
pub nldly: NlDelay,
pub crdly: CrDelay,
pub tabdly: TabDelay,
pub bsdly: BsDelay,
pub vtdly: VtDelay,
pub ffdly: FfDelay,
}
impl Default for Oflags {
fn default() -> Self {
Self {
opost: true,
onlcr: true,
ocrnl: false,
onocr: false,
onlret: false,
ofdel: false,
nldly: NlDelay::Nl0,
crdly: CrDelay::Cr0,
tabdly: TabDelay::Tab0,
bsdly: BsDelay::Bs0,
vtdly: VtDelay::Vt0,
ffdly: FfDelay::Ff0,
}
}
}
pub enum NlDelay {
Nl0,
Nl1,
}
pub enum CrDelay {
Cr0,
Cr1,
Cr2,
Cr3,
}
pub enum TabDelay {
Tab0,
Tab1,
Tab2,
Tab3,
}
pub enum BsDelay {
Bs0,
Bs1,
}
pub enum VtDelay {
Vt0,
Vt1,
}
pub enum FfDelay {
Ff0,
Ff1,
}
pub struct Cflags {
pub csize: CharSize,
pub cstopb: bool,
pub cread: bool,
pub parenb: bool,
pub parodd: bool,
pub hupcl: bool,
pub clocal: bool,
}
impl Default for Cflags {
fn default() -> Self {
Self {
csize: CharSize::Cs8,
cstopb: false,
cread: true,
parenb: false,
parodd: false,
hupcl: true,
clocal: false,
}
}
}
pub enum CharSize {
Cs5,
Cs6,
Cs7,
Cs8,
}
pub struct Lflags {
pub echo: bool,
pub echoe: bool,
pub echok: bool,
pub echonl: bool,
pub icanon: bool,
pub iexten: bool,
pub isig: bool,
pub noflsh: bool,
pub tostop: bool,
}
impl Default for Lflags {
fn default() -> Self {
Self {
echo: true,
echoe: true,
echok: true,
echonl: false,
icanon: true,
iexten: true,
isig: true,
noflsh: false,
tostop: false,
}
}
}
pub struct Termios {
pub iflags: Iflags,
pub oflags: Oflags,
pub cflags: Cflags,
pub lflags: Lflags,
pub veof: char,
pub veol: char,
pub verase: char,
pub vintr: char,
pub vkill: char,
pub vmin: u32,
pub vquit: char,
pub vstart: char,
pub vstop: char,
pub vsusp: char,
pub vtime: u32,
}
impl Default for Termios {
fn default() -> Self {
Self {
iflags: Iflags::default(),
oflags: Oflags::default(),
cflags: Cflags::default(),
lflags: Lflags::default(),
veof: '\u{4}', //ctrl-D (EOT)
veol: '\n',
verase: '\u{8}', //ctrl-H (BS)
vintr: '\u{3}', //ctrl-C (ETX)
vkill: '\u{15}', //ctrl-U (NAK)
vmin: 0,
vquit: '\u{1C}', //ctrl-\
vstart: '\u{11}', // ctrl-S (XONN)
vstop: '\u{13}', // ctrl-Q (XOFF)
vsusp: '\u{1A}', // ctrl-Z (SUB)
vtime: 0,
}
}
}