-\begin{prototype}{stdio.h}{int fcloseall(void)}
- Chiude tutti gli \textit{stream}.
-
- \bodydesc{Restituisce 0 se non ci sono errori ed \val{EOF} altrimenti.}
-\end{prototype}
-\noindent la funzione esegue lo scarico dei dati bufferizzati in uscita
-e scarta quelli in ingresso, chiudendo tutti i file. Questa funzione è
-provvista solo per i casi di emergenza, quando si è verificato un errore
-ed il programma deve essere abortito, ma si vuole compiere qualche altra
-operazione dopo aver chiuso i file e prima di uscire (si ricordi quanto
-visto in sez.~\ref{sec:proc_conclusion}).
-
-
-\subsection{Lettura e scrittura su uno \textit{stream}}
-\label{sec:file_io}
-
-Una delle caratteristiche più utili dell'interfaccia degli \textit{stream} è
-la ricchezza delle funzioni disponibili per le operazioni di lettura e
-scrittura sui file. Sono infatti previste ben tre diverse modalità modalità di
-input/output non formattato:
-\begin{enumerate*}
-\item\textsl{binario} in cui legge/scrive un blocco di dati alla
- volta, vedi sez.~\ref{sec:file_binary_io}.
-\item\textsl{a caratteri} in cui si legge/scrive un carattere alla
- volta (con la bufferizzazione gestita automaticamente dalla libreria),
- vedi sez.~\ref{sec:file_char_io}.
-\item\textsl{di linea} in cui si legge/scrive una linea alla volta (terminata
- dal carattere di newline \verb|'\n'|), vedi sez.~\ref{sec:file_line_io}.
-\end{enumerate*}
-ed inoltre la modalità di input/output formattato.
-
-A differenza dell'interfaccia dei file descriptor, con gli \textit{stream} il
-raggiungimento della fine del file è considerato un errore, e viene
-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 \headfile{stdlib.h}.
-
-Dato che le funzioni dell'interfaccia degli \textit{stream} sono funzioni di
-libreria che si appoggiano a delle \textit{system call}, esse non impostano
-direttamente la variabile \var{errno}, che mantiene il valore impostato dalla
-\textit{system call} che ha riportato l'errore.
-
-Siccome la condizione di end-of-file è anch'essa segnalata come errore, nasce
-il problema di come distinguerla da un errore effettivo; basarsi solo sul
-valore di ritorno della funzione e controllare il valore di \var{errno}
-infatti non basta, dato che quest'ultimo potrebbe essere stato impostato in
-una altra occasione, (si veda sez.~\ref{sec:sys_errno} per i dettagli del
-funzionamento di \var{errno}).
-
-Per questo motivo tutte le implementazioni delle librerie standard mantengono
-per ogni \textit{stream} almeno due flag all'interno dell'oggetto \type{FILE},
-il flag di \textit{end-of-file}, che segnala che si è raggiunta la fine del
-file in lettura, e quello di errore, che segnala la presenza di un qualche
-errore nelle operazioni di input/output; questi due flag possono essere
-riletti dalle funzioni \funcd{feof} e \funcd{ferror}, i cui prototipi sono:
-\begin{functions}
- \headdecl{stdio.h}
- \funcdecl{int feof(FILE *stream)}
- Controlla il flag di end-of-file di \param{stream}.
- \funcdecl{int ferror(FILE *stream)}
- Controlla il flag di errore di \param{stream}.
-
- \bodydesc{Entrambe le funzioni ritornano un valore diverso da zero se
- i relativi flag sono impostati.}
-\end{functions}
+
+\begin{funcproto}{
+\fhead{stdio.h}
+\fdecl{int fcloseall(void)}
+\fdesc{Chiude tutti gli \textit{stream}.}
+}
+
+{La funzione ritorna $0$ in caso di successo e \val{EOF} per un errore, nel
+ qual caso \var{errno} assumerà gli stessi valori di \func{fclose}.}
+\end{funcproto}
+
+ La funzione esegue lo scarico dei dati bufferizzati in uscita
+ e scarta quelli in ingresso, chiudendo tutti i file. Questa funzione è
+ provvista solo per i casi di emergenza, quando si è verificato un errore
+ ed il programma deve essere abortito, ma si vuole compiere qualche altra
+ operazione dopo aver chiuso i file e prima di uscire (si ricordi quanto
+ visto in sez.~\ref{sec:proc_conclusion}).
+
+
+ \subsection{Lettura e scrittura su uno \textit{stream}}
+ \label{sec:file_io}
+
+ Una delle caratteristiche più utili dell'interfaccia degli \textit{stream} è
+ la ricchezza delle funzioni disponibili per le operazioni di lettura e
+ scrittura sui file. Sono infatti previste ben tre diverse modalità modalità di
+ input/output non formattato:
+ \begin{enumerate*}
+ \item\textsl{binario} in cui legge/scrive un blocco di dati alla
+ volta, vedi sez.~\ref{sec:file_binary_io}.
+ \item\textsl{a caratteri} in cui si legge/scrive un carattere alla
+ volta (con la bufferizzazione gestita automaticamente dalla libreria),
+ vedi sez.~\ref{sec:file_char_io}.
+ \item\textsl{di linea} in cui si legge/scrive una linea alla volta (terminata
+ dal carattere di newline \verb|'\n'|), vedi sez.~\ref{sec:file_line_io}.
+ \end{enumerate*}
+ ed inoltre la modalità di input/output formattato.
+
+ A differenza dell'interfaccia dei file descriptor, con gli \textit{stream} il
+ raggiungimento della fine del file è considerato un errore, e viene
+ 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 \headfile{stdlib.h}.
+
+ Dato che le funzioni dell'interfaccia degli \textit{stream} sono funzioni di
+ libreria che si appoggiano a delle \textit{system call}, esse non impostano
+ direttamente la variabile \var{errno}, che mantiene il valore impostato dalla
+ \textit{system call} che ha riportato l'errore.
+
+ Siccome la condizione di end-of-file è anch'essa segnalata come errore, nasce
+ il problema di come distinguerla da un errore effettivo; basarsi solo sul
+ valore di ritorno della funzione e controllare il valore di \var{errno}
+ infatti non basta, dato che quest'ultimo potrebbe essere stato impostato in
+ una altra occasione, (si veda sez.~\ref{sec:sys_errno} per i dettagli del
+ funzionamento di \var{errno}).
+
+ Per questo motivo tutte le implementazioni delle librerie standard mantengono
+ per ogni \textit{stream} almeno due flag all'interno dell'oggetto \type{FILE},
+ il flag di \textit{end-of-file}, che segnala che si è raggiunta la fine del
+ file in lettura, e quello di errore, che segnala la presenza di un qualche
+ errore nelle operazioni di input/output; questi due flag possono essere
+ riletti dalle funzioni \funcd{feof} e \funcd{ferror}, i cui prototipi sono:
+
+\begin{funcproto}{
+\fhead{stdio.h}
+\fdecl{int feof(FILE *stream)}
+\fdesc{Controlla il flag di \textit{end-of-file} di uno \textit{stream}.}
+\fdecl{int ferror(FILE *stream)}
+\fdesc{Controlla il flag di errore di uno \textit{stream}.}
+}
+
+{Le funzioni ritornano un valore diverso da zero se i relativi flag sono
+ impostati, e non prevedono condizioni di errore.}
+\end{funcproto}
+