Design and Implementation of a Documentation Tool for ... - MADOC
Design and Implementation of a Documentation Tool for ... - MADOC
Design and Implementation of a Documentation Tool for ... - MADOC
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
A new PTY master is requested like this:<br />
29a 〈open new pseudo terminal 28e〉+≡ (7b) ⊳ 28e 29b ⊲<br />
if ((PTM = posix_openpt(O_RDWR)) < 0) {<br />
perror("openpt");<br />
die("openpt failed", 0);<br />
}<br />
Uses die 23b <strong>and</strong> PTM 28c.<br />
Then, access to the slave is granted.<br />
29b 〈open new pseudo terminal 28e〉+≡ (7b) ⊳ 29a 29c ⊲<br />
if (grantpt(PTM) < 0) {<br />
perror("grantpt");<br />
die("grantpt failed", 0);<br />
}<br />
if (unlockpt(PTM) < 0) {<br />
perror("unlockpt");<br />
die("unlockpt failed", 0);<br />
}<br />
Uses die 23b <strong>and</strong> PTM 28c.<br />
The slaves device file name is requested using ptsname(). Since the name<br />
is not needed during further execution, the slave will be opened <strong>and</strong> its file<br />
descriptor stored.<br />
29c 〈open new pseudo terminal 28e〉+≡ (7b) ⊳ 29b 29d ⊲<br />
{ char *pts = NULL;<br />
if ((pts = ptsname(PTM)) != NULL) {<br />
if ((PTS = open(pts, O_RDWR)) < 0) {<br />
perror(pts);<br />
die("pts open failed", 0);<br />
}<br />
} else {<br />
perror("ptsname");<br />
die("ptsname failed", 0);<br />
}<br />
}<br />
Uses die 23b <strong>and</strong> PTM 28c.<br />
The parent terminal will be configured into a raw mode <strong>of</strong> operation. script<br />
does this by calling cfmakeraw(), which is a nonst<strong>and</strong>ard BSD function. For<br />
portability reasons <strong>for</strong>script sets the corresponding bits manually, thereby<br />
emulating cfmakeraw(). The list <strong>of</strong> settings is taken from the termios(3) Linux<br />
man page [3] <strong>and</strong> should be equivalent. Afterwards, the settings <strong>of</strong> the terminal<br />
<strong>for</strong>script was started in will be copied to the new terminal. This means that<br />
in the eyes <strong>of</strong> the user the terminals behavior will not change, but <strong>for</strong>script<br />
can now document the terminals data stream with maximum accuracy.<br />
29d 〈open new pseudo terminal 28e〉+≡ (7b) ⊳ 29c<br />
{<br />
struct termios rtt = TT;<br />
29