Modula-2 || Compiler & Tools || Library || Search Engine
CONST
shift = 0;
Tandem = { shift + 15 };
Cbreak = { shift + 14 };
Lcase = { shift + 13 };
Echo = { shift + 12 };
Crmod = { shift + 11 };
Raw = { shift + 10 };
Oddp = { shift + 9 };
Evenp = { shift + 8 };
Anyp = Oddp + Evenp;
Nldelay = { shift + 6 , shift + 7 };
Tbdelay = { shift + 4 , shift + 5 };
Xtabs = { shift + 4 , shift + 5 };
Crdelay = { shift + 2 , 3 };
Vtdelay = { shift + 1 };
Bsdelay = { shift + 0 };
Alldelay = Bsdelay + Vtdelay + Crdelay +
Xtabs + Tbdelay + Nldelay;
(* parameter types *)
IocVoid = { 2 };
IocOut = { 1 };
IocIn = { 0 };
IocInOut = IocIn + IocOut;
(* request codes *)
getd = BITSET(0) + IocOut;
setd = BITSET(1) + IocIn;
hpcl = BITSET(2) + IocVoid;
modg = HREF="BITSET.html">BITSET + IocOut;
mods = BITSET(4) + IocIn;
getp = BITSET(8) + IocOut;
setp = BITSET(9) + IocIn;
setn = BITSET(10) + IocIn;
excl = BITSET(13) + IocVoid;
nxcl = BITSET(14) + IocVoid;
flush = BITSET(16) + IocIn;
setc = BITSET(17) + IocIn;
getc = BITSET(18) + IocOut;
(* BSD or SUN specific ioctl-calls *)
lbis = BITSET(127) + IocIn;
lbic = BITSET(126) + IocIn;
lset = BITSET(125) + IocIn;
lget = BITSET(124) + IocOut;
sbrk = BITSET(123) + IocVoid;
cbrk = BITSET(122) + IocVoid;
cdtr = BITSET(120) + IocVoid;
gprgp = BITSET(119) + IocOut;
sprgp = BITSET(118) + IocIn;
sltc = BITSET(117) + IocIn;
gltc = BITSET(116) + IocOut;
outq = BITSET(115) + IocOut;
sti = BITSET(114) + IocIn;
notty = BITSET(113) + IocVoid;
pkt = BITSET(112) + IocIn;
stop = BITSET(111) + IocVoid;
start = BITSET(110) + IocVoid;
mset = BITSET(109) + IocIn;
mbis = BITSET(108) + IocIn;
mbic = BITSET(107) + IocIn;
mget = BITSET(106) + IocOut;
remote = BITSET(105) + IocIn;
gwinsz = BITSET(104) + IocOut;
swinsz = BITSET(103) + IocIn;
ucntl = BITSET(102) + IocIn;
(* size of corresponding C-structures *)
SizeOfSgttyb = 6;
SizeOfTchars = 6;
SizeOfWinsize = 8;
(* values of Sgttyb ispeed and ospeed *)
b0 = 0;
b50 = 1;
b75 = 2;
b110 = 3;
b134 = 4;
b150 = 5;
b200 = 6;
b300 = 7;
b600 = 8;
b1200 = 9;
b1800 = 10;
b2400 = 11;
b4800 = 12;
b9600 = 13;
exta = 14;
extb = 15;
TYPE
Sgttyb =
RECORD
ispeed: CHAR;
ospeed: CHAR;
erase: CHAR;
kill: CHAR;
flags: BITSET;
END;
Tchars =
RECORD
intrc: CHAR;
quitc: CHAR;
startc: CHAR;
stopc: CHAR;
eofc: CHAR;
brkc: CHAR;
END;
Winsize =
RECORD
rows, cols: CARDINAL;
xpixels, ypixels: CARDINAL; (* not used *)
END;
PROCEDURE Ioctl(fd: CARDINAL; request: BITSET;
VAR argp: ARRAY OF BYTE;
argpsize: CARDINAL) : BOOLEAN;
(* argpsize: size of corresponding C-structure *)
PROCEDURE Stty(fd: CARDINAL; argp: Sgttyb) : BOOLEAN;
PROCEDURE Gtty(fd: CARDINAL; VAR argp: Sgttyb) : BOOLEAN;
PROCEDURE Isatty(fd: CARDINAL) : BOOLEAN;
PROCEDURE GetWinsize(fd: CARDINAL; VAR winbuf: Winsize) : BOOLEAN;
PROCEDURE Baudrate(speed: CHAR) : CARDINAL;
Stty and Gtty realize the setp and getp requests with type conversion for Modula-2. GetWinSize returns the filled Winsize structure and is useful for obtaining the number of rows and columns of a window device. The number of rows and columns equals 0 if fd is not connected to a window device. Isatty returns TRUE if fd is connected to a terminal device. Baudrate converts the baudrate information of the Sgttyb record (ispeed or ospeed component) into a cardinal.
Modula-2 || Compiler & Tools || Library || Search Engine