Alcune indicizzazioni ulteriori, trattata _FORTIFY_SOURCE e messi
[gapil.git] / sockctrl.tex
index 709887390f5eb15d59178645f012523127db5b47..98d1b10ad2af706bcc73894196979bf5ba6a307b 100644 (file)
@@ -781,25 +781,25 @@ ci sono precauzioni particolari da prendere.\footnote{volendo essere pignoli
 
 Le funzioni illustrate finora hanno un difetto: utilizzando una area di
 memoria interna per allocare i contenuti della struttura \struct{hostent} non
-possono essere rientranti. Questo comporta anche che in due successive
-chiamate i dati potranno essere sovrascritti. Si tenga presente poi che
-copiare il contenuto della sola struttura non è sufficiente per salvare tutti
-i dati, in quanto questa contiene puntatori ad altri dati, che pure possono
-essere sovrascritti; per questo motivo, se si vuole salvare il risultato di
-una chiamata, occorrerà eseguire quella che si chiama una \itindex{deep~copy}
-\textit{deep copy}.\footnote{si chiama così quella tecnica per cui, quando si
-  deve copiare il contenuto di una struttura complessa (con puntatori che
-  puntano ad altri dati, che a loro volta possono essere puntatori ad altri
-  dati) si deve copiare non solo il contenuto della struttura, ma eseguire una
-  scansione per risolvere anche tutti i puntatori contenuti in essa (e così
-  via se vi sono altre sotto-strutture con altri puntatori) e copiare anche i
-  dati da questi referenziati.}
+possono essere\index{funzioni!rientranti} rientranti. Questo comporta anche
+che in due successive chiamate i dati potranno essere sovrascritti. Si tenga
+presente poi che copiare il contenuto della sola struttura non è sufficiente
+per salvare tutti i dati, in quanto questa contiene puntatori ad altri dati,
+che pure possono essere sovrascritti; per questo motivo, se si vuole salvare
+il risultato di una chiamata, occorrerà eseguire quella che si chiama una
+\itindex{deep~copy} \textit{deep copy}.\footnote{si chiama così quella tecnica
+  per cui, quando si deve copiare il contenuto di una struttura complessa (con
+  puntatori che puntano ad altri dati, che a loro volta possono essere
+  puntatori ad altri dati) si deve copiare non solo il contenuto della
+  struttura, ma eseguire una scansione per risolvere anche tutti i puntatori
+  contenuti in essa (e così via se vi sono altre sotto-strutture con altri
+  puntatori) e copiare anche i dati da questi referenziati.}
 
 Per ovviare a questi problemi nelle \acr{glibc} sono definite anche delle
-versioni rientranti delle precedenti funzioni, al solito queste sono
-caratterizzate dall'avere un suffisso \texttt{\_r}, pertanto avremo le due
-funzioni \funcd{gethostbyname\_r} e \funcd{gethostbyname2\_r} i cui prototipi
-sono:
+versioni \index{funzioni!rientranti} rientranti delle precedenti funzioni, al
+solito queste sono caratterizzate dall'avere un suffisso \texttt{\_r},
+pertanto avremo le due funzioni \funcd{gethostbyname\_r} e
+\funcd{gethostbyname2\_r} i cui prototipi sono:
 \begin{functions}
   \headdecl{netdb.h} 
   \headdecl{sys/socket.h}
@@ -837,8 +837,8 @@ In caso di successo entrambe le funzioni restituiscono un valore nullo,
 altrimenti restituiscono un codice di errore negativo e all'indirizzo puntato
 da \param{result} sarà salvato un puntatore nullo, mentre a quello puntato da
 \param{h\_errnop} sarà salvato il valore del codice di errore, dato che per
-essere rientrante la funzione non può la variabile globale \var{h\_errno}. In
-questo caso il codice di errore, oltre ai valori di
+essere \index{funzioni!rientranti} rientrante la funzione non può la variabile
+globale \var{h\_errno}. In questo caso il codice di errore, oltre ai valori di
 tab.~\ref{tab:h_errno_values}, può avere anche quello di \errcode{ERANGE}
 qualora il buffer allocato su \param{buf} non sia sufficiente a contenere i
 dati, in tal caso si dovrà semplicemente ripetere l'esecuzione della funzione
@@ -1103,7 +1103,7 @@ specificati; se la risoluzione ha successo viene restituito un puntatore ad
 una apposita struttura \struct{servent} contenente tutti i risultati,
 altrimenti viene restituito un puntatore nullo.  Si tenga presente che anche
 in questo caso i dati vengono mantenuti in una area di memoria statica e che
-quindi la funzione non è rientrante.
+quindi la funzione non è \index{funzioni!rientranti} rientrante.
 
 \begin{figure}[!htb]
   \footnotesize \centering
@@ -1265,11 +1265,11 @@ Come ultimo argomento in \param{res} deve essere passato un puntatore ad una
 variabile (di tipo puntatore ad una struttura \struct{addrinfo}) che verrà
 utilizzata dalla funzione per riportare (come \itindex{value~result~argument}
 \textit{value result argument}) i propri risultati. La funzione infatti è
-rientrante, ed alloca autonomamente tutta la memoria necessaria in cui
-verranno riportati i risultati della risoluzione.  La funzione scriverà
-all'indirizzo puntato da \param{res} il puntatore iniziale ad una
-\itindex{linked~list} \textit{linked list} di strutture di tipo
-\struct{addrinfo} contenenti tutte le informazioni ottenute.
+\index{funzioni!rientranti} rientrante, ed alloca autonomamente tutta la
+memoria necessaria in cui verranno riportati i risultati della risoluzione.
+La funzione scriverà all'indirizzo puntato da \param{res} il puntatore
+iniziale ad una \itindex{linked~list} \textit{linked list} di strutture di
+tipo \struct{addrinfo} contenenti tutte le informazioni ottenute.
 
 \begin{figure}[!htb]
   \footnotesize \centering