Corretti i commenti ai listati in una forma piu' leggibile (spero).
[gapil.git] / session.tex
index 26df18c843761f54e866ba4c8837b974da9fc7a8..dbee21978dc0b1289126948d8f0e2716d19e03ef 100644 (file)
@@ -234,7 +234,8 @@ processo padre, per impostare il valore nel figlio, che da quest'ultimo, per
 sé stesso, in modo che il cambiamento di \textit{process group} sia immediato
 per entrambi; una delle due chiamate sarà ridondante, ma non potendo
 determinare quale dei due processi viene eseguito per primo, occorre eseguirle
-comunque entrambe per evitare di esporsi ad una race condition. 
+comunque entrambe per evitare di esporsi ad una race 
+condition\index{race condition}. 
 
 Si noti come nessuna delle funzioni esaminate finora permetta di spostare un
 processo da una sessione ad un altra; infatti l'unico modo di far cambiare
@@ -1091,18 +1092,7 @@ ulteriori informazioni.\footnote{la definizione della struttura si trova in
 \begin{figure}[!htb] 
   \footnotesize \centering
   \begin{minipage}[c]{15cm}
-    \begin{lstlisting}[labelstep=0]{}
-struct termios {
-    tcflag_t c_iflag;      /* input modes */
-    tcflag_t c_oflag;      /* output modes */
-    tcflag_t c_cflag;      /* control modes */
-    tcflag_t c_lflag;      /* local modes */
-    cc_t c_cc[NCCS];       /* control characters */
-    cc_t c_line;           /* line discipline */
-    speed_t c_ispeed;      /* input speed */
-    speed_t c_ospeed;      /* output speed */
-;
-    \end{lstlisting}
+    \includestruct{listati/termios.h}
   \end{minipage} 
   \normalsize 
   \caption{La struttura \structd{termios}, che identifica le proprietà di un
@@ -1283,10 +1273,7 @@ della maschera, i valori da immettere infatti (quelli riportati nella
 spiegazione corrispondente) sono numerici e non per bit, per cui possono
 sovrapporsi fra di loro. Occorrerà perciò utilizzare un codice del tipo:
 
-\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{}%
-    c_oflag &= (~CRDLY);
-    c_oflag |= CR1;
-\end{lstlisting}
+\includecodesnip{listati/oflag.c}
 
 \noindent che prima cancella i bit della maschera in questione e poi setta il
 valore.
@@ -1555,9 +1542,7 @@ completo dei caratteri di controllo, con le costanti e delle funzionalit
 associate è riportato in \tabref{tab:sess_termios_cc}, usando quelle
 definizioni diventa possibile assegnare un nuovo carattere di controllo con un
 codice del tipo:
-\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{}%
-    value.c_cc[VEOL2] = '\n';
-\end{lstlisting}
+\includecodesnip{listati/value_c_cc.c}
 
 La maggior parte di questi caratteri (tutti tranne \const{VTIME} e
 \const{VMIN}) hanno effetto solo quando il terminale viene utilizzato in modo
@@ -1650,30 +1635,11 @@ effettuano pi
 chiamata a \func{tcgetattr} che essi siano stati eseguiti tutti quanti.
 
 \begin{figure}[!htb]
-  \footnotesize 
-  \begin{lstlisting}{}%
-#include <unistd.h>
-#include <termios.h>
-#include <errno.h>
-
-int SetTermAttr(int fd, tcflag_t flag) 
-{
-    struct termios values;
-    int res;
-    res = tcgetattr (desc, &values);
-    if (res) {
-        perror("Cannot get attributes");
-        return res;
-    }
-    values.c_lflag |= flag;
-    res = tcsetattr (desc, TCSANOW, &values);
-    if (res) {
-        perror("Cannot set attributes");
-        return res;
-    }
-    return 0;
-}
-  \end{lstlisting}
+  \footnotesize \centering
+  \begin{minipage}[c]{15cm}
+    \includecodesample{listati/SetTermAttr.c}
+  \end{minipage} 
+  \normalsize 
   \caption{Codice della funzione \func{SetTermAttr} che permette di
     impostare uno dei flag di controllo locale del terminale.}
   \label{fig:term_set_attr}
@@ -1702,33 +1668,18 @@ infine si scrive il nuovo valore modificato con \func{tcsetattr}
 o uscendo normalmente.
 
 \begin{figure}[!htb]
-  \footnotesize 
-  \begin{lstlisting}{}%
-int UnSetTermAttr(int fd, tcflag_t flag) 
-{
-    struct termios values;
-    int res;
-    res = tcgetattr (desc, &values);
-    if (res) {
-        perror("Cannot get attributes");
-        return res;
-    }
-    values.c_lflag &= (~flag);
-    res = tcsetattr (desc, TCSANOW, &values);
-    if (res) {
-        perror("Cannot set attributes");
-        return res;
-    }
-    return 0;
-}
-  \end{lstlisting}
+  \footnotesize \centering
+  \begin{minipage}[c]{15cm}
+    \includecodesample{listati/UnSetTermAttr.c}
+  \end{minipage} 
+  \normalsize 
   \caption{Codice della funzione \func{UnSetTermAttr} che permette di
     rimuovere uno dei flag di controllo locale del terminale.} 
   \label{fig:term_unset_attr}
 \end{figure}
 
 La seconda funzione, \func{UnSetTermAttr}, è assolutamente identica alla
-prima, solo che in questo caso (in \texttt{\small 15}) si rimuovono i bit
+prima, solo che in questo caso, in (\texttt{\small 15}), si rimuovono i bit
 specificati dall'argomento \param{flag} usando un AND binario del valore
 negato.