Nuova macro per i prototipi delle funzioni che usa boxedminipage.
[gapil.git] / filedir.tex
index c9884c4f4e6acf56a9c851ade4307375581f011d..00ea801fa27a88149109b387f762efa063bda381 100644 (file)
@@ -57,23 +57,23 @@ principali, come risultano dalla man page, sono le seguenti:
   Crea un nuovo collegamento diretto al file indicato da \var{oldpath}
   dandogli nome \var{newpath}.
   
-  La funzione restituisce zero in caso di successo e -1 in caso di errore. La
-  variabile \var{errno} viene settata opportunamente, i principali codici di
-  errore sono:
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 in
+    caso di errore. La variabile \var{errno} viene settata
+    opportunamente, i principali codici di errore sono:
   \begin{errlist}
-  \item \macro{EXDEV} \var{oldpath} e \var{newpath} non sono sullo
+  \item[\macro{EXDEV}] \var{oldpath} e \var{newpath} non sono sullo
     stesso filesystem.
-  \item \macro{EPERM} il filesystem che contiene \var{oldpath} e
+  \item[\macro{EPERM}] il filesystem che contiene \var{oldpath} e
     \macro{newpath} non supporta i link diretti o è una directory.
-  \item \macro{EEXIST} un file (o una directory) con quel nome esiste di
+  \item[\macro{EEXIST}] un file (o una directory) con quel nome esiste di
     già.
-  \item \macro{EMLINK} ci sono troppi link al file \var{oldpath} (il
+  \item[\macro{EMLINK}] ci sono troppi link al file \var{oldpath} (il
     numero massimo è specificato dalla variabile \macro{LINK\_MAX}, vedi
     \secref{sec:sys_limits}).
   \end{errlist}
   ed inoltre \macro{EACCES}, \macro{ENAMETOOLONG}, \macro{ENOTDIR},
   \macro{EFAULT}, \macro{ENOMEM}, \macro{EROFS}, \macro{ELOOP},
-  \macro{ENOSPC}, \macro{EIO}.
+  \macro{ENOSPC}, \macro{EIO}.}
 \end{prototype}
 
 La creazione di un nuovo collegamento diretto non copia il contenuto del file,
@@ -115,21 +115,21 @@ suo prototipo 
   dispositivo rimuove il nome, ma come per i file i processi che hanno aperto
   uno di questi oggetti possono continuare ad utilizzarlo.
   
-  La funzione restituisce zero in caso di successo e -1 per un errore, nel
-  qual caso il file non viene toccato. La variabile \var{errno} viene
-  settata secondo i seguenti codici di errore:
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
+    errore, nel qual caso il file non viene toccato. La variabile
+    \var{errno} viene settata secondo i seguenti codici di errore:
   \begin{errlist}
-  \item \macro{EISDIR} \var{pathname} si riferisce ad una directory
+  \item[\macro{EISDIR}] \var{pathname} si riferisce ad una directory
     (valore specifico ritornato da Linux che non consente l'uso di
     \var{unlink} con le directory, e non conforme allo standard POSIX, che
     prescrive invece l'uso di \macro{EPERM} in caso l'operazione non sia
     consentita o il processo non abbia privilegi sufficienti).
-  \item \macro{EROFS} \var{pathname} è su un filesystem montato in sola
+  \item[\macro{EROFS}] \var{pathname} è su un filesystem montato in sola
   lettura.
-  \item \macro{EISDIR} \var{pathname} fa riferimento a una directory.
+  \item[\macro{EISDIR}] \var{pathname} fa riferimento a una directory.
   \end{errlist}
   ed inoltre: \macro{EACCES}, \macro{EFAULT}, \macro{ENOENT}, \macro{ENOTDIR},
-  \macro{ENOMEM}, \macro{EROFS}, \macro{ELOOP}, \macro{EIO}.
+  \macro{ENOMEM}, \macro{EROFS}, \macro{ELOOP}, \macro{EIO}.}
 \end{prototype}
 
 Per cancellare una voce in una directory è necessario avere il permesso di
@@ -176,9 +176,10 @@ directory 
   Cancella un nome dal filesystem. Usa \func{unlink} per i file e
   \func{rmdir} per le directory.
   
-  La funzione restituisce zero in caso di successo e -1 per un errore, nel
-  qual caso il file non viene toccato. Per i codici di errore vedi quanto
-  riportato nelle descrizioni di \func{unlink} e \func{rmdir}.
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
+    errore, nel qual caso il file non viene toccato. Per i codici di
+    errore vedi quanto riportato nelle descrizioni di \func{unlink} e
+    \func{rmdir}.}
 \end{prototype}
 
 Per cambiare nome ad un file o a una directory (che devono comunque essere
@@ -192,28 +193,28 @@ nello stesso filesystem) si usa invece la funzione \func{rename}\footnote{la
   spostamento di un file fra directory diverse. Eventuali altri link diretti
   allo stesso file non vengono influenzati.
   
-  La funzione restituisce zero in caso di successo e -1 per un errore, nel
-  qual caso il file non viene toccato. La variabile \var{errno} viene settata
-  secondo i seguenti codici di errore:
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
+    errore, nel qual caso il file non viene toccato. La variabile
+    \var{errno} viene settata secondo i seguenti codici di errore:
   \begin{errlist} 
-  \item \macro{EISDIR} \var{newpath} è una directory mentre \var{oldpath} non
+  \item[\macro{EISDIR}] \var{newpath} è una directory mentre \var{oldpath} non
     è una directory.
-  \item \macro{EXDEV} \var{oldpath} e \var{newpath} non sono sullo stesso
+  \item[\macro{EXDEV}] \var{oldpath} e \var{newpath} non sono sullo stesso
     filesystem.
-  \item \macro{ENOTEMPTY} \var{newpath} è una directory già esistente e non
+  \item[\macro{ENOTEMPTY}] \var{newpath} è una directory già esistente e non
     vuota.
-  \item \macro{EBUSY} o \var{oldpath} o \var{newpath} sono in uso da parte di
+  \item[\macro{EBUSY}] o \var{oldpath} o \var{newpath} sono in uso da parte di
     qualche processo (come directory di lavoro o come radice) o del sistema
     (come mount point).
-  \item \macro{EINVAL} \var{newpath} contiene un prefisso di \var{oldpath} o
+  \item[\macro{EINVAL}] \var{newpath} contiene un prefisso di \var{oldpath} o
     più in generale si è cercato di creare una directory come sottodirectory
     di se stessa.
-  \item \macro{ENOTDIR} Uno dei componenti dei pathname non è una directory o
+  \item[\macro{ENOTDIR}] Uno dei componenti dei pathname non è una directory o
     \var{oldpath} è una directory e \var{newpath} esiste e non è una
     directory.
   \end{errlist} 
   ed inoltre \macro{EACCESS}, \macro{EPERM}, \macro{EMLINK}, \macro{ENOENT},
-  \macro{ENOMEM}, \macro{EROFS}, \macro{ELOOP} e \macro{ENOSPC}.
+  \macro{ENOMEM}, \macro{EROFS}, \macro{ELOOP} e \macro{ENOSPC}.}
 \end{prototype}
 
 Il comportamento della funzione è diverso a seconda che si voglia rinominare
@@ -278,19 +279,20 @@ specificato. La funzione che permette di creare un nuovo link simbolico 
   Crea un nuovo link simbolico di nome \func{newpath} il cui contenuto è
   \func{oldpath}.
   
-  La funzione restituisce zero in caso di successo e -1 per un errore, nel
-  qual caso la variabile \var{errno} restituisce i valori:
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
+    errore, nel qual caso la variabile \var{errno} restituisce i valori:
   \begin{errlist}
-  \item \macro{EPERM} il filesystem che contiene \var{newpath} non supporta i
+  \item[\macro{EPERM}] il filesystem che contiene \var{newpath} non supporta i
     link simbolici.
-  \item \macro{ENOENT} una componente di \var{newpath} non esiste o
+  \item[\macro{ENOENT}] una componente di \var{newpath} non esiste o
     \func{oldpath} è una stringa vuota.
-  \item \macro{EEXIST} esiste già un file \var{newpath}.
-  \item \macro{EROFS} \var{newpath} è su un filesystem montato in sola lettura.
+  \item[\macro{EEXIST}] esiste già un file \var{newpath}.
+  \item[\macro{EROFS}] \var{newpath} è su un filesystem montato in sola
+    lettura.
   \end{errlist}
   ed inoltre \macro{EFAULT}, \macro{EACCES}, \macro{ENAMETOOLONG},
   \macro{ENOTDIR}, \macro{ENOMEM}, \macro{ELOOP}, \macro{ENOSPC} e
-  \macro{EIO}.
+  \macro{EIO}.}
 \end{prototype}
 
 Si tenga presente che la funzione non effettua nessun controllo sull'esistenza
@@ -356,18 +358,20 @@ la funzione \func{readlink}, il cui prototipo 
   Legge il contenuto del link simbolico indicato da \var{path} nel buffer
   \var{buff} di dimensione \var{size}.
   
-  La funzione restituisce il numero di caratteri letti dentro \var{buff} o -1
-  per un errore, nel qual caso la variabile \var{errno} viene settata a:
+  \bodydesc{La funzione restituisce il numero di caratteri letti dentro
+    \var{buff} o -1 per un errore, nel qual caso la variabile
+    \var{errno} viene settata a:
   \begin{errlist}
-  \item \macro{EINVAL} \var{file} non è un link simbolico o \var{size} non è
+  \item[\macro{EINVAL}] \var{file} non è un link simbolico o \var{size} non è
     positiva. 
-  \item \macro{EROFS} La directory su cui si vuole inserire il nuovo link è
+  \item[\macro{EROFS}] La directory su cui si vuole inserire il nuovo link è
     su un filesystem montato in sola lettura.
-  \item \macro{ENOSPC} La directory o il filesystem in cui si vuole creare il
+  \item[\macro{ENOSPC}] La directory o il filesystem in cui si vuole creare il
     link è piena e non c'è ulteriore spazio disponibile.
   \end{errlist}
   ed inoltre \macro{ENOTDIR}, \macro{ENAMETOOLONG}, \macro{ENOENT},
-  \macro{EACCES}, \macro{ELOOP}, \macro{EIO}, \macro{EFAULT} e \macro{ENOMEM}.
+  \macro{EACCES}, \macro{ELOOP}, \macro{EIO}, \macro{EFAULT} e
+  \macro{ENOMEM}.}
 \end{prototype}
 
 La funzione apre il link simbolico, ne legge il contenuto, lo scrive nel
@@ -437,24 +441,24 @@ prototipo della prima 
   assegnandole i permessi indicati da \var{mode}. Il nome può essere indicato
   con il pathname assoluto o relativo.
   
-  La funzione restituisce zero in caso di successo e -1 per un errore, nel
-  qual caso \var{errno} assumerà i valori:
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
+    errore, nel qual caso \var{errno} assumerà i valori:
   \begin{errlist}
-  \item \macro{EEXIST} Un file (o una directory) con quel nome esiste di già. 
-  \item \macro{EACCESS} 
+  \item[\macro{EEXIST}] Un file (o una directory) con quel nome esiste di già. 
+  \item[\macro{EACCESS}] 
     Non c'è il permesso di scrittura per la directory in cui si vuole inserire
     la nuova directory.
-  \item \macro{EMLINK} La directory in cui si vuole creare la nuova directory
+  \item[\macro{EMLINK}] La directory in cui si vuole creare la nuova directory
     contiene troppi file. Sotto Linux questo normalmente non avviene perché il
     filesystem standard consente la creazione di un numero di file maggiore di
     quelli che possono essere contenuti nel disco, ma potendo avere a che
     fare anche con filesystem di altri sistemi questo errore può presentarsi.
-  \item \macro{ENOSPC} Non c'è abbastanza spazio sul file system per creare
+  \item[\macro{ENOSPC}] Non c'è abbastanza spazio sul file system per creare
     la nuova directory o si è esaurita la quota disco dell'utente.
   \end{errlist}
   ed inoltre anche \macro{EPERM}, \macro{EFAULT}, \macro{ENAMETOOLONG},
   \macro{ENOENT}, \macro{ENOTDIR}, \macro{ENOMEM}, \macro{ELOOP},
-  \macro{EROFS}.
+  \macro{EROFS}.}
 \end{prototype}
  
 La funzione crea una nuova directory vuota (che contiene solo le due voci
@@ -473,23 +477,23 @@ suo prototipo 
   deve essere vuota.  Il nome può essere indicato con il pathname assoluto o
   relativo.
   
-  La funzione restituisce zero in caso di successo e -1 per un errore, nel
-  qual caso \var{errno} assumerà i valori:
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
+    errore, nel qual caso \var{errno} assumerà i valori:
   \begin{errlist}
-  \item \macro{EPERM} Il filesystem non supporta la cancellazione di
+  \item[\macro{EPERM}] Il filesystem non supporta la cancellazione di
     directory, oppure la directory che contiene \var{dirname} ha lo sticky bit
     settato e l'\textit{effective user id} del processo non corrisponde al
     proprietario della directory. 
-  \item \macro{EACCESS} Non c'è il permesso di scrittura per la directory che
+  \item[\macro{EACCESS}] Non c'è il permesso di scrittura per la directory che
     contiene la directory che si vuole cancellare, o non c'è il permesso di
     attraversare (esecuzione) una delle directory specificate in
     \var{dirname}.
-  \item \macro{EBUSY} La directory specificata è la directory di lavoro o la
+  \item[\macro{EBUSY}] La directory specificata è la directory di lavoro o la
     radice di qualche processo.
-  \item \macro{ENOTEMPTY} La directory non è vuota.
+  \item[\macro{ENOTEMPTY}] La directory non è vuota.
   \end{errlist}
   ed inoltre anche \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT},
-  \macro{ENOTDIR}, \macro{ENOMEM}, \macro{ELOOP}, \macro{EROFS}.
+  \macro{ENOTDIR}, \macro{ENOMEM}, \macro{ELOOP}, \macro{EROFS}.}
 \end{prototype}
 
 La modalità con cui avviene la cancellazione è analoga a quella di
@@ -546,18 +550,18 @@ apposita funzione di libreria,  \func{getcwd}, il cui prototipo 
   stringa puntata da \var{buffer}, che deve essere precedentemente
   allocata, per una dimensione massima di \var{size}.
   
-  La funzione restituisce il puntatore \var{buffer} se riesce, \macro{NULL} se
-  fallisce, in quest'ultimo caso la variabile \var{errno} è settata con i
-  seguenti codici di errore:
+  \bodydesc{La funzione restituisce il puntatore \var{buffer} se riesce,
+    \macro{NULL} se fallisce, in quest'ultimo caso la variabile
+    \var{errno} è settata con i seguenti codici di errore:
   \begin{errlist}
-  \item \macro{EINVAL} L'argomento \var{size} è zero e \var{buffer} non
+  \item[\macro{EINVAL}] L'argomento \var{size} è zero e \var{buffer} non
     è nullo.
-  \item \macro{ERANGE} L'argomento \var{size} è più piccolo della
+  \item[\macro{ERANGE}] L'argomento \var{size} è più piccolo della
     lunghezza del pathname. 
-  \item \macro{EACCESS} Manca il permesso di lettura o di ricerca su uno dei
+  \item[\macro{EACCESS}] Manca il permesso di lettura o di ricerca su uno dei
     componenti del pathname (cioè su una delle directory superiori alla
     corrente).
-  \end{errlist}
+  \end{errlist}}
 \end{prototype}
 
 Il buffer deve essere sufficientemente lungo da poter contenere il pathname
@@ -601,17 +605,17 @@ non solo tramite il filename, i prototipi di queste funzioni sono:
   \funcdecl{int fchdir (int fd)} Analoga alla precedente, ma
   usa un file descriptor invece del pathname.
   
-  Entrambe le funzioni restituiscono zero in caso di successo e -1 per un
-  errore, in caso di errore \var{errno} viene settata per \func{chdir} ai
-  valori:
+  \bodydesc{Entrambe le funzioni restituiscono zero in caso di successo
+    e -1 per un errore, in caso di errore \var{errno} viene settata per
+    \func{chdir} ai valori:
   \begin{errlist}
-  \item \macro{ENOTDIR} Uno dei componenti di \var{path} non è una directory. 
-  \item \macro{EACCESS} Manca il permesso di ricerca su uno dei componenti di
+  \item[\macro{ENOTDIR}] Uno dei componenti di \var{path} non è una directory. 
+  \item[\macro{EACCESS}] Manca il permesso di ricerca su uno dei componenti di
     \func{path}.
   \end{errlist}
   ed inoltre \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT},
   \macro{ENOMEM}, \macro{ELOOP} e \macro{EIO}. Per \func{fchdir} invece gli
-  errori sono \macro{EBADF} e \macro{EACCES}.
+  errori sono \macro{EBADF} e \macro{EACCES}.}
 \end{functions}
 
 
@@ -654,10 +658,11 @@ queste funzioni sono i seguenti:
   eccetto che si usa con un file aperto, specificato tramite il suo file
   descriptor \var{filedes}.
   
-  Le funzioni restituiscono zero in caso di successo e -1 per un errore, in
-  caso di errore \var{errno} può assumere uno dei valori: \macro{EBADF},
-  \macro{ENOENT}, \macro{ENOTDIR}, \macro{ELOOP}, \macro{EFAULT},
-  \macro{EACCESS}, \macro{ENOMEM}, \macro{ENAMETOOLONG}.
+  \bodydesc{Le funzioni restituiscono zero in caso di successo e -1 per
+    un errore, in caso di errore \var{errno} può assumere uno dei
+    valori: \macro{EBADF}, \macro{ENOENT}, \macro{ENOTDIR},
+    \macro{ELOOP}, \macro{EFAULT}, \macro{EACCESS}, \macro{ENOMEM},
+    \macro{ENAMETOOLONG}.}
 \end{functions}
 
 La struttura \var{stat} è definita nell'header \file{sys/stat.h} e in
@@ -835,22 +840,22 @@ dimensione si possono usare le due funzioni:
   eccetto che si usa con un file aperto, specificato tramite il suo file
   descriptor \var{fd}.
   
-  Le funzioni restituiscono zero in caso di successo e -1 per un errore, nel
-  qual caso \var{errno} viene settato opportunamente; per \func{ftruncate} si
-  hanno i valori:
+  \bodydesc{Le funzioni restituiscono zero in caso di successo e -1 per
+    un errore, nel qual caso \var{errno} viene settato opportunamente;
+    per \func{ftruncate} si hanno i valori:
   \begin{errlist}
-  \item \macro{EBADF} \var{fd}  non è un file descriptor.
-  \item \macro{EINVAL} \var{fd} è un riferimento ad un socket, non a un file
+  \item[\macro{EBADF}] \var{fd}  non è un file descriptor.
+  \item[\macro{EINVAL}] \var{fd} è un riferimento ad un socket, non a un file
     o non è aperto in scrittura.
   \end{errlist}
   per \func{truncate} si hanno:
   \begin{errlist}
-  \item \macro{EACCES} il file non ha permesso di scrittura o non si ha il
+  \item[\macro{EACCES}] il file non ha permesso di scrittura o non si ha il
     permesso di esecuzione una delle directory del pathname. 
-  \item \macro{ETXTBSY} Il file è un programma in esecuzione.
+  \item[\macro{ETXTBSY}] Il file è un programma in esecuzione.
   \end{errlist}
   ed anche \macro{ENOTDIR}, \macro{ENAMETOOLONG}, \macro{ENOENT},
-  \macro{EROFS}, \macro{EIO}, \macro{EFAULT}, \macro{ELOOP}.
+  \macro{EROFS}, \macro{EIO}, \macro{EFAULT}, \macro{ELOOP}.}
 \end{functions}
 
 Se il file è più lungo della lunghezza specificata i dati in eccesso saranno
@@ -867,7 +872,8 @@ Il sistema mantiene per ciascun file tre tempi. Questi sono registrati
 nell'inode insieme agli altri attributi del file e possono essere letti
 tramite la funzione \func{stat}, che li restituisce attraverso tre campi della
 struttura \var{stat} di \figref{fig:file_stat_struct}. Il significato di detti
-tempi e dei relativi campi è riportato nello schema in \ntab:
+tempi e dei relativi campi è riportato nello schema in \ntab, dove si è anche
+riportato un esempio delle funzioni che effettuano cambiamenti su di essi.
 
 \begin{table}[htb]
   \centering
@@ -878,8 +884,10 @@ tempi e dei relativi campi 
     & \textbf{Opzione} \\
     \hline
     \hline
-    \var{st\_atime}& ultimo accesso ai dati del file &\func{read}& \cmd{-u}\\ 
-    \var{st\_mtime}& ultima modifica ai dati del file &\func{write}& default\\ 
+    \var{st\_atime}& ultimo accesso ai dati del file &\func{read}, 
+    \func{utime} & \cmd{-u}\\ 
+    \var{st\_mtime}& ultima modifica ai dati del file &\func{write}, 
+    \func{utime} & default\\ 
     \var{st\_ctime}& ultima modifica ai dati dell'inode&\func{chmod}, 
     \func{utime} & \cmd{-c} \\ 
     \hline
@@ -997,7 +1005,9 @@ quest'ultimo.
 
 Si noti infine come \var{st\_ctime} non abbia nulla a che fare con il tempo di
 creazione del file, usato in molti altri sistemi operativi, ma che in unix non
-esiste.
+esiste. Per questo motivo quando si copia un file, a meno di preservare
+esplicitamente i tempi (ad esempio con l'opzione \cmd{-p} di \cmd{cp}) esso
+avrà sempre il tempo corrente come data di ultima modifica.
 
 
 \subsection{La funzione \func{utime}}
@@ -1012,12 +1022,12 @@ Cambia i tempi di ultimo accesso e modifica dell'inode specificato da
 \var{filename} secondo i campi \var{actime} e \var{modtime} di \var{times}. Se
 questa è \macro{NULL} allora viene usato il tempo corrente.
 
-La funzione restituisce zero in caso di successo e -1 in caso di errore, nel
-qual caso \var{errno} è settata opportunamente.
+\bodydesc{La funzione restituisce zero in caso di successo e -1 in caso
+  di errore, nel qual caso \var{errno} è settata opportunamente.
 \begin{errlist}
-\item \macro{EACCESS} non si ha il permesso di scrittura sul file.
-\item \macro{ENOENT} \var{filename} non esiste.
-\end{errlist}
+\item[\macro{EACCESS}] non si ha il permesso di scrittura sul file.
+\item[\macro{ENOENT}] \var{filename} non esiste.
+\end{errlist}}
 \end{prototype}
  
 La struttura \var{utimebuf} usata da \func{utime} è definita come:
@@ -1386,14 +1396,14 @@ la funzione \func{access}, il cui prototipo 
 \begin{prototype}{unistd.h}
 {int access(const char *pathname, int mode)}
 
-  La funzione verifica i permessi di accesso, indicati da \var{mode}, per il
-  file indicato da \var{pathname}. 
+Verifica i permessi di accesso, indicati da \var{mode}, per il file indicato
+da \var{pathname}.
   
-  La funzione ritorna 0 se l'accesso è consentito, -1 altrimenti; in
-  quest'ultimo caso la variabile \var{errno} viene settata secondo i codici
-  di errore: \macro{EACCES}, \macro{EROFS}, \macro{EFAULT}, \macro{EINVAL},
+\bodydesc{La funzione ritorna 0 se l'accesso è consentito, -1 altrimenti; in
+  quest'ultimo caso la variabile \var{errno} viene settata secondo i codici di
+  errore: \macro{EACCES}, \macro{EROFS}, \macro{EFAULT}, \macro{EINVAL},
   \macro{ENAMETOOLONG}, \macro{ENOENT}, \macro{ENOTDIR}, \macro{ELOOP},
-  \macro{EIO}.
+  \macro{EIO}.}
 \end{prototype}
 
 I valori possibili per il parametro \var{mode} sono esprimibili come
@@ -1450,16 +1460,16 @@ i loro prototipi sono:
   \funcdecl{int fchmod(int fd, mode\_t mode)} Analoga alla precedente, ma usa
   il file descriptor \var{fd} per indicare il file.
   
-  Le funzioni restituiscono zero in caso di successo e -1 per un errore, in
-  caso di errore \var{errno} può assumere i valori:
+  \bodydesc{Le funzioni restituiscono zero in caso di successo e -1 per
+    un errore, in caso di errore \var{errno} può assumere i valori:
   \begin{errlist}
-  \item \macro{EPERM} L'\textit{effective user id} non corrisponde a quello
+  \item[\macro{EPERM}] L'\textit{effective user id} non corrisponde a quello
     del proprietario del file o non è zero.
   \end{errlist}
   ed inoltre \macro{EROFS} e \macro{EIO}; \func{chmod} restituisce anche
   \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT}, \macro{ENOMEM},
   \macro{ENOTDIR}, \macro{EACCES}, \macro{ELOOP}; \func{fchmod} anche
-  \macro{EBADF}.
+  \macro{EBADF}.}
 \end{functions}
 
 I valori possibili per \var{mode} sono indicati in \ntab. I valori possono
@@ -1544,8 +1554,8 @@ funzione \func{umask}, il cui prototipo 
   Setta la maschera dei permessi dei bit al valore specificato da \var{mask}
   (di cui vengono presi solo i 9 bit meno significativi).
   
-  La funzione ritorna il precedente valore della maschera. È una delle poche
-  funzioni che non restituisce codici di errore.
+  \bodydesc{La funzione ritorna il precedente valore della maschera. È una
+    delle poche funzioni che non restituisce codici di errore.}
 \end{prototype}
 
 Questa maschera è una caratteristica di ogni processo e viene utilizzata per
@@ -1568,6 +1578,7 @@ login a $022$, e di norma gli utenti non hanno motivi per modificarlo. Se per
 si vuole che un processo possa creare un file che chiunque possa leggere
 allora occorrerà cambiare il valore di \func{umask}.
 
+
 \subsection{Le funzioni \func{chown}, \func{fchown} e \func{lchown}}
 \label{sec:file_chown}
 
@@ -1584,17 +1595,17 @@ sono tre e i loro prototipi sono i seguenti:
 
   Le funzioni cambiano utente e gruppo di appartenenza di un file ai valori
   specificati dalle variabili \var{owner} e \var{group}. 
-
-  Le funzioni restituiscono zero in caso di successo e -1 per un errore, in
-  caso di errore \texttt{errno} viene settato ai valori:
+  
+  \bodydesc{Le funzioni restituiscono zero in caso di successo e -1 per
+    un errore, in caso di errore \texttt{errno} viene settato ai valori:
   \begin{errlist}
-  \item \macro{EPERM} L'\textit{effective user id} non corrisponde a quello
+  \item[\macro{EPERM}] L'\textit{effective user id} non corrisponde a quello
     del proprietario del file o non è zero, o utente e gruppo non sono validi
   \end{errlist}
   Oltre a questi entrambe restituiscono gli errori \macro{EROFS} e
   \macro{EIO}; \func{chown} restituisce anche \macro{EFAULT},
   \macro{ENAMETOOLONG}, \macro{ENOENT}, \macro{ENOMEM}, \macro{ENOTDIR},
-  \macro{EACCES}, \macro{ELOOP}; \func{fchown} anche \macro{EBADF}.
+  \macro{EACCES}, \macro{ELOOP}; \func{fchown} anche \macro{EBADF}.}
 \end{functions}
 
 In Linux soltanto l'amministratore può cambiare il proprietario di un file,