Correzioni multiple agli indici delle funzioni, inserita macro per
[gapil.git] / filestd.tex
index bfad103d639271ae970863e8c9af64f25262b5ed..c189164ceefd7685c65ca99256c3269ffbb63f1d 100644 (file)
@@ -92,7 +92,7 @@ usare sempre puntatori del tipo \texttt{FILE *} ottenuti dalla libreria stessa
 (tanto che in certi casi il termine di puntatore a file è diventato sinonimo
 di \textit{stream}).  Tutte le funzioni della libreria che operano sui file
 accettano come argomenti solo variabili di questo tipo, che diventa
-accessibile includendo l'header file \file{stdio.h}.
+accessibile includendo l'header file \headfile{stdio.h}.
 
 
 \subsection{Gli \textit{stream standard}}
@@ -102,7 +102,7 @@ Ai tre file descriptor standard (vedi sez.~\ref{sec:file_std_descr}) aperti
 per ogni processo, corrispondono altrettanti \textit{stream}, che
 rappresentano i canali standard di input/output prestabiliti; anche questi tre
 \textit{stream} sono identificabili attraverso dei nomi simbolici definiti
-nell'header \file{stdio.h} che sono:
+nell'header \headfile{stdio.h} che sono:
 
 \begin{basedescript}{\desclabelwidth{3.0cm}}
 \item[\var{FILE *stdin}] Lo \textit{standard input} cioè il \textit{file
@@ -422,7 +422,7 @@ notificato come tale dai valori di uscita delle varie funzioni. Nella
 maggior parte dei casi questo avviene con la restituzione del valore
 intero (di tipo \ctyp{int}) \val{EOF}\footnote{la costante deve essere
   negativa, le \acr{glibc} usano -1, altre implementazioni possono avere
-  valori diversi.}  definito anch'esso nell'header \file{stdlib.h}.
+  valori diversi.}  definito anch'esso nell'header \headfile{stdlib.h}.
 
 Dato che le funzioni dell'interfaccia degli \textit{stream} sono funzioni di
 libreria che si appoggiano a delle system call, esse non impostano
@@ -460,13 +460,13 @@ effettuato ogni volta che si chiama una funzione di libreria.
 Entrambi i flag (di errore e di end-of-file) possono essere cancellati usando
 la funzione \funcd{clearerr}, il cui prototipo è:
 \begin{prototype}{stdio.h}{void clearerr(FILE *stream)}
-  Cancella i flag di errore ed end-of-file di \param{stream}. 
+  Cancella i flag di errore ed \textit{end-of-file} di \param{stream}.
 \end{prototype}
 \noindent in genere si usa questa funzione una volta che si sia identificata e
 corretta la causa di un errore per evitare di mantenere i flag attivi, così da
 poter rilevare una successiva ulteriore condizione di errore. Di questa
-funzione esiste una analoga \func{clearerr\_unlocked} che non esegue il blocco
-dello \textit{stream} (vedi sez.~\ref{sec:file_stream_thread}).
+funzione esiste una analoga \funcm{clearerr\_unlocked} che non esegue il
+blocco dello \textit{stream} (vedi sez.~\ref{sec:file_stream_thread}).
 
 
 \subsection{Input/output binario}
@@ -854,9 +854,10 @@ che eccede le dimensioni del buffer.
 Per questo motivo le \acr{glibc} prevedono, come estensione GNU, due nuove
 funzioni per la gestione dell'input/output di linea, il cui uso permette di
 risolvere questi problemi. L'uso di queste funzioni deve essere attivato
-definendo la macro \macro{\_GNU\_SOURCE} prima di includere \file{stdio.h}. La
-prima delle due, \funcd{getline}, serve per leggere una linea terminata da un
-newline, esattamente allo stesso modo di \func{fgets}, il suo prototipo è:
+definendo la macro \macro{\_GNU\_SOURCE} prima di includere
+\headfile{stdio.h}. La prima delle due, \funcd{getline}, serve per leggere una
+linea terminata da un newline, esattamente allo stesso modo di \func{fgets},
+il suo prototipo è:
 \begin{prototype}{stdio.h}
   {ssize\_t getline(char **buffer, size\_t *n, FILE *stream)} Legge una linea
   dal file \param{stream} copiandola sul buffer indicato da \param{buffer}
@@ -1165,8 +1166,10 @@ inoltre ricordarsi di invocare \func{free} per liberare detto puntatore quando
 la stringa non serve più, onde evitare \itindex{memory~leak} \textit{memory
   leak}.
 
-Infine una ulteriore estensione GNU definisce le due funzioni \func{dprintf} e
-\func{vdprintf}, che prendono un file descriptor al posto dello
+% TODO verificare se mettere prototipi di \func{dprintf} e \func{vdprintf}
+
+Infine una ulteriore estensione GNU definisce le due funzioni \funcm{dprintf} e
+\funcm{vdprintf}, che prendono un file descriptor al posto dello
 \textit{stream}. Altre estensioni permettono di scrivere con caratteri
 estesi. Anche queste funzioni, il cui nome è generato dalle precedenti
 funzioni aggiungendo una \texttt{w} davanti a \texttt{print}, sono trattate in
@@ -1194,8 +1197,8 @@ famiglia \func{scanf}; fra queste le tre più importanti sono \funcd{scanf},
     di errore o fine del file viene invece restituito \val{EOF}.}
 \end{functions}
 \noindent e come per le analoghe funzioni di scrittura esistono le relative
-\func{vscanf}, \func{vfscanf} \func{vsscanf} che usano un puntatore ad una
-lista di argomenti.
+\funcm{vscanf}, \funcm{vfscanf} e \funcm{vsscanf} che usano un puntatore ad
+una lista di argomenti.
 
 Tutte le funzioni della famiglia delle \func{scanf} vogliono come argomenti i
 puntatori alle variabili che dovranno contenere le conversioni; questo è un
@@ -1323,6 +1326,7 @@ gran parte dei casi un intero a 32 bit, questo diventa un problema quando la
 posizione sul file viene espressa con un valore a 64 bit come accade nei
 sistemi più moderni.
 
+% TODO: mettere prototipi espliciti fseeko e ftello o menzione?
 
 
 \section{Funzioni avanzate}
@@ -1433,11 +1437,11 @@ stato allocato e rimanere disponibile per tutto il tempo in cui si opera sullo
 \textit{stream}. In genere conviene allocarlo con \func{malloc} e disallocarlo
 dopo la chiusura del file; ma fintanto che il file è usato all'interno di una
 funzione, può anche essere usata una \index{variabili!automatiche} variabile
-automatica. In \file{stdio.h} è definita la macro \const{BUFSIZ}, che indica
-le dimensioni generiche del buffer di uno \textit{stream}; queste vengono
-usate dalla funzione \func{setbuf}.  Non è detto però che tale dimensione
-corrisponda sempre al valore ottimale (che può variare a seconda del
-dispositivo).
+automatica. In \headfile{stdio.h} è definita la macro \const{BUFSIZ}, che
+indica le dimensioni generiche del buffer di uno \textit{stream}; queste
+vengono usate dalla funzione \func{setbuf}.  Non è detto però che tale
+dimensione corrisponda sempre al valore ottimale (che può variare a seconda
+del dispositivo).
 
 Dato che la procedura di allocazione manuale è macchinosa, comporta dei rischi
 (come delle scritture accidentali sul buffer) e non assicura la scelta delle
@@ -1525,6 +1529,8 @@ scelta, si può forzare lo scarico dei dati sul file con la funzione
   \macro{\_SVID\_SOURCE} o \macro{\_GNU\_SOURCE}.} che non effettua il blocco
 dello stream.
 
+% TODO aggiungere prototipo \func{fflush\_unlocked}?
+
 Se \param{stream} è \val{NULL} lo scarico dei dati è forzato per tutti gli
 \textit{stream} aperti. Esistono però circostanze, ad esempio quando si vuole
 essere sicuri che sia stato eseguito tutto l'output su terminale, in cui serve
@@ -1643,6 +1649,9 @@ con \param{type}, che può essere uno dei seguenti:
   di blocco dello \textit{stream}.
 \end{basedescript}
 
+% TODO trattare \func{clearerr\_unlocked} 
+
+
 \itindend{thread}