Sistemata la parte della allocazione della memoria, le variadic
[gapil.git] / sockctrl.tex
index 9e09813da8c0ea659e9158ff3907ed559a4028a6..29df12ba216f41c4858017ee92d21703f07c280d 100644 (file)
@@ -48,9 +48,8 @@ server che forniscono su internet questo servizio, mentre nel nostro caso
 affronteremo la problematica dal lato client, di un qualunque programma che
 necessita di compiere questa operazione.
 
 affronteremo la problematica dal lato client, di un qualunque programma che
 necessita di compiere questa operazione.
 
-\begin{figure}[htb]
-  \centering
-  \includegraphics[width=11cm]{img/resolver}
+\begin{figure}[!htb]
+  \centering \includegraphics[width=11cm]{img/resolver}
   \caption{Schema di funzionamento delle funzioni del \textit{resolver}.}
   \label{fig:sock_resolver_schema}
 \end{figure}
   \caption{Schema di funzionamento delle funzioni del \textit{resolver}.}
   \label{fig:sock_resolver_schema}
 \end{figure}
@@ -650,7 +649,7 @@ definizione è riportata in fig.~\ref{fig:sock_hostent_struct}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/hostent.h}
   \end{minipage}
   \caption{La struttura \structd{hostent} per la risoluzione dei nomi a
     \includestruct{listati/hostent.h}
   \end{minipage}
   \caption{La struttura \structd{hostent} per la risoluzione dei nomi a
@@ -716,9 +715,9 @@ che dovrà essere utilizzata nei risultati restituiti dalla funzione. Per tutto
 il resto la funzione è identica a \func{gethostbyname}, ed identici sono i
 suoi risultati.
 
 il resto la funzione è identica a \func{gethostbyname}, ed identici sono i
 suoi risultati.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/mygethost.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/mygethost.c}
   \end{minipage}
   \normalsize
@@ -887,7 +886,7 @@ usare la funzione \funcd{gethostbyaddr}, il cui prototipo è:
   Richiede la risoluzione inversa di un indirizzo IP.
        
   \bodydesc{La funzione restituisce l'indirizzo ad una struttura
   Richiede la risoluzione inversa di un indirizzo IP.
        
   \bodydesc{La funzione restituisce l'indirizzo ad una struttura
-    \struct{hostent} in caso di successo ed \const{NULL} in caso di errore.}
+    \struct{hostent} in caso di successo ed \val{NULL} in caso di errore.}
 \end{functions}
 
 In questo caso l'argomento \param{addr} dovrà essere il puntatore ad una
 \end{functions}
 
 In questo caso l'argomento \param{addr} dovrà essere il puntatore ad una
@@ -939,7 +938,7 @@ cui prototipi sono:
   indirizzo IP.
        
   \bodydesc{Entrambe le funzioni restituiscono l'indirizzo ad una struttura
   indirizzo IP.
        
   \bodydesc{Entrambe le funzioni restituiscono l'indirizzo ad una struttura
-    \struct{hostent} in caso di successo ed \const{NULL} in caso di errore.}
+    \struct{hostent} in caso di successo ed \val{NULL} in caso di errore.}
 \end{functions}
 
 Entrambe le funzioni supportano esplicitamente la scelta di una famiglia di
 \end{functions}
 
 Entrambe le funzioni supportano esplicitamente la scelta di una famiglia di
@@ -1077,7 +1076,7 @@ il nome e viceversa; i loro prototipi sono:
   Risolvono il nome di un servizio nel rispettivo numero di porta e viceversa.
        
   \bodydesc{Ritornano il puntatore ad una struttura \struct{servent} con i
   Risolvono il nome di un servizio nel rispettivo numero di porta e viceversa.
        
   \bodydesc{Ritornano il puntatore ad una struttura \struct{servent} con i
-    risultati in caso di successo, o \const{NULL} in caso di errore.}
+    risultati in caso di successo, o \val{NULL} in caso di errore.}
 \end{functions}
 
 Entrambe le funzioni prendono come ultimo argomento una stringa \param{proto}
 \end{functions}
 
 Entrambe le funzioni prendono come ultimo argomento una stringa \param{proto}
@@ -1107,7 +1106,7 @@ quindi la funzione non è \index{funzioni!rientranti} rientrante.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/servent.h}
   \end{minipage}
   \caption{La struttura \structd{servent} per la risoluzione dei nomi dei
     \includestruct{listati/servent.h}
   \end{minipage}
   \caption{La struttura \structd{servent} per la risoluzione dei nomi dei
@@ -1150,7 +1149,7 @@ dei servizi avremo allora le tre funzioni \funcd{setservent},
 
   \bodydesc{Le due funzioni \func{setservent} e \func{endservent} non
     restituiscono nulla, \func{getservent} restituisce il puntatore ad una
 
   \bodydesc{Le due funzioni \func{setservent} e \func{endservent} non
     restituiscono nulla, \func{getservent} restituisce il puntatore ad una
-    struttura \struct{servent} in caso di successo e \const{NULL} in caso di
+    struttura \struct{servent} in caso di successo e \val{NULL} in caso di
     errore o fine del file.}
 \end{functions}
 
     errore o fine del file.}
 \end{functions}
 
@@ -1250,7 +1249,7 @@ forma \textit{dotted-decimal} per IPv4 o in formato esadecimale per IPv6.  Si
 può anche specificare il nome di una rete invece che di una singola macchina.
 Il secondo argomento, \param{service}, specifica invece il nome del servizio
 che si intende risolvere. Per uno dei due argomenti si può anche usare il
 può anche specificare il nome di una rete invece che di una singola macchina.
 Il secondo argomento, \param{service}, specifica invece il nome del servizio
 che si intende risolvere. Per uno dei due argomenti si può anche usare il
-valore \const{NULL}, nel qual caso la risoluzione verrà effettuata soltanto
+valore \val{NULL}, nel qual caso la risoluzione verrà effettuata soltanto
 sulla base del valore dell'altro.
 
 Il terzo argomento, \param{hints}, deve essere invece un puntatore ad una
 sulla base del valore dell'altro.
 
 Il terzo argomento, \param{hints}, deve essere invece un puntatore ad una
@@ -1273,7 +1272,7 @@ tipo \struct{addrinfo} contenenti tutte le informazioni ottenute.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/addrinfo.h}
   \end{minipage}
   \caption{La struttura \structd{addrinfo} usata nella nuova interfaccia POSIX
     \includestruct{listati/addrinfo.h}
   \end{minipage}
   \caption{La struttura \structd{addrinfo} usata nella nuova interfaccia POSIX
@@ -1308,7 +1307,7 @@ risultato, \var{ai\_next} è un puntatore alla successiva struttura
 \struct{addrinfo} della lista.
 
 Ovviamente non è necessario dare dei suggerimenti in ingresso, ed usando
 \struct{addrinfo} della lista.
 
 Ovviamente non è necessario dare dei suggerimenti in ingresso, ed usando
-\const{NULL} come valore per l'argomento \param{hints} si possono compiere
+\val{NULL} come valore per l'argomento \param{hints} si possono compiere
 ricerche generiche.  Se però si specifica un valore non nullo questo deve
 puntare ad una struttura \struct{addrinfo} precedentemente allocata nella
 quale siano stati opportunamente impostati i valori dei campi
 ricerche generiche.  Se però si specifica un valore non nullo questo deve
 puntare ad una struttura \struct{addrinfo} precedentemente allocata nella
 quale siano stati opportunamente impostati i valori dei campi
@@ -1344,7 +1343,7 @@ nella selezione.
     \const{AI\_PASSIVE}    & Viene utilizzato per ottenere un indirizzo in
                              formato adatto per una successiva chiamata a
                              \func{bind}. Se specificato quando si è usato 
     \const{AI\_PASSIVE}    & Viene utilizzato per ottenere un indirizzo in
                              formato adatto per una successiva chiamata a
                              \func{bind}. Se specificato quando si è usato 
-                             \const{NULL} come valore per \param{node} gli
+                             \val{NULL} come valore per \param{node} gli
                              indirizzi restituiti saranno inizializzati al
                              valore generico (\const{INADDR\_ANY} per IPv4 e
                              \const{IN6ADDR\_ANY\_INIT} per IPv6), altrimenti
                              indirizzi restituiti saranno inizializzati al
                              valore generico (\const{INADDR\_ANY} per IPv4 e
                              \const{IN6ADDR\_ANY\_INIT} per IPv6), altrimenti
@@ -1411,7 +1410,7 @@ corrispondente è riportato tramite \var{errno}.
                            validi. \\
     \const{EAI\_NONAME}  & Il nome a dominio o il servizio non sono noti,
                            viene usato questo errore anche quando si specifica
                            validi. \\
     \const{EAI\_NONAME}  & Il nome a dominio o il servizio non sono noti,
                            viene usato questo errore anche quando si specifica
-                           il valore \const{NULL} per entrambi gli argomenti
+                           il valore \val{NULL} per entrambi gli argomenti
                            \param{node} e \param{service}. \\
     \const{EAI\_SERVICE} & Il servizio richiesto non è disponibile per il tipo
                            di socket richiesto, anche se può esistere per
                            \param{node} e \param{service}. \\
     \const{EAI\_SERVICE} & Il servizio richiesto non è disponibile per il tipo
                            di socket richiesto, anche se può esistere per
@@ -1490,9 +1489,9 @@ dell'argomento \var{hints} per restringere le ricerche su protocolli, tipi di
 socket o famiglie di indirizzi, è disponibile nel file \texttt{mygetaddr.c}
 dei sorgenti allegati alla guida.
 
 socket o famiglie di indirizzi, è disponibile nel file \texttt{mygetaddr.c}
 dei sorgenti allegati alla guida.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/mygetaddr.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/mygetaddr.c}
   \end{minipage}
   \normalsize
@@ -1630,7 +1629,7 @@ I risultati della funzione saranno restituiti nelle due stringhe puntate da
 \param{host} e \param{serv}, che dovranno essere state precedentemente
 allocate per una lunghezza massima che deve essere specificata con gli altri
 due argomenti \param{hostlen} e \param{servlen}. Si può, quando non si è
 \param{host} e \param{serv}, che dovranno essere state precedentemente
 allocate per una lunghezza massima che deve essere specificata con gli altri
 due argomenti \param{hostlen} e \param{servlen}. Si può, quando non si è
-interessati ad uno dei due, passare il valore \const{NULL} come argomento,
+interessati ad uno dei due, passare il valore \val{NULL} come argomento,
 così che la corrispondente informazione non verrà richiesta. Infine l'ultimo
 argomento \param{flags} è una maschera binaria i cui bit consentono di
 impostare le modalità con cui viene eseguita la ricerca, e deve essere
 così che la corrispondente informazione non verrà richiesta. Infine l'ultimo
 argomento \param{flags} è una maschera binaria i cui bit consentono di
 impostare le modalità con cui viene eseguita la ricerca, e deve essere
@@ -1694,9 +1693,9 @@ fig.~\ref{fig:sockconn_code}, il codice completo è nel file \file{SockUtil.c}
 dei sorgenti allegati alla guida, che contiene varie funzioni di utilità per
 l'uso dei socket.
 
 dei sorgenti allegati alla guida, che contiene varie funzioni di utilità per
 l'uso dei socket.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/sockconn.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/sockconn.c}
   \end{minipage}
   \normalsize
@@ -1755,9 +1754,9 @@ ritornata contiene indirizzi IPv6 o IPv4, in quanto si fa uso direttamente dei
 dati relativi alle strutture degli indirizzi di \struct{addrinfo} che sono
 \textsl{opachi} rispetto all'uso della funzione \func{connect}.
 
 dati relativi alle strutture degli indirizzi di \struct{addrinfo} che sono
 \textsl{opachi} rispetto all'uso della funzione \func{connect}.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/TCP_echo_fifth.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/TCP_echo_fifth.c}
   \end{minipage}
   \normalsize
@@ -1776,9 +1775,9 @@ codice completo è nel file \file{TCP\_echo\_fifth.c} dei sorgenti allegati)
 consente di utilizzare come argomento del programma un nome a dominio al posto
 dell'indirizzo numerico, e può utilizzare sia indirizzi IPv4 che IPv6.
 
 consente di utilizzare come argomento del programma un nome a dominio al posto
 dell'indirizzo numerico, e può utilizzare sia indirizzi IPv4 che IPv6.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/sockbind.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/sockbind.c}
   \end{minipage}
   \normalsize
@@ -1802,7 +1801,7 @@ indirizzo specifico come argomento di \func{bind}, che consente di porre il
 server in ascolto su uno solo dei possibili diversi indirizzi presenti su di
 una macchina.  Se non si vuole che la funzione esegua \func{bind} su un
 indirizzo specifico, ma utilizzi l'indirizzo generico, occorrerà avere cura di
 server in ascolto su uno solo dei possibili diversi indirizzi presenti su di
 una macchina.  Se non si vuole che la funzione esegua \func{bind} su un
 indirizzo specifico, ma utilizzi l'indirizzo generico, occorrerà avere cura di
-passare un valore \const{NULL} come valore per l'argomento \var{host}; l'uso
+passare un valore \val{NULL} come valore per l'argomento \var{host}; l'uso
 del valore \const{AI\_PASSIVE} serve ad ottenere il valore generico nella
 rispettiva struttura degli indirizzi.
 
 del valore \const{AI\_PASSIVE} serve ad ottenere il valore generico nella
 rispettiva struttura degli indirizzi.
 
@@ -1824,9 +1823,9 @@ ha successo il programma deve uscire immediatamente prima di essere posto in
 background, e può quindi scrivere gli errori direttamente sullo standard
 error.
 
 background, e può quindi scrivere gli errori direttamente sullo standard
 error.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/TCP_echod_third.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/TCP_echod_third.c}
   \end{minipage}
   \normalsize
@@ -1948,7 +1947,7 @@ Il quarto argomento, \param{optval} è un puntatore ad una zona di memoria che
 contiene i dati che specificano il valore dell'opzione che si vuole passare al
 socket, mentre l'ultimo argomento \param{optlen},\footnote{questo argomento è
   in realtà sempre di tipo \ctyp{int}, come era nelle \acr{libc4} e
 contiene i dati che specificano il valore dell'opzione che si vuole passare al
 socket, mentre l'ultimo argomento \param{optlen},\footnote{questo argomento è
   in realtà sempre di tipo \ctyp{int}, come era nelle \acr{libc4} e
-  \acr{libc5}; l'uso di \ctyp{socklen\_t} è stato introdotto da POSIX (valgono
+  \acr{libc5}; l'uso di \type{socklen\_t} è stato introdotto da POSIX (valgono
   le stesse considerazioni per l'uso di questo tipo di dato fatte in
   sez.~\ref{sec:TCP_func_accept}) ed adottato dalle \acr{glibc}.} è la
 dimensione in byte dei dati presenti all'indirizzo indicato da \param{optval}.
   le stesse considerazioni per l'uso di questo tipo di dato fatte in
   sez.~\ref{sec:TCP_func_accept}) ed adottato dalle \acr{glibc}.} è la
 dimensione in byte dei dati presenti all'indirizzo indicato da \param{optval}.
@@ -1960,7 +1959,7 @@ La gran parte delle opzioni utilizzano per \param{optval} un valore intero, se
 poi l'opzione esprime una condizione logica, il valore è sempre un intero, ma
 si dovrà usare un valore non nullo per abilitarla ed un valore nullo per
 disabilitarla.  Se invece l'opzione non prevede di dover ricevere nessun tipo
 poi l'opzione esprime una condizione logica, il valore è sempre un intero, ma
 si dovrà usare un valore non nullo per abilitarla ed un valore nullo per
 disabilitarla.  Se invece l'opzione non prevede di dover ricevere nessun tipo
-di valore si deve impostare \param{optval} a \const{NULL}. Un piccolo numero
+di valore si deve impostare \param{optval} a \val{NULL}. Un piccolo numero
 di opzioni però usano dei tipi di dati peculiari, è questo il motivo per cui
 \param{optval} è stato definito come puntatore generico.
 
 di opzioni però usano dei tipi di dati peculiari, è questo il motivo per cui
 \param{optval} è stato definito come puntatore generico.
 
@@ -2416,9 +2415,9 @@ attesa di dati in ingresso su una connessione che non arriveranno mai o perché
 il client sull'altro capo non è più attivo o perché non è più in grado di
 comunicare con il server via rete.
 
 il client sull'altro capo non è più attivo o perché non è più in grado di
 comunicare con il server via rete.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/TCP_echod_fourth.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/TCP_echod_fourth.c}
   \end{minipage}
   \normalsize
@@ -2514,9 +2513,9 @@ completo della funzione si trova, insieme alle altre funzioni di servizio dei
 socket, all'interno del file \texttt{SockUtils.c} dei sorgenti allegati alla
 guida.
 
 socket, all'interno del file \texttt{SockUtils.c} dei sorgenti allegati alla
 guida.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/sockbindopt.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/sockbindopt.c}
   \end{minipage}
   \normalsize
@@ -2548,9 +2547,9 @@ riportata in fig.~\ref{fig:TCP_echod_fifth}) se ne potrà impostare ad 1 il
 valore, per cui in tal caso la successiva chiamata (\texttt{\small 13-17}) a
 \func{setsockopt} attiverà l'opzione \const{SO\_REUSEADDR}.
 
 valore, per cui in tal caso la successiva chiamata (\texttt{\small 13-17}) a
 \func{setsockopt} attiverà l'opzione \const{SO\_REUSEADDR}.
 
-\begin{figure}[!htb] 
+\begin{figure}[!htbp
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/TCP_echod_fifth.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/TCP_echod_fifth.c}
   \end{minipage}
   \normalsize
@@ -2649,7 +2648,7 @@ dal kernel.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/linger.h}
   \end{minipage}
   \caption{La struttura \structd{linger} richiesta come valore dell'argomento
     \includestruct{listati/linger.h}
   \end{minipage}
   \caption{La struttura \structd{linger} richiesta come valore dell'argomento
@@ -2683,9 +2682,9 @@ fig.~\ref{fig:TCP_echo_sixth} la sezione di codice che permette di introdurre
 questa funzionalità,; al solito il codice completo è disponibile nei sorgenti
 allegati.
 
 questa funzionalità,; al solito il codice completo è disponibile nei sorgenti
 allegati.
 
-\begin{figure}[!htb] 
+\begin{figure}[!htbp
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/TCP_echo_sixth.c}
   \end{minipage}
   \normalsize
     \includecodesample{listati/TCP_echo_sixth.c}
   \end{minipage}
   \normalsize
@@ -2825,7 +2824,7 @@ seguente elenco:
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/pktinfo.h}
   \end{minipage}
   \caption{La struttura \structd{pktinfo} usata dall'opzione
     \includestruct{listati/pktinfo.h}
   \end{minipage}
   \caption{La struttura \structd{pktinfo} usata dall'opzione
@@ -3056,7 +3055,7 @@ sez.~\ref{sec:net_sendmsg}).
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/ip_mreqn.h}
   \end{minipage}
   \caption{La struttura \structd{ip\_mreqn} utilizzata dalle opzioni dei
     \includestruct{listati/ip_mreqn.h}
   \end{minipage}
   \caption{La struttura \structd{ip\_mreqn} utilizzata dalle opzioni dei
@@ -3339,7 +3338,7 @@ quantità di dettagli è fornita nel seguente elenco:
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/tcp_info.h}
   \end{minipage}
   \caption{La struttura \structd{tcp\_info} contenente le informazioni sul
     \includestruct{listati/tcp_info.h}
   \end{minipage}
   \caption{La struttura \structd{tcp\_info} contenente le informazioni sul
@@ -3362,9 +3361,9 @@ quantità di dettagli è fornita nel seguente elenco:
   in fig.~\ref{fig:is_closing}, in cui si utilizza il valore del campo
   \var{tcpi\_state} di \struct{tcp\_info} per controllare lo stato del socket.
 
   in fig.~\ref{fig:is_closing}, in cui si utilizza il valore del campo
   \var{tcpi\_state} di \struct{tcp\_info} per controllare lo stato del socket.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/is_closing.c}
   \end{minipage}
   \caption{Codice della funzione \texttt{is\_closing.c}, che controlla lo stato
     \includecodesample{listati/is_closing.c}
   \end{minipage}
   \caption{Codice della funzione \texttt{is\_closing.c}, che controlla lo stato
@@ -3582,8 +3581,8 @@ identificano le operazioni sono le seguenti:
     accennato in sez.~\ref{sec:net_tcp}.} dei pacchetti sulla rete.
 
 \item[\const{SIOCSPGRP}] imposta il processo o il \itindex{process~group}
     accennato in sez.~\ref{sec:net_tcp}.} dei pacchetti sulla rete.
 
 \item[\const{SIOCSPGRP}] imposta il processo o il \itindex{process~group}
-  \textit{process group} a cui inviare i segnali \const{SIGIO} e
-  \const{SIGURG} quando viene completata una operazione di I/O asincrono o
+  \textit{process group} a cui inviare i segnali \signal{SIGIO} e
+  \signal{SIGURG} quando viene completata una operazione di I/O asincrono o
   arrivano dei dati urgenti \itindex{out-of-band} (\texttt{out-of-band}). Il
   terzo argomento deve essere un puntatore ad una variabile di tipo
   \type{pid\_t}; un valore positivo indica direttamente il \acr{pid} del
   arrivano dei dati urgenti \itindex{out-of-band} (\texttt{out-of-band}). Il
   terzo argomento deve essere un puntatore ad una variabile di tipo
   \type{pid\_t}; un valore positivo indica direttamente il \acr{pid} del
@@ -3594,15 +3593,15 @@ identificano le operazioni sono le seguenti:
 
 \item[\const{SIOCGPGRP}] legge le impostazioni presenti sul socket
   relativamente all'eventuale processo o \itindex{process~group}
 
 \item[\const{SIOCGPGRP}] legge le impostazioni presenti sul socket
   relativamente all'eventuale processo o \itindex{process~group}
-  \textit{process group} cui devono essere inviati i segnali \const{SIGIO} e
-  \const{SIGURG}. Come per \const{SIOCSPGRP} l'argomento passato deve un
+  \textit{process group} cui devono essere inviati i segnali \signal{SIGIO} e
+  \signal{SIGURG}. Come per \const{SIOCSPGRP} l'argomento passato deve un
   puntatore ad una variabile di tipo \type{pid\_t}, con lo stesso significato.
   Qualora non sia presente nessuna impostazione verrà restituito un valore
   nullo.
 
 \item[\const{FIOASYNC}] Abilita o disabilita la modalità di I/O asincrono sul
   socket. Questo significa (vedi sez.~\ref{sec:file_asyncronous_operation})
   puntatore ad una variabile di tipo \type{pid\_t}, con lo stesso significato.
   Qualora non sia presente nessuna impostazione verrà restituito un valore
   nullo.
 
 \item[\const{FIOASYNC}] Abilita o disabilita la modalità di I/O asincrono sul
   socket. Questo significa (vedi sez.~\ref{sec:file_asyncronous_operation})
-  che verrà inviato il segnale di \const{SIGIO} (o quanto impostato con
+  che verrà inviato il segnale di \signal{SIGIO} (o quanto impostato con
   \const{F\_SETSIG}, vedi sez.~\ref{sec:file_fcntl}) in caso di eventi di I/O
   sul socket.
 \end{basedescript}
   \const{F\_SETSIG}, vedi sez.~\ref{sec:file_fcntl}) in caso di eventi di I/O
   sul socket.
 \end{basedescript}
@@ -3629,7 +3628,7 @@ permette di impostare e rilevare le funzionalità delle interfacce di rete.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/ifreq.h}
   \end{minipage}
   \caption{La struttura \structd{ifreq} utilizzata dalle \func{ioctl} per le
     \includestruct{listati/ifreq.h}
   \end{minipage}
   \caption{La struttura \structd{ifreq} utilizzata dalle \func{ioctl} per le
@@ -3644,7 +3643,7 @@ il primo campo della struttura, \var{ifr\_name} per specificare il nome
 dell'interfaccia su cui si vuole operare (ad esempio \texttt{eth0},
 \texttt{ppp0}, ecc.), e si inseriscono (o ricevono) i valori relativi alle
 diversa caratteristiche e funzionalità nel secondo campo, che come si può
 dell'interfaccia su cui si vuole operare (ad esempio \texttt{eth0},
 \texttt{ppp0}, ecc.), e si inseriscono (o ricevono) i valori relativi alle
 diversa caratteristiche e funzionalità nel secondo campo, che come si può
-notare è definito come una \ctyp{union} proprio in quanto il suo significato
+notare è definito come una \direct{union} proprio in quanto il suo significato
 varia a secondo dell'operazione scelta.
 
 Si tenga inoltre presente che alcune di queste operazioni (in particolare
 varia a secondo dell'operazione scelta.
 
 Si tenga inoltre presente che alcune di queste operazioni (in particolare
@@ -3778,7 +3777,7 @@ sono le seguenti:
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/ifmap.h}
   \end{minipage}
   \caption{La struttura \structd{ifmap} utilizzata per leggere ed impostare i
     \includestruct{listati/ifmap.h}
   \end{minipage}
   \caption{La struttura \structd{ifmap} utilizzata per leggere ed impostare i
@@ -3830,7 +3829,7 @@ fig.~\ref{fig:netdevice_ifconf_struct}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/ifconf.h}
   \end{minipage}
   \caption{La struttura \structd{ifconf}.}
     \includestruct{listati/ifconf.h}
   \end{minipage}
   \caption{La struttura \structd{ifconf}.}
@@ -3844,7 +3843,7 @@ questo buffer deve essere specificata nel campo \var{ifc\_len} di
 \var{ifc\_req}. Qualora il buffer sia stato allocato come una stringa, il suo
 indirizzo potrà essere fornito usando il campo \var{ifc\_buf}.\footnote{si
   noti che l'indirizzo del buffer è definito in \struct{ifconf} con una
 \var{ifc\_req}. Qualora il buffer sia stato allocato come una stringa, il suo
 indirizzo potrà essere fornito usando il campo \var{ifc\_buf}.\footnote{si
   noti che l'indirizzo del buffer è definito in \struct{ifconf} con una
-  \ctyp{union}, questo consente di utilizzare una delle due forme a piacere.}
+  \direct{union}, questo consente di utilizzare una delle due forme a piacere.}
 
 La funzione restituisce nel buffer indicato una serie di strutture
 \struct{ifreq} contenenti nel campo \var{ifr\_name} il nome dell'interfaccia e
 
 La funzione restituisce nel buffer indicato una serie di strutture
 \struct{ifreq} contenenti nel campo \var{ifr\_name} il nome dell'interfaccia e
@@ -3864,9 +3863,9 @@ probabilmente\footnote{probabilmente perché si potrebbe essere nella
   condizione in cui sono stati usati esattamente quel numero di byte.} avuta
 una situazione di troncamento dei dati.
 
   condizione in cui sono stati usati esattamente quel numero di byte.} avuta
 una situazione di troncamento dei dati.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/iflist.c}
   \end{minipage}
   \caption{Il corpo principale del programma \texttt{iflist.c}.}
     \includecodesample{listati/iflist.c}
   \end{minipage}
   \caption{Il corpo principale del programma \texttt{iflist.c}.}
@@ -4190,9 +4189,9 @@ di manuale accessibile con \texttt{man 7 ip}, sono i seguenti:
   procedimento del \itindex{Maximum~Transfer~Unit} \textit{Path MTU discovery}
   fallisce; dato che questo può avvenire a causa di router\footnote{ad
     esempio se si scartano tutti i pacchetti ICMP, il problema è affrontato
   procedimento del \itindex{Maximum~Transfer~Unit} \textit{Path MTU discovery}
   fallisce; dato che questo può avvenire a causa di router\footnote{ad
     esempio se si scartano tutti i pacchetti ICMP, il problema è affrontato
-    anche in sez.~1.4.4 di \cite{FwGL}.} o interfacce\footnote{ad esempio se i
+    anche in sez.~3.4.4 di \cite{SGL}.} o interfacce\footnote{ad esempio se i
     due capi di un collegamento \textit{point-to-point} non si accordano sulla
     due capi di un collegamento \textit{point-to-point} non si accordano sulla
-    stessa MTU.}  mal configurate è opportuno correggere le configurazioni,
+    stessa MTU.}  mal configurati è opportuno correggere le configurazioni,
   perché disabilitare globalmente il procedimento con questo parametro ha
   pesanti ripercussioni in termini di prestazioni di rete.
 
   perché disabilitare globalmente il procedimento con questo parametro ha
   pesanti ripercussioni in termini di prestazioni di rete.