Le funzioni illustrate finora hanno un difetto: utilizzando una area di
memoria interna per allocare i contenuti della struttura \struct{hostent} non
-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.}
+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.}
Per ovviare a questi problemi nelle \acr{glibc} sono definite anche delle
-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:
+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:
\begin{functions}
\headdecl{netdb.h}
\headdecl{sys/socket.h}
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 \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
+essere 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
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 è \index{funzioni!rientranti}
-rientrante.
+memoria statica e che quindi la funzione non è rientrante.
\begin{figure}[!htb]
\footnotesize \centering
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 è
-\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.
+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