Altre correzioni, con esempi sul server fortunes e relativa "demonizzazzione"
[gapil.git] / filestd.tex
index 5bf7cf48a2c56011684998bc940c0370c8e1d99d..eb62d0a0b5098904971277c4894c261d925bc625 100644 (file)
@@ -81,14 +81,13 @@ contengono tutte le informazioni necessarie a gestire le operazioni sugli
 stream, come la posizione corrente, lo stato del buffer e degli indicatori di
 stato e di fine del file.
 
 stream, come la posizione corrente, lo stato del buffer e degli indicatori di
 stato e di fine del file.
 
-Per questo motivo gli utenti non devono mai utilizzare direttamente o
-allocare queste strutture, ma usare sempre puntatori del tipo \ctyp{FILE
-  *} ottenuti dalla libreria stessa (tanto che in certi casi il termine
-di puntatore a file è diventato sinonimo di stream).  Tutte le funzioni
-della libreria che operano sui file accettano come parametri solo
-variabili di questo tipo, che diventa accessibile includendo l'header
-file \file{stdio.h}.
-
+Per questo motivo gli utenti non devono mai utilizzare direttamente o allocare
+queste strutture (che sono dei \textsl{tipi opachi}\index{tipo!opaco}) ma
+usare sempre puntatori del tipo \ctyp{FILE *} ottenuti dalla libreria stessa
+(tanto che in certi casi il termine di puntatore a file è diventato sinonimo
+di stream).  Tutte le funzioni della libreria che operano sui file accettano
+come parametri solo variabili di questo tipo, che diventa accessibile
+includendo l'header file \file{stdio.h}.
 
 
 \subsection{Gli stream standard}
 
 
 \subsection{Gli stream standard}
@@ -138,7 +137,7 @@ uno degli aspetti pi
 riguarda l'aspetto della scrittura dei dati sul file.
 
 I caratteri che vengono scritti su di uno stream normalmente vengono
 riguarda l'aspetto della scrittura dei dati sul file.
 
 I caratteri che vengono scritti su di uno stream normalmente vengono
-accumulati in un buffer e poi trasmessi in blocco\footnote{qiesta operazione
+accumulati in un buffer e poi trasmessi in blocco\footnote{questa operazione
   viene usualmente chiamata \textsl{scaricamento} dei dati, dal termine
   inglese \textit{flush}.} tutte le volte che il buffer viene riempito, in
 maniera asincrona rispetto alla scrittura. Un comportamento analogo avviene
   viene usualmente chiamata \textsl{scaricamento} dei dati, dal termine
   inglese \textit{flush}.} tutte le volte che il buffer viene riempito, in
 maniera asincrona rispetto alla scrittura. Un comportamento analogo avviene
@@ -153,7 +152,7 @@ Per lo stesso motivo, in tutte le situazioni in cui si sta facendo
 dell'input/output interattivo, bisognerà tenere presente le caratteristiche
 delle operazioni di scaricamento dei dati, poiché non è detto che ad una
 scrittura sullo stream corrisponda una immediata scrittura sul dispositivo (la
 dell'input/output interattivo, bisognerà tenere presente le caratteristiche
 delle operazioni di scaricamento dei dati, poiché non è detto che ad una
 scrittura sullo stream corrisponda una immediata scrittura sul dispositivo (la
-cosa è particolaemente evidente quando con le operazioni di input/output su
+cosa è particolarmente evidente quando con le operazioni di input/output su
 terminale).
 
 Per rispondere ad esigenze diverse, lo standard definisce tre distinte
 terminale).
 
 Per rispondere ad esigenze diverse, lo standard definisce tre distinte
@@ -855,7 +854,7 @@ illustrate finora (eccetto \func{gets} e \func{puts}), che eseguono
 esattamente le stesse operazioni delle loro equivalenti, evitando però il lock
 implicito dello stream (vedi \secref{sec:file_stream_thread}). Come per le
 altre forma di I/O, dette funzioni hanno lo stesso nome della loro analoga
 esattamente le stesse operazioni delle loro equivalenti, evitando però il lock
 implicito dello stream (vedi \secref{sec:file_stream_thread}). Come per le
 altre forma di I/O, dette funzioni hanno lo stesso nome della loro analoga
-normale, con l'aggiuta dell'estensione \code{\_unlocked}.
+normale, con l'aggiunta dell'estensione \code{\_unlocked}.
 
 Come abbiamo visto, le funzioni di lettura per l'input/output di linea
 previste dallo standard ANSI C presentano svariati inconvenienti. Benché
 
 Come abbiamo visto, le funzioni di lettura per l'input/output di linea
 previste dallo standard ANSI C presentano svariati inconvenienti. Benché
@@ -915,8 +914,8 @@ essere il seguente:
     ...    
     nread = getline(&ptr, &n, file);
 \end{lstlisting}
     ...    
     nread = getline(&ptr, &n, file);
 \end{lstlisting}
-e per evitare memory leak occorre ricordarsi di liberare \var{ptr} con
-una \func{free}.
+e per evitare memory leak\index{memory leak} occorre ricordarsi di liberare
+\var{ptr} con una \func{free}.
 
 Il valore di ritorno della funzione indica il numero di caratteri letti
 dallo stream (quindi compreso il newline, ma non lo zero di
 
 Il valore di ritorno della funzione indica il numero di caratteri letti
 dallo stream (quindi compreso il newline, ma non lo zero di
@@ -1183,7 +1182,7 @@ restituito (si ricordi quanto detto in \secref{sec:proc_var_passing} a
 proposito dei \textit{value result argument}) l'indirizzo della stringa
 allocata automaticamente dalle funzioni. Occorre inoltre ricordarsi di
 invocare \func{free} per liberare detto puntatore quando la stringa non serve
 proposito dei \textit{value result argument}) l'indirizzo della stringa
 allocata automaticamente dalle funzioni. Occorre inoltre ricordarsi di
 invocare \func{free} per liberare detto puntatore quando la stringa non serve
-più, onde evitare memory leak.
+più, onde evitare memory leak\index{memory leak}.
 
 Infine una ulteriore estensione GNU definisce le due funzioni \func{dprintf} e
 \func{vdprintf}, che prendono un file descriptor al posto dello stream. Altre
 
 Infine una ulteriore estensione GNU definisce le due funzioni \func{dprintf} e
 \func{vdprintf}, che prendono un file descriptor al posto dello stream. Altre
@@ -1195,7 +1194,7 @@ davanti a \texttt{print}, sono trattate in dettaglio nella documentazione delle
 In corrispondenza alla famiglia di funzioni \func{printf} che si usano per
 l'output formattato, l'input formattato viene eseguito con le funzioni della
 famiglia \func{scanf}; fra queste le tre più importanti sono \funcd{scanf},
 In corrispondenza alla famiglia di funzioni \func{printf} che si usano per
 l'output formattato, l'input formattato viene eseguito con le funzioni della
 famiglia \func{scanf}; fra queste le tre più importanti sono \funcd{scanf},
-\funcd{fscanf} e \funcd{sscanf}, i cui proprotipi sono:
+\funcd{fscanf} e \funcd{sscanf}, i cui prototipi sono:
 \begin{functions}
   \headdecl{stdio.h} \funcdecl{int scanf(const char *format, ...)} Esegue una
   scansione di \file{stdin} cercando una corrispondenza di quanto letto con il
 \begin{functions}
   \headdecl{stdio.h} \funcdecl{int scanf(const char *format, ...)} Esegue una
   scansione di \file{stdin} cercando una corrispondenza di quanto letto con il
@@ -1250,7 +1249,7 @@ scansione e conversione di quanto serve direttamente con una delle funzioni di
 conversione delle stringhe; se invece il formato è più complesso diventa più
 facile utilizzare uno strumento come \cmd{flex}\footnote{il programma
   \cmd{flex}, è una implementazione libera di \cmd{lex} un generatore di
 conversione delle stringhe; se invece il formato è più complesso diventa più
 facile utilizzare uno strumento come \cmd{flex}\footnote{il programma
   \cmd{flex}, è una implementazione libera di \cmd{lex} un generatore di
-  analizzatori lessicali, per i dettagli si può fare riferimento al manuale
+  analizzatori lessicali. Per i dettagli si può fare riferimento al manuale
   \cite{flex}.} per generare un analizzatore lessicale o il
 \cmd{bison}\footnote{il programma \cmd{bison} è un clone del generatore di
   parser \cmd{yacc}, maggiori dettagli possono essere trovati nel relativo
   \cite{flex}.} per generare un analizzatore lessicale o il
 \cmd{bison}\footnote{il programma \cmd{bison} è un clone del generatore di
   parser \cmd{yacc}, maggiori dettagli possono essere trovati nel relativo