Transizione \macro{} -> \const{}, \errcode{}, \val{}
[gapil.git] / filedir.tex
index 7ba4265..1e99a28 100644 (file)
@@ -73,19 +73,19 @@ principali, come risultano dalla pagina di manuale, sono le seguenti:
     caso di errore. La variabile \var{errno} viene impostata
     opportunamente, i principali codici di errore sono:
   \begin{errlist}
-  \item[\macro{EXDEV}] \var{oldpath} e \var{newpath} non sono sullo
+  \item[\errcode{EXDEV}] \param{oldpath} e \param{newpath} non sono sullo
     stesso filesystem.
-  \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[\errcode{EPERM}] il filesystem che contiene \param{oldpath} e
+    \param{newpath} non supporta i link diretti o è una directory.
+  \item[\errcode{EEXIST}] un file (o una directory) con quel nome esiste di
     già.
-  \item[\macro{EMLINK}] ci sono troppi link al file \var{oldpath} (il
-    numero massimo è specificato dalla variabile \macro{LINK\_MAX}, vedi
+  \item[\errcode{EMLINK}] ci sono troppi link al file \param{oldpath} (il
+    numero massimo è specificato dalla variabile \const{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}.}
+  ed inoltre \const{EACCES}, \const{ENAMETOOLONG}, \const{ENOTDIR},
+  \const{EFAULT}, \const{ENOMEM}, \const{EROFS}, \const{ELOOP},
+  \const{ENOSPC}, \const{EIO}.}
 \end{prototype}
 
 La creazione di un nuovo collegamento diretto non copia il contenuto del file,
@@ -115,7 +115,7 @@ Data la pericolosit
 simbolici che possono fornire la stessa funzionalità senza questi problemi,
 nei filesystem usati in Linux questa caratteristica è stata completamente
 disabilitata, e al tentativo di creare un link diretto ad una directory la
-funzione restituisce l'errore \macro{EPERM}.
+funzione restituisce l'errore \errcode{EPERM}.
 
 La rimozione di un file (o più precisamente della voce che lo referenzia
 all'interno di una directory) si effettua con la funzione \func{unlink}; il
@@ -131,17 +131,17 @@ suo prototipo 
     errore, nel qual caso il file non viene toccato. La variabile
     \var{errno} viene impostata secondo i seguenti codici di errore:
   \begin{errlist}
-  \item[\macro{EISDIR}] \var{pathname} si riferisce ad una directory
+  \item[\errcode{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
+    prescrive invece l'uso di \errcode{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[\errcode{EROFS}] \var{pathname} è su un filesystem montato in sola
   lettura.
-  \item[\macro{EISDIR}] \var{pathname} fa riferimento a una directory.
+  \item[\errcode{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}.}
+  ed inoltre: \const{EACCES}, \const{EFAULT}, \const{ENOENT}, \const{ENOTDIR},
+  \const{ENOMEM}, \const{EROFS}, \const{ELOOP}, \const{EIO}.}
 \end{prototype}
 
 Per cancellare una voce in una directory è necessario avere il permesso di
@@ -210,37 +210,37 @@ nello stesso filesystem) si usa invece la funzione \func{rename},\footnote{la
     errore, nel qual caso il file non viene toccato. La variabile
     \var{errno} viene impostata secondo i seguenti codici di errore:
   \begin{errlist} 
-  \item[\macro{EISDIR}] \var{newpath} è una directory mentre \var{oldpath} non
+  \item[\errcode{EISDIR}] \var{newpath} è una directory mentre \var{oldpath} non
     è una directory.
-  \item[\macro{EXDEV}] \var{oldpath} e \var{newpath} non sono sullo stesso
+  \item[\errcode{EXDEV}] \var{oldpath} e \var{newpath} non sono sullo stesso
     filesystem.
-  \item[\macro{ENOTEMPTY}] \var{newpath} è una directory già esistente e non
+  \item[\errcode{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
-    qualche processo (come directory di lavoro o come radice) o del sistema
+  \item[\errcode{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[\errcode{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
-    \var{oldpath} è una directory e \var{newpath} esiste e non è una
+  \item[\errcode{ENOTDIR}] Uno dei componenti dei pathname non è una directory
+    \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}.}
+  ed inoltre \const{EACCESS}, \const{EPERM}, \const{EMLINK}, \const{ENOENT},
+  \const{ENOMEM}, \const{EROFS}, \const{ELOOP} e \const{ENOSPC}.}
 \end{prototype}
 
 Il comportamento della funzione è diverso a seconda che si voglia rinominare
 un file o una directory; se ci riferisce a un file allora \var{newpath}, se
 esiste, non deve essere una directory (altrimenti si ha l'errore
-\macro{EISDIR}). Nel caso \var{newpath} indichi un file esistente questo viene
-cancellato e rimpiazzato (atomicamente).
+\errcode{EISDIR}). Nel caso \var{newpath} indichi un file esistente questo
+viene cancellato e rimpiazzato (atomicamente).
 
 Se \var{oldpath} è una directory allora \var{newpath}, se esiste, deve essere
-una directory vuota, altrimenti si avranno gli errori \macro{ENOTDIR} (se non
-è una directory) o \macro{ENOTEMPTY} (se non è vuota). Chiaramente
+una directory vuota, altrimenti si avranno gli errori \errcode{ENOTDIR} (se
+non è una directory) o \errcode{ENOTEMPTY} (se non è vuota). Chiaramente
 \var{newpath} non può contenere \var{oldpath} altrimenti si avrà un errore
-\macro{EINVAL}.
+\errcode{EINVAL}.
 
 Se \var{oldpath} si riferisce a un link simbolico questo sarà rinominato; se
 \var{newpath} è un link simbolico verrà cancellato come qualunque altro file.
@@ -295,17 +295,17 @@ specificato. La funzione che permette di creare un nuovo link simbolico 
   \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
     errore, nel qual caso la variabile \var{errno} assumerà i valori:
   \begin{errlist}
-  \item[\macro{EPERM}] il filesystem che contiene \param{newpath} non supporta
-    i link simbolici.
-  \item[\macro{ENOENT}] una componente di \param{newpath} non esiste o
+  \item[\errcode{EPERM}] il filesystem che contiene \param{newpath} non
+    supporta i link simbolici.
+  \item[\errcode{ENOENT}] una componente di \param{newpath} non esiste o
     \param{oldpath} è una stringa vuota.
-  \item[\macro{EEXIST}] esiste già un file \param{newpath}.
-  \item[\macro{EROFS}] \param{newpath} è su un filesystem montato in sola
+  \item[\errcode{EEXIST}] esiste già un file \param{newpath}.
+  \item[\errcode{EROFS}] \param{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}.}
+  ed inoltre \const{EFAULT}, \const{EACCES}, \const{ENAMETOOLONG},
+  \const{ENOTDIR}, \const{ENOMEM}, \const{ELOOP}, \const{ENOSPC} e
+  \const{EIO}.}
 \end{prototype}
 
 Si tenga presente che la funzione non effettua nessun controllo sull'esistenza
@@ -375,12 +375,12 @@ la funzione \func{readlink}, il cui prototipo 
     \var{buff} o -1 per un errore, nel qual caso la variabile
     \var{errno} assumerà i valori:
   \begin{errlist}
-  \item[\macro{EINVAL}] \param{path} non è un link simbolico o \param{size}
+  \item[\errcode{EINVAL}] \param{path} non è un link simbolico o \param{size}
     non è positiva.
   \end{errlist}
-  ed inoltre \macro{ENOTDIR}, \macro{ENAMETOOLONG}, \macro{ENOENT},
-  \macro{EACCES}, \macro{ELOOP}, \macro{EIO}, \macro{EFAULT} e
-  \macro{ENOMEM}.}
+  ed inoltre \const{ENOTDIR}, \const{ENAMETOOLONG}, \const{ENOENT},
+  \const{EACCES}, \const{ELOOP}, \const{EIO}, \const{EFAULT} e
+  \const{ENOMEM}.}
 \end{prototype}
 
 La funzione apre il link simbolico, ne legge il contenuto, lo scrive nel
@@ -415,9 +415,9 @@ directory porterebbe il comando ad esaminare \file{/boot}, \file{/boot/boot},
 
 Per questo motivo il kernel e le librerie prevedono che nella risoluzione di
 un pathname possano essere seguiti un numero limitato di link simbolici, il
-cui valore limite è specificato dalla costante \macro{MAXSYMLINKS}. Qualora
+cui valore limite è specificato dalla costante \const{MAXSYMLINKS}. Qualora
 questo limite venga superato viene generato un errore ed \var{errno} viene
-impostata al valore \macro{ELOOP}.
+impostata al valore \errcode{ELOOP}.
 
 Un punto da tenere sempre presente è che, come abbiamo accennato, un link
 simbolico può fare riferimento anche ad un file che non esiste; ad esempio
@@ -454,21 +454,21 @@ accedere ai tipi usati da queste funzioni si deve includere il file
   \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[\errcode{EEXIST}] Un file (o una directory) con quel nome esiste di già. 
+  \item[\errcode{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[\errcode{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[\errcode{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}.}
+  ed inoltre anche \const{EPERM}, \const{EFAULT}, \const{ENAMETOOLONG},
+  \const{ENOENT}, \const{ENOTDIR}, \const{ENOMEM}, \const{ELOOP},
+  \const{EROFS}.}
 \end{prototype}
 
 La funzione crea una nuova directory vuota (che contiene solo le due voci
@@ -489,20 +489,20 @@ suo prototipo 
   \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[\errcode{EPERM}] Il filesystem non supporta la cancellazione di
     directory, oppure la directory che contiene \var{dirname} ha lo sticky bit
     impostato e l'userid effettivo del processo non corrisponde al
     proprietario della directory.
-  \item[\macro{EACCESS}] Non c'è il permesso di scrittura per la directory che
+  \item[\errcode{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[\errcode{EBUSY}] La directory specificata è la directory di lavoro o la
     radice di qualche processo.
-  \item[\macro{ENOTEMPTY}] La directory non è vuota.
+  \item[\errcode{ENOTEMPTY}] La directory non è vuota.
   \end{errlist}
-  ed inoltre anche \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT},
-  \macro{ENOTDIR}, \macro{ENOMEM}, \macro{ELOOP}, \macro{EROFS}.}
+  ed inoltre anche \const{EFAULT}, \const{ENAMETOOLONG}, \const{ENOENT},
+  \const{ENOTDIR}, \const{ENOMEM}, \const{ELOOP}, \const{EROFS}.}
 \end{prototype}
 
 La modalità con cui avviene la cancellazione è analoga a quella di
@@ -537,16 +537,16 @@ di queste funzioni 
   \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}] Non si hanno privilegi sufficienti a creare l'inode, o
+  \item[\errcode{EPERM}] Non si hanno privilegi sufficienti a creare l'inode, o
     il filesystem su cui si è cercato di creare \func{pathname} non supporta
     l'operazione.
-  \item[\macro{EINVAL}] Il valore di \var{mode} non indica un file, una fifo o
-    un dipositivo.
-  \item[\macro{EEXIST}] \param{pathname} esiste già o è un link simbolico.
+  \item[\errcode{EINVAL}] Il valore di \var{mode} non indica un file, una fifo
+    un dipositivo.
+  \item[\errcode{EEXIST}] \param{pathname} esiste già o è un link simbolico.
   \end{errlist}
-  ed inoltre anche \macro{EFAULT}, \macro{EACCESS}, \macro{ENAMETOOLONG},
-  \macro{ENOENT}, \macro{ENOTDIR}, \macro{ENOMEM}, \macro{ELOOP},
-  \macro{ENOSPC}, \macro{EROFS}.}
+  ed inoltre anche \const{EFAULT}, \const{EACCESS}, \const{ENAMETOOLONG},
+  \const{ENOENT}, \const{ENOTDIR}, \const{ENOMEM}, \const{ELOOP},
+  \const{ENOSPC}, \const{EROFS}.}
 \end{functions}
 
 La funzione permette di creare un file speciale, ma si può usare anche per
@@ -556,10 +556,10 @@ file che si vuole creare ed i relativi permessi, secondo i valori riportati in
 permessi sono comunque modificati nella maniera usuale dal valore di
 \var{umask} (si veda \secref{sec:file_umask}).
 
-Per il tipo di file può essere specificato solo uno fra: \macro{S\_IFREG} per
-un file regolare (che sarà creato vuoto), \macro{S\_IFBLK} per un device a
-blocchi, \macro{S\_IFCHR} per un device a caratteri e \macro{S\_IFIFO} per una
-fifo. Un valore diverso comporterà l'errore \macro{EINVAL}. Qualora si sia
+Per il tipo di file può essere specificato solo uno fra: \const{S\_IFREG} per
+un file regolare (che sarà creato vuoto), \const{S\_IFBLK} per un device a
+blocchi, \const{S\_IFCHR} per un device a caratteri e \const{S\_IFIFO} per una
+fifo. Un valore diverso comporterà l'errore \errcode{EINVAL}. Qualora si sia
 specificato in \param{mode} un file di dispositivo, il valore di \param{dev}
 viene usato per indicare a quale dispositivo si fa riferimento.
 
@@ -584,9 +584,9 @@ Per creare una fifo (un file speciale, su cui torneremo in dettaglio in
   \funcdecl{int mkfifo(const char *pathname, mode\_t mode)} Crea una fifo.
   
   \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
-    errore, nel qual caso \var{errno} assumerà i valori \macro{EACCESS},
-    \macro{EEXIST}, \macro{ENAMETOOLONG}, \macro{ENOENT}, \macro{ENOSPC},
-    \macro{ENOTDIR} e \macro{EROFS}.}
+    errore, nel qual caso \var{errno} assumerà i valori \const{EACCESS},
+    \const{EEXIST}, \const{ENAMETOOLONG}, \const{ENOENT}, \const{ENOSPC},
+    \const{ENOTDIR} e \const{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
@@ -640,14 +640,14 @@ apposita funzione di libreria,  \func{getcwd}, il cui prototipo 
   allocata, per una dimensione massima di \var{size}.
   
   \bodydesc{La funzione restituisce il puntatore \var{buffer} se riesce,
-    \macro{NULL} se fallisce, in quest'ultimo caso la variabile
+    \val{NULL} se fallisce, in quest'ultimo caso la variabile
     \var{errno} è impostata con i seguenti codici di errore:
   \begin{errlist}
-  \item[\macro{EINVAL}] L'argomento \var{size} è zero e \var{buffer} non
+  \item[\errcode{EINVAL}] L'argomento \var{size} è zero e \var{buffer} non
     è nullo.
-  \item[\macro{ERANGE}] L'argomento \var{size} è più piccolo della
+  \item[\errcode{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[\errcode{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}}
@@ -666,7 +666,7 @@ volta cessato il suo utilizzo.
 Di questa funzione esiste una versione \code{char *getwd(char *buffer)}
 fatta per compatibilità all'indietro con BSD, che non consente di specificare
 la dimensione del buffer; esso deve essere allocato in precedenza ed avere una
-dimensione superiore a \macro{PATH\_MAX} (di solito 256 byte, vedi
+dimensione superiore a \const{PATH\_MAX} (di solito 256 byte, vedi
 \secref{sec:sys_limits}); il problema è che in Linux non esiste una dimensione
 superiore per un pathname, per cui non è detto che il buffer sia sufficiente a
 contenere il nome del file, e questa è la ragione principale per cui questa
@@ -674,7 +674,7 @@ funzione 
 
 Una seconda funzione simile è \code{char *get\_current\_dir\_name(void)} che è
 sostanzialmente equivalente ad una \code{getcwd(NULL, 0)}, con la sola
-differenza che essa ritorna il valore della variabile di ambiente \macro{PWD},
+differenza che essa ritorna il valore della variabile di ambiente \val{PWD},
 che essendo costruita dalla shell può contenere un pathname comprendente anche
 dei link simbolici. Usando \func{getcwd} infatti, essendo il pathname ricavato
 risalendo all'indietro l'albero della directory, si perderebbe traccia di ogni
@@ -689,12 +689,12 @@ appunto per \textit{change directory}, il suo prototipo 
   \bodydesc{La funzione restituisce 0 in caso di successo e -1 per un errore,
     nel qual caso \var{errno} assumerà i valori:
   \begin{errlist}
-  \item[\macro{ENOTDIR}] Non si è specificata una directory.
-  \item[\macro{EACCESS}] Manca il permesso di ricerca su uno dei componenti di
+  \item[\errcode{ENOTDIR}] Non si è specificata una directory.
+  \item[\errcode{EACCESS}] Manca il permesso di ricerca su uno dei componenti di
     \param{path}.
   \end{errlist}
-  ed inoltre \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT},
-  \macro{ENOMEM}, \macro{ELOOP} e \macro{EIO}.}
+  ed inoltre \const{EFAULT}, \const{ENAMETOOLONG}, \const{ENOENT},
+  \const{ENOMEM}, \const{ELOOP} e \const{EIO}.}
 \end{prototype}
 \noindent ed ovviamente \param{pathname} deve indicare una directory per la
 quale si hanno i permessi di accesso.
@@ -707,8 +707,8 @@ usa \func{fchdir}, il cui prototipo 
   pathname.
   
   \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
-    errore, in caso di errore \var{errno} assumerà i valori \macro{EBADF} o
-    \macro{EACCES}.}
+    errore, in caso di errore \var{errno} assumerà i valori \const{EBADF} o
+    \const{EACCES}.}
 \end{prototype}
 \noindent anche in questo caso \param{fd} deve essere un file descriptor
 valido che fa riferimento ad una directory. Inoltre l'unico errore di accesso
@@ -736,19 +736,19 @@ di queste funzioni 
   non esistente al momento dell'invocazione. 
 
   \bodydesc{La funzione ritorna il puntatore alla stringa con il nome o
-  \macro{NULL} in caso di fallimento. Non sono definiti errori.}
+  \val{NULL} in caso di fallimento. Non sono definiti errori.}
 \end{prototype}
 \noindent se si è passato un puntatore \param{string} non nullo questo deve
-essere di dimensione \macro{L\_tmpnam} (costante definita in \file{stdio.h},
-come \macro{P\_tmpdir} e \macro{TMP\_MAX}) ed il nome generato vi verrà
+essere di dimensione \const{L\_tmpnam} (costante definita in \file{stdio.h},
+come \const{P\_tmpdir} e \const{TMP\_MAX}) ed il nome generato vi verrà
 copiato automaticamente; altrimenti il nome sarà generato in un buffer statico
 interno che verrà sovrascritto ad una chiamata successiva.  Successive
 invocazioni della funzione continueranno a restituire nomi unici fino ad un
-massimo di \macro{TMP\_MAX} volte. Al nome viene automaticamente aggiunto come
-prefisso la directory specificata da \macro{P\_tmpdir}.
+massimo di \const{TMP\_MAX} volte. Al nome viene automaticamente aggiunto come
+prefisso la directory specificata da \const{P\_tmpdir}.
 
 Di questa funzione esiste una versione rientrante, \func{tmpnam\_r}, che non
-fa nulla quando si passa \macro{NULL} come parametro. Una funzione simile,
+fa nulla quando si passa \val{NULL} come parametro. Una funzione simile,
 \func{tempnam}, permette di specificare un prefisso per il file
 esplicitamente, il suo prototipo è:
 \begin{prototype}{stdio.h}{char *tempnam(const char *dir, const char *pfx)}
@@ -756,8 +756,8 @@ esplicitamente, il suo prototipo 
   non esistente al momento dell'invocazione.
 
   \bodydesc{La funzione ritorna il puntatore alla stringa con il nome o
-  \macro{NULL} in caso di fallimento, \var{errno} viene impostata a
-  \macro{ENOMEM} qualora fallisca l'allocazione della stringa.}
+  \val{NULL} in caso di fallimento, \var{errno} viene impostata a
+  \const{ENOMEM} qualora fallisca l'allocazione della stringa.}
 \end{prototype}
 
 La funzione alloca con \code{malloc} la stringa in cui restituisce il nome,
@@ -767,11 +767,11 @@ massimo 5 caratteri per il nome provvisorio. La funzione assegna come
 directory per il file temporaneo (verificando che esista e sia accessibili),
 la prima valida delle seguenti:
 \begin{itemize*}
-\item La variabile di ambiente \macro{TMPNAME} (non ha effetto se non è
+\item La variabile di ambiente \const{TMPNAME} (non ha effetto se non è
   definita o se il programma chiamante è \acr{suid} o \acr{sgid}, vedi
   \secref{sec:file_suid_sgid}).
-\item il valore dell'argomento \param{dir} (se diverso da \macro{NULL}).
-\item Il valore della costante \macro{P\_tmpdir}.
+\item il valore dell'argomento \param{dir} (se diverso da \val{NULL}).
+\item Il valore della costante \const{P\_tmpdir}.
 \item la directory \file{/tmp}.
 \end{itemize*}
 
@@ -780,7 +780,7 @@ ottenere un nome duplicato, nulla assicura che un altro processo non possa
 avere creato, fra l'ottenimento del nome e l'apertura del file, un altro file
 con lo stesso nome; per questo motivo quando si usa il nome ottenuto da una di
 queste funzioni occorre sempre aprire il nuovo file in modalità di esclusione
-(cioè con l'opzione \macro{O\_EXCL} per i file descriptor o con il flag
+(cioè con l'opzione \const{O\_EXCL} per i file descriptor o con il flag
 \code{x} per gli stream) che fa fallire l'apertura in caso il file sia già
 esistente.
 
@@ -790,20 +790,20 @@ POSIX definisce la funzione \func{tempfile}, il cui prototipo 
   Restituisce un file temporaneo aperto in lettura/scrittura.
   
   \bodydesc{La funzione ritorna il puntatore allo stream associato al file
-    temporaneo in caso di successo e \macro{NULL} in caso di errore, nel qual
+    temporaneo in caso di successo e \val{NULL} in caso di errore, nel qual
     caso \var{errno} assumerà i valori:
     \begin{errlist}
-    \item[\macro{EINTR}] La funzione è stata interrotta da un segnale.
-    \item[\macro{EEXIST}] Non è stato possibile generare un nome univoco.
+    \item[\errcode{EINTR}] La funzione è stata interrotta da un segnale.
+    \item[\errcode{EEXIST}] Non è stato possibile generare un nome univoco.
     \end{errlist}
-    ed inoltre \macro{EFAULT}, \macro{EMFILE}, \macro{ENFILE}, \macro{ENOSPC},
-    \macro{EROFS} e \macro{EACCESS}.}
+    ed inoltre \const{EFAULT}, \const{EMFILE}, \const{ENFILE}, \const{ENOSPC},
+    \const{EROFS} e \const{EACCESS}.}
 \end{prototype}
 \noindent essa restituisce direttamente uno stream già aperto (in modalità
 \code{r+b}, si veda \secref{sec:file_fopen}) e pronto per l'uso, che viene
 automaticamente cancellato alla sua chiusura o all'uscita dal programma. Lo
 standard non specifica in quale directory verrà aperto il file, ma le
-\acr{glibc} prima tentano con \macro{P\_tmpdir} e poi con \file{/tmp}. Questa
+\acr{glibc} prima tentano con \const{P\_tmpdir} e poi con \file{/tmp}. Questa
 funzione è rientrante e non soffre di problemi di \textit{race
   condition}\index{race condition}.
 
@@ -818,10 +818,10 @@ il suo prototipo 
   \param{template}.
   
   \bodydesc{La funzione ritorna il puntatore \param{template} in caso di
-    successo e \macro{NULL} in caso di errore, nel qual caso \var{errno}
+    successo e \val{NULL} in caso di errore, nel qual caso \var{errno}
     assumerà i valori:
     \begin{errlist}
-    \item[\macro{EINVAL}] \param{template} non termina con \code{XXXXXX}.
+    \item[\errcode{EINVAL}] \param{template} non termina con \code{XXXXXX}.
     \end{errlist}}
 \end{prototype}
 \noindent dato che \param{template} deve poter essere modificata dalla
@@ -846,14 +846,14 @@ prototipo 
   \bodydesc{La funzione ritorna il file descriptor in caso successo e
     -1 in caso di errore, nel qual caso \var{errno} assumerà i valori:
     \begin{errlist}
-    \item[\macro{EINVAL}] \param{template} non termina con \code{XXXXXX}.
-    \item[\macro{EEXIST}] non è riuscita a creare un file temporano, il
+    \item[\errcode{EINVAL}] \param{template} non termina con \code{XXXXXX}.
+    \item[\errcode{EEXIST}] non è riuscita a creare un file temporano, il
       contenuto di \param{template} è indefinito.
     \end{errlist}}
 \end{prototype}
 \noindent come per \func{mktemp} anche in questo caso \param{template} non può
 essere una stringa costante. La funzione apre un file in lettura/scrittura con
-la funzione \func{open}, usando l'opzione \macro{O\_EXCL} (si veda
+la funzione \func{open}, usando l'opzione \const{O\_EXCL} (si veda
 \secref{sec:file_open}), in questo modo al ritorno della funzione si ha la
 certezza di essere i soli utenti del file. I permessi sono impostati al valore
 \code{0600}\footnote{questo è vero a partire dalle \acr{glibc} 2.0.7, le
@@ -869,10 +869,10 @@ In OpenBSD 
   \code{XXXXXX} finali di \param{template}.
   
   \bodydesc{La funzione ritorna il puntatore al nome della directory in caso
-    successo e \macro{NULL} in caso di errore, nel qual caso \var{errno}
+    successo e \val{NULL} in caso di errore, nel qual caso \var{errno}
     assumerà i valori:
     \begin{errlist}
-    \item[\macro{EINVAL}] \param{template} non termina con \code{XXXXXX}.
+    \item[\errcode{EINVAL}] \param{template} non termina con \code{XXXXXX}.
     \end{errlist}
     più gli altri eventuali codici di errore di \func{mkdir}.}
 \end{prototype}
@@ -921,9 +921,9 @@ queste funzioni sono i seguenti:
   descriptor \var{filedes}.
   
   \bodydesc{Le funzioni restituiscono 0 in caso di successo e -1 per un
-    errore, nel qual caso \var{errno} assumerà uno dei valori: \macro{EBADF},
-    \macro{ENOENT}, \macro{ENOTDIR}, \macro{ELOOP}, \macro{EFAULT},
-    \macro{EACCESS}, \macro{ENOMEM}, \macro{ENAMETOOLONG}.}
+    errore, nel qual caso \var{errno} assumerà uno dei valori: \const{EBADF},
+    \const{ENOENT}, \const{ENOTDIR}, \const{ELOOP}, \const{EFAULT},
+    \const{EACCESS}, \const{ENOMEM}, \const{ENAMETOOLONG}.}
 \end{functions}
 \noindent il loro comportamento è identico, solo che operano rispettivamente
 su un file, su un link simbolico e su un file descriptor.
@@ -1023,33 +1023,33 @@ un'opportuna combinazione.
     \textbf{Flag} & \textbf{Valore} & \textbf{Significato} \\
     \hline
     \hline
-    \macro{S\_IFMT}   &  0170000 & bitmask per i bit del tipo di file \\
-    \macro{S\_IFSOCK} &  0140000 & socket             \\
-    \macro{S\_IFLNK}  &  0120000 & link simbolico     \\
-    \macro{S\_IFREG}  &  0100000 & file regolare      \\ 
-    \macro{S\_IFBLK}  &  0060000 & device a blocchi   \\
-    \macro{S\_IFDIR}  &  0040000 & directory          \\ 
-    \macro{S\_IFCHR}  &  0020000 & device a caratteri \\
-    \macro{S\_IFIFO}  &  0010000 & fifo               \\
+    \const{S\_IFMT}   &  0170000 & bitmask per i bit del tipo di file \\
+    \const{S\_IFSOCK} &  0140000 & socket             \\
+    \const{S\_IFLNK}  &  0120000 & link simbolico     \\
+    \const{S\_IFREG}  &  0100000 & file regolare      \\ 
+    \const{S\_IFBLK}  &  0060000 & device a blocchi   \\
+    \const{S\_IFDIR}  &  0040000 & directory          \\ 
+    \const{S\_IFCHR}  &  0020000 & device a caratteri \\
+    \const{S\_IFIFO}  &  0010000 & fifo               \\
     \hline
-    \macro{S\_ISUID}  &  0004000 & set UID bit   \\
-    \macro{S\_ISGID}  &  0002000 & set GID bit   \\
-    \macro{S\_ISVTX}  &  0001000 & sticky bit    \\
+    \const{S\_ISUID}  &  0004000 & set UID bit   \\
+    \const{S\_ISGID}  &  0002000 & set GID bit   \\
+    \const{S\_ISVTX}  &  0001000 & sticky bit    \\
     \hline
-%    \macro{S\_IRWXU}  &  00700   & bitmask per i permessi del proprietario  \\
-    \macro{S\_IRUSR}  &  00400   & il proprietario ha permesso di lettura   \\
-    \macro{S\_IWUSR}  &  00200   & il proprietario ha permesso di scrittura \\
-    \macro{S\_IXUSR}  &  00100   & il proprietario ha permesso di esecuzione\\
+%    \const{S\_IRWXU}  &  00700   & bitmask per i permessi del proprietario  \\
+    \const{S\_IRUSR}  &  00400   & il proprietario ha permesso di lettura   \\
+    \const{S\_IWUSR}  &  00200   & il proprietario ha permesso di scrittura \\
+    \const{S\_IXUSR}  &  00100   & il proprietario ha permesso di esecuzione\\
     \hline
-%    \macro{S\_IRWXG}  &  00070   & bitmask per i permessi del gruppo        \\
-    \macro{S\_IRGRP}  &  00040   & il gruppo ha permesso di lettura         \\
-    \macro{S\_IWGRP}  &  00020   & il gruppo ha permesso di scrittura       \\
-    \macro{S\_IXGRP}  &  00010   & il gruppo ha permesso di esecuzione      \\
+%    \const{S\_IRWXG}  &  00070   & bitmask per i permessi del gruppo        \\
+    \const{S\_IRGRP}  &  00040   & il gruppo ha permesso di lettura         \\
+    \const{S\_IWGRP}  &  00020   & il gruppo ha permesso di scrittura       \\
+    \const{S\_IXGRP}  &  00010   & il gruppo ha permesso di esecuzione      \\
     \hline
-%    \macro{S\_IRWXO}  &  00007   & bitmask per i permessi di tutti gli altri\\
-    \macro{S\_IROTH}  &  00004   & gli altri hanno permesso di lettura      \\
-    \macro{S\_IWOTH}  &  00002   & gli altri hanno permesso di esecuzione   \\
-    \macro{S\_IXOTH}  &  00001   & gli altri hanno permesso di esecuzione   \\
+%    \const{S\_IRWXO}  &  00007   & bitmask per i permessi di tutti gli altri\\
+    \const{S\_IROTH}  &  00004   & gli altri hanno permesso di lettura      \\
+    \const{S\_IWOTH}  &  00002   & gli altri hanno permesso di esecuzione   \\
+    \const{S\_IXOTH}  &  00001   & gli altri hanno permesso di esecuzione   \\
     \hline    
   \end{tabular}
   \caption{Costanti per l'identificazione dei vari bit che compongono il campo
@@ -1100,7 +1100,7 @@ cui si pu
 presenti al di là della dimensione scelta come nuova fine del file.
 
 Un file può sempre essere troncato a zero aprendolo con il flag
-\macro{O\_TRUNC}, ma questo è un caso particolare; per qualunque altra
+\const{O\_TRUNC}, ma questo è un caso particolare; per qualunque altra
 dimensione si possono usare le due funzioni \func{truncate} e
 \func{ftruncate}, i cui prototipi sono:
 \begin{functions}
@@ -1116,18 +1116,18 @@ dimensione si possono usare le due funzioni \func{truncate} e
     errore, nel qual caso \var{errno} viene impostata 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[\errcode{EBADF}] \var{fd}  non è un file descriptor.
+  \item[\errcode{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[\errcode{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[\errcode{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}.}
+  ed anche \const{ENOTDIR}, \const{ENAMETOOLONG}, \const{ENOENT},
+  \const{EROFS}, \const{EIO}, \const{EFAULT}, \const{ELOOP}.}
 \end{functions}
 
 Se il file è più lungo della lunghezza specificata i dati in eccesso saranno
@@ -1220,9 +1220,9 @@ nell'ultima colonna di \tabref{tab:file_file_times}.
     &         &         &$\bullet$&         &         &         & \\
     \func{creat}  
     &$\bullet$&$\bullet$&$\bullet$&         &$\bullet$&$\bullet$&  con 
-    \macro{O\_CREATE} \\    \func{creat}  
+    \const{O\_CREATE} \\    \func{creat}  
     &         &$\bullet$&$\bullet$&         &$\bullet$&$\bullet$&   
-    con \macro{O\_TRUNC} \\    \func{exec}  
+    con \const{O\_TRUNC} \\    \func{exec}  
     &$\bullet$&         &         &         &         &         & \\
     \func{lchown}  
     &         &         &$\bullet$&         &         &         & \\
@@ -1234,9 +1234,9 @@ nell'ultima colonna di \tabref{tab:file_file_times}.
     &$\bullet$&$\bullet$&$\bullet$&         &$\bullet$&$\bullet$& \\
     \func{open}
     &$\bullet$&$\bullet$&$\bullet$&         &$\bullet$&$\bullet$& con 
-    \macro{O\_CREATE} \\    \func{open}
+    \const{O\_CREATE} \\    \func{open}
     &         &$\bullet$&$\bullet$&         &         &         & con 
-    \macro{O\_TRUNC}  \\    \func{pipe}
+    \const{O\_TRUNC}  \\    \func{pipe}
     &$\bullet$&$\bullet$&$\bullet$&         &         &         & \\
     \func{read}
     &$\bullet$&         &         &         &         &         & \\
@@ -1295,13 +1295,13 @@ funzione \func{utime}, il cui prototipo 
 
 Cambia i tempi di ultimo accesso e modifica dell'inode specificato da
 \param{filename} secondo i campi \var{actime} e \var{modtime} di
-\param{times}. Se questa è \macro{NULL} allora viene usato il tempo corrente.
+\param{times}. Se questa è \val{NULL} allora viene usato il tempo corrente.
 
 \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
   errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-  \item[\macro{EACCESS}] non si ha il permesso di scrittura sul file.
-  \item[\macro{ENOENT}] \param{filename} non esiste.
+  \item[\errcode{EACCESS}] non si ha il permesso di scrittura sul file.
+  \item[\errcode{ENOENT}] \param{filename} non esiste.
   \end{errlist}}
 \end{prototype}
  
@@ -1326,7 +1326,7 @@ struct utimbuf {
 \end{figure}
 
 L'effetto della funzione e i privilegi necessari per eseguirla dipendono da
-cosa è l'argomento \param{times}; se è \macro{NULL} la funzione imposta il
+cosa è l'argomento \param{times}; se è \val{NULL} la funzione imposta il
 tempo corrente ed è sufficiente avere accesso in scrittura al file; se invece
 si è specificato un valore la funzione avrà successo solo se si è proprietari
 del file (o si hanno i privilegi di amministratore).
@@ -1435,17 +1435,17 @@ che permettono di accedere al valore numerico di questi bit nel campo
     \textbf{\var{st\_mode}} bit & \textbf{Significato} \\
     \hline 
     \hline 
-    \macro{S\_IRUSR}  &  \textit{user-read}, l'utente può leggere     \\
-    \macro{S\_IWUSR}  &  \textit{user-write}, l'utente può scrivere   \\
-    \macro{S\_IXUSR}  &  \textit{user-execute}, l'utente può eseguire \\ 
+    \const{S\_IRUSR}  &  \textit{user-read}, l'utente può leggere     \\
+    \const{S\_IWUSR}  &  \textit{user-write}, l'utente può scrivere   \\
+    \const{S\_IXUSR}  &  \textit{user-execute}, l'utente può eseguire \\ 
     \hline              
-    \macro{S\_IRGRP}  &  \textit{group-read}, il gruppo può leggere    \\
-    \macro{S\_IWGRP}  &  \textit{group-write}, il gruppo può scrivere  \\
-    \macro{S\_IXGRP}  &  \textit{group-execute}, il gruppo può eseguire\\
+    \const{S\_IRGRP}  &  \textit{group-read}, il gruppo può leggere    \\
+    \const{S\_IWGRP}  &  \textit{group-write}, il gruppo può scrivere  \\
+    \const{S\_IXGRP}  &  \textit{group-execute}, il gruppo può eseguire\\
     \hline              
-    \macro{S\_IROTH}  &  \textit{other-read}, tutti possono leggere    \\
-    \macro{S\_IWOTH}  &  \textit{other-write}, tutti possono scrivere  \\
-    \macro{S\_IXOTH}  &  \textit{other-execute}, tutti possono eseguire\\
+    \const{S\_IROTH}  &  \textit{other-read}, tutti possono leggere    \\
+    \const{S\_IWOTH}  &  \textit{other-write}, tutti possono scrivere  \\
+    \const{S\_IXOTH}  &  \textit{other-execute}, tutti possono eseguire\\
     \hline              
   \end{tabular}
   \caption{I bit dei permessi di accesso ai file, come definiti in 
@@ -1562,7 +1562,7 @@ accesso oltre ai bit dei permessi veri e propri, ci sono altri tre bit che
 vengono usati per indicare alcune proprietà speciali dei file.  Due di questi
 sono i bit detti \acr{suid} (da \textit{set-user-ID bit}) e \acr{sgid} (da
 \textit{set-group-ID bit}) che sono identificati dalle costanti
-\macro{S\_ISUID} e \macro{S\_ISGID}.
+\const{S\_ISUID} e \const{S\_ISGID}.
 
 Come spiegato in dettaglio in \secref{sec:proc_exec}, quando si lancia un
 programma il comportamento normale del kernel è quello di impostare gli
@@ -1598,7 +1598,7 @@ il comando \cmd{ls -l}, che visualizza una lettera \cmd{s} al posto della
 \cmd{x} in corrispondenza dei permessi di utente o gruppo. La stessa lettera
 \cmd{s} può essere usata nel comando \cmd{chmod} per impostare questi bit.
 Infine questi bit possono essere controllati all'interno di \var{st\_mode} con
-l'uso delle due costanti \macro{S\_ISUID} e \macro{S\_IGID}, i cui valori sono
+l'uso delle due costanti \const{S\_ISUID} e \const{S\_IGID}, i cui valori sono
 riportati in \tabref{tab:file_mode_flags}.
 
 Gli stessi bit vengono ad assumere in significato completamente diverso per le
@@ -1617,7 +1617,7 @@ dettaglio pi
 \subsection{Il bit \textsl{sticky}}
 \label{sec:file_sticky}
 
-L'ultimo dei bit rimanenti, identificato dalla costante \macro{S\_ISVTX}, è in
+L'ultimo dei bit rimanenti, identificato dalla costante \const{S\_ISVTX}, è in
 parte un rimasuglio delle origini dei sistemi Unix. A quell'epoca infatti la
 memoria virtuale e l'accesso ai files erano molto meno sofisticati e per
 ottenere la massima velocità possibile per i programmi usati più comunemente
@@ -1719,21 +1719,21 @@ da \param{pathname}.
   è consentito ed in caso di errore; nel qual caso la variabile \var{errno}
   assumerà i valori:
   \begin{errlist}
-  \item[\macro{EINVAL}] il valore di \param{mode} non è valido.
-  \item[\macro{EACCES}] l'accesso al file non è consentito, o non si ha il
+  \item[\errcode{EINVAL}] il valore di \param{mode} non è valido.
+  \item[\errcode{EACCES}] l'accesso al file non è consentito, o non si ha il
     permesso di attraversare una delle directory di \param{pathname}.
-  \item[\macro{EROFS}] si è richiesto l'accesso in scrittura per un file su un
-    filesystem montato in sola lettura.
+  \item[\errcode{EROFS}] si è richiesto l'accesso in scrittura per un file su
+    un filesystem montato in sola lettura.
   \end{errlist}
-  ed inoltre \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT},
-  \macro{ENOTDIR}, \macro{ELOOP}, \macro{EIO}.}
+  ed inoltre \const{EFAULT}, \const{ENAMETOOLONG}, \const{ENOENT},
+  \const{ENOTDIR}, \const{ELOOP}, \const{EIO}.}
 \end{prototype}
 
 I valori possibili per l'argomento \param{mode} sono esprimibili come
 combinazione delle costanti numeriche riportate in
 \tabref{tab:file_access_mode_val} (attraverso un OR binario delle stesse). I
 primi tre valori implicano anche la verifica dell'esistenza del file, se si
-vuole verificare solo quest'ultima si può usare \macro{F\_OK}, o anche
+vuole verificare solo quest'ultima si può usare \const{F\_OK}, o anche
 direttamente \func{stat}. Nel caso in cui \var{pathname} si riferisca ad un
 link simbolico, questo viene seguito ed il controllo è fatto sul file a cui
 esso fa riferimento.
@@ -1752,10 +1752,10 @@ contrario (o di errore) ritorna -1.
     \textbf{\var{mode}} & \textbf{Significato} \\
     \hline
     \hline
-    \macro{R\_OK} & verifica il permesso di lettura \\
-    \macro{W\_OK} & verifica il permesso di scritture \\
-    \macro{X\_OK} & verifica il permesso di esecuzione \\
-    \macro{F\_OK} & verifica l'esistenza del file \\
+    \const{R\_OK} & verifica il permesso di lettura \\
+    \const{W\_OK} & verifica il permesso di scritture \\
+    \const{X\_OK} & verifica il permesso di esecuzione \\
+    \const{F\_OK} & verifica l'esistenza del file \\
     \hline
   \end{tabular}
   \caption{Valori possibile per il parametro \var{mode} della funzione 
@@ -1788,13 +1788,13 @@ filename e su un file descriptor, i loro prototipi sono:
   \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'userid effettivo non corrisponde a quello del
+  \item[\errcode{EPERM}] L'userid effettivo non corrisponde a quello del
     proprietario del file o non è zero.
-    \item[\macro{EROFS}] Il file è su un filesystem in sola lettura.
+    \item[\errcode{EROFS}] Il file è su un filesystem in sola lettura.
   \end{errlist}
-  ed inoltre \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}.}
+  ed inoltre \const{EIO}; \func{chmod} restituisce anche \const{EFAULT},
+  \const{ENAMETOOLONG}, \const{ENOENT}, \const{ENOMEM}, \const{ENOTDIR},
+  \const{EACCES}, \const{ELOOP}; \func{fchmod} anche \const{EBADF}.}
 \end{functions}
 
 Entrambe le funzioni utilizzano come secondo argomento \param{mode}, una
@@ -1810,24 +1810,24 @@ file.
     \textbf{\var{mode}} & \textbf{Valore} & \textbf{Significato} \\
     \hline
     \hline
-    \macro{S\_ISUID} & 04000 & set user ID \\
-    \macro{S\_ISGID} & 02000 & set group ID \\
-    \macro{S\_ISVTX} & 01000 & sticky bit \\
+    \const{S\_ISUID} & 04000 & set user ID \\
+    \const{S\_ISGID} & 02000 & set group ID \\
+    \const{S\_ISVTX} & 01000 & sticky bit \\
     \hline
-    \macro{S\_IRWXU} & 00700 & l'utente ha tutti i permessi \\
-    \macro{S\_IRUSR} & 00400 & l'utente ha il permesso di lettura  \\
-    \macro{S\_IWUSR} & 00200 & l'utente ha il permesso di scrittura \\
-    \macro{S\_IXUSR} & 00100 & l'utente ha il permesso di esecuzione \\
+    \const{S\_IRWXU} & 00700 & l'utente ha tutti i permessi \\
+    \const{S\_IRUSR} & 00400 & l'utente ha il permesso di lettura  \\
+    \const{S\_IWUSR} & 00200 & l'utente ha il permesso di scrittura \\
+    \const{S\_IXUSR} & 00100 & l'utente ha il permesso di esecuzione \\
     \hline
-    \macro{S\_IRWXG} & 00070 & il gruppo ha tutti i permessi  \\
-    \macro{S\_IRGRP} & 00040 & il gruppo ha il permesso di lettura  \\
-    \macro{S\_IWGRP} & 00020 & il gruppo ha il permesso di scrittura \\
-    \macro{S\_IXGRP} & 00010 & il gruppo ha il permesso di esecuzione \\
+    \const{S\_IRWXG} & 00070 & il gruppo ha tutti i permessi  \\
+    \const{S\_IRGRP} & 00040 & il gruppo ha il permesso di lettura  \\
+    \const{S\_IWGRP} & 00020 & il gruppo ha il permesso di scrittura \\
+    \const{S\_IXGRP} & 00010 & il gruppo ha il permesso di esecuzione \\
     \hline
-    \macro{S\_IRWXO} & 00007 & gli altri hanno tutti i permessi \\
-    \macro{S\_IROTH} & 00004 & gli altri hanno il permesso di lettura  \\
-    \macro{S\_IWOTH} & 00002 & gli altri hanno il permesso di scrittura \\
-    \macro{S\_IXOTH} & 00001 & gli altri hanno il permesso di esecuzione \\
+    \const{S\_IRWXO} & 00007 & gli altri hanno tutti i permessi \\
+    \const{S\_IROTH} & 00004 & gli altri hanno il permesso di lettura  \\
+    \const{S\_IWOTH} & 00002 & gli altri hanno il permesso di scrittura \\
+    \const{S\_IXOTH} & 00001 & gli altri hanno il permesso di esecuzione \\
     \hline
   \end{tabular}
   \caption{Valori delle costanti usate per indicare i vari bit di
@@ -1853,7 +1853,7 @@ Il cambiamento dei permessi di un file eseguito attraverso queste funzioni ha
 comunque alcune limitazioni, previste per motivi di sicurezza. L'uso delle
 funzioni infatti è possibile solo se l'userid effettivo del processo
 corrisponde a quello del proprietario del file o dell'amministratore,
-altrimenti esse falliranno con un errore di \macro{EPERM}.
+altrimenti esse falliranno con un errore di \errcode{EPERM}.
 
 Ma oltre a questa regola generale, di immediata comprensione, esistono delle
 limitazioni ulteriori. Per questo motivo, anche se si è proprietari del file,
@@ -1942,13 +1942,13 @@ sono tre e i loro prototipi sono i seguenti:
   \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'userid effettivo non corrisponde a quello del
+  \item[\errcode{EPERM}] L'userid effettivo 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}.}
+  Oltre a questi entrambe restituiscono gli errori \const{EROFS} e
+  \const{EIO}; \func{chown} restituisce anche \const{EFAULT},
+  \const{ENAMETOOLONG}, \const{ENOENT}, \const{ENOMEM}, \const{ENOTDIR},
+  \const{EACCES}, \const{ELOOP}; \func{fchown} anche \const{EBADF}.}
 \end{functions}
 
 In Linux soltanto l'amministratore può cambiare il proprietario di un file,
@@ -2104,11 +2104,11 @@ radice con la funzione \func{chroot}, il cui prototipo 
 \bodydesc{La funzione restituisce 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'userid effettivo del processo non è zero.
+  \item[\errcode{EPERM}] L'userid effettivo del processo non è zero.
   \end{errlist}
-  ed inoltre \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT},
-  \macro{ENOMEM}, \macro{ENOTDIR}, \macro{EACCES}, \macro{ELOOP};
-  \macro{EROFS} e \macro{EIO}.}
+  ed inoltre \const{EFAULT}, \const{ENAMETOOLONG}, \const{ENOENT},
+  \const{ENOMEM}, \const{ENOTDIR}, \const{EACCES}, \const{ELOOP};
+  \const{EROFS} e \const{EIO}.}
 \end{prototype}
 \noindent in questo modo la directory radice del processo diventerà
 \param{path} (che ovviamente deve esistere) ed ogni pathname assoluto sarà