Correzioni
[gapil.git] / filedir.tex
index 84b01947ef95859750c150fc36d8508a4f81c523..2ad3679c84b161d8f613f84b81d5f858db8fd040 100644 (file)
@@ -642,9 +642,11 @@ Per creare una fifo (un file speciale, su cui torneremo in dettaglio in
     \errval{EEXIST}, \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOSPC},
     \errval{ENOTDIR} e \errval{EROFS}.}
 \end{functions}
-\noindent come per \func{mknod} il file \param{pathname} non deve esistere
-(neanche come link simbolico); al solito i permessi specificati da
-\param{mode} vengono modificati dal valore di \var{umask}.
+
+La funzione crea la fifo \param{pathname} con i permessi \param{mode}. Come
+per \func{mknod} il file \param{pathname} non deve esistere (neanche come link
+simbolico); al solito i permessi specificati da \param{mode} vengono
+modificati dal valore di \var{umask}.
 
 
 
@@ -659,11 +661,11 @@ file usando le apposite funzioni. Pu
 contenuto di una directory, ad esempio per fare la lista dei file che contiene
 o per delle ricerche.
 
-Per far questo nello standard POSIX\footnote{le funzioni sono previste pure in
+Per far questo lo standard POSIX\footnote{le funzioni sono previste pure in
   BSD e SVID.} ha introdotto i cosiddetti \textit{directory streams} (chiamati
 così per l'analogia con i file stream di \capref{cha:files_std_interface}) ed
-alcune di funzioni per la loro gestione. La prima di queste è \funcd{opendir},
-che apre uno di questi stream, il suo prototipo è:
+una serie di funzioni per la loro gestione. La prima di queste è
+\funcd{opendir}, il cui prototipo è:
 \begin{functions}
   \headdecl{sys/types.h} \headdecl{dirent.h} 
   
@@ -678,16 +680,18 @@ che apre uno di questi stream, il suo prototipo 
 \end{functions}
 
 La funzione apre un \textit{directory stream} per la directory
-\param{dirname}, ritornando il puntatore alla relativa struttura \ctyp{DIR} da
-usare per le successive operazioni, si posiziona inoltre sulla prima voce
-della directory.
-
-Dato che le directory sono comunque dei file, in alcuni casi può essere utile
-conoscere il file descriptor sottostante un \textit{directory stream}, ad
-esempio per utilizzarlo con la funzione \func{fchdir} per cambiare la
+\param{dirname}, ritornando il puntatore alla relativa struttura \type{DIR}
+(questo è un tipo opaco\index{tipo!opaco} usato dalle librerie per gestire i
+\textit{directory stream}) da usare per le successive operazioni, posizionando
+lo stream sulla prima voce contenuta nella directory.
+
+Dato che le directory sono comunque dei file, in alcuni casi può servire
+conoscere il \textit{file descriptor} (tratteremo i \textit{file descriptor}
+in \capref{cha:file_unix_interface}) sottostante un \textit{directory stream},
+ad esempio per utilizzarlo con la funzione \func{fchdir} per cambiare la
 directory di lavoro (vedi \secref{sec:file_work_dir}) a quella relativa allo
-stream che si è aperto. A questo scopo si può usare la funzione \funcd{dirfd},
-il cui prototipo è:
+stream stesso. A questo scopo si può usare la funzione \funcd{dirfd}, il cui
+prototipo è:
 \begin{functions}
   \headdecl{sys/types.h} \headdecl{dirent.h} 
   
@@ -715,18 +719,21 @@ La lettura di una voce nella directory viene effettuata attraverso la funzione
   Legge una voce dal \textit{directory stream}.
   
   \bodydesc{La funzione restituisce il puntatore alla struttura contentente i
-    dati in caso di successo e \val{NULL} altrimenti, nel qual caso
-    \var{errno} assumerà il valore \errval{EBADF}.}
+    dati in caso di successo e \val{NULL} altrimenti, in caso di descrittore
+    non valido \var{errno} assumerà il valore \errval{EBADF}, il valore
+    \val{NULL} viene restituito anche quando si raggiunge la fine dello
+    stream.}
 \end{functions}
 
-La funzione legge una voce dalla directory (una \textit{directory entry}, da
-distinguersi da quelle della cache di cui parlavamo in \secref{sec:file_vfs})
-in un'opportuna struttura \struct{dirent} definita in
-\figref{fig:file_dirent_struct}, il suo pro
+La funzione legge la voce corrente nella directory, posizionandosi sulla voce
+successiva.  I dati vengono memorizzati in una struttura \struct{dirent} (la
+cui definizione è riportata in \figref{fig:file_dirent_struct}). La funzione
+restituisce il puntatore alla struttura; si tenga presente però che questa
+viene sovrascritta tutte le volte che si ripete una lettura sullo stesso
+stream.
 
 \begin{figure}[!htb]
-  \footnotesize
-  \centering
+  \footnotesize \centering
   \begin{minipage}[c]{15cm}
     \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{}
 struct dirent {
@@ -746,6 +753,9 @@ struct dirent {
 
 
 
+
+
+
 Una volta completate le operazioni si può chiudere il \textit{directory
   stream} con la funzione \funcd{closedir}, il cui prototipo è:
 \begin{functions}