Revisione di alcune funzioni e rilettura generale.
[gapil.git] / filedir.tex
index 1e99a2842772d3abc973a0bd5c3696b495efe8f5..2e930041c1b480c0489a273674fb4e392409e875 100644 (file)
@@ -83,9 +83,9 @@ principali, come risultano dalla pagina di manuale, sono le seguenti:
     numero massimo è specificato dalla variabile \const{LINK\_MAX}, vedi
     \secref{sec:sys_limits}).
   \end{errlist}
-  ed inoltre \const{EACCES}, \const{ENAMETOOLONG}, \const{ENOTDIR},
-  \const{EFAULT}, \const{ENOMEM}, \const{EROFS}, \const{ELOOP},
-  \const{ENOSPC}, \const{EIO}.}
+  ed inoltre \errval{EACCES}, \errval{ENAMETOOLONG}, \errval{ENOTDIR},
+  \errval{EFAULT}, \errval{ENOMEM}, \errval{EROFS}, \errval{ELOOP},
+  \errval{ENOSPC}, \errval{EIO}.}
 \end{prototype}
 
 La creazione di un nuovo collegamento diretto non copia il contenuto del file,
@@ -140,8 +140,9 @@ suo prototipo 
   lettura.
   \item[\errcode{EISDIR}] \var{pathname} fa riferimento a una directory.
   \end{errlist}
-  ed inoltre: \const{EACCES}, \const{EFAULT}, \const{ENOENT}, \const{ENOTDIR},
-  \const{ENOMEM}, \const{EROFS}, \const{ELOOP}, \const{EIO}.}
+  ed inoltre: \errval{EACCES}, \errval{EFAULT}, \errval{ENOENT},
+  \errval{ENOTDIR}, \errval{ENOMEM}, \errval{EROFS}, \errval{ELOOP},
+  \errval{EIO}.}
 \end{prototype}
 
 Per cancellare una voce in una directory è necessario avere il permesso di
@@ -210,8 +211,8 @@ 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[\errcode{EISDIR}] \var{newpath} è una directory mentre \var{oldpath} non
-    è una directory.
+  \item[\errcode{EISDIR}] \var{newpath} è una directory mentre \var{oldpath}
+    non è una directory.
   \item[\errcode{EXDEV}] \var{oldpath} e \var{newpath} non sono sullo stesso
     filesystem.
   \item[\errcode{ENOTEMPTY}] \var{newpath} è una directory già esistente e non
@@ -226,8 +227,9 @@ nello stesso filesystem) si usa invece la funzione \func{rename},\footnote{la
     o \var{oldpath} è una directory e \var{newpath} esiste e non è una
     directory.
   \end{errlist} 
-  ed inoltre \const{EACCESS}, \const{EPERM}, \const{EMLINK}, \const{ENOENT},
-  \const{ENOMEM}, \const{EROFS}, \const{ELOOP} e \const{ENOSPC}.}
+  ed inoltre \errval{EACCESS}, \errval{EPERM}, \errval{EMLINK},
+  \errval{ENOENT}, \errval{ENOMEM}, \errval{EROFS}, \errval{ELOOP} e
+  \errval{ENOSPC}.}
 \end{prototype}
 
 Il comportamento della funzione è diverso a seconda che si voglia rinominare
@@ -303,9 +305,9 @@ specificato. La funzione che permette di creare un nuovo link simbolico 
   \item[\errcode{EROFS}] \param{newpath} è su un filesystem montato in sola
     lettura.
   \end{errlist}
-  ed inoltre \const{EFAULT}, \const{EACCES}, \const{ENAMETOOLONG},
-  \const{ENOTDIR}, \const{ENOMEM}, \const{ELOOP}, \const{ENOSPC} e
-  \const{EIO}.}
+  ed inoltre \errval{EFAULT}, \errval{EACCES}, \errval{ENAMETOOLONG},
+  \errval{ENOTDIR}, \errval{ENOMEM}, \errval{ELOOP}, \errval{ENOSPC} e
+  \errval{EIO}.}
 \end{prototype}
 
 Si tenga presente che la funzione non effettua nessun controllo sull'esistenza
@@ -378,9 +380,9 @@ la funzione \func{readlink}, il cui prototipo 
   \item[\errcode{EINVAL}] \param{path} non è un link simbolico o \param{size}
     non è positiva.
   \end{errlist}
-  ed inoltre \const{ENOTDIR}, \const{ENAMETOOLONG}, \const{ENOENT},
-  \const{EACCES}, \const{ELOOP}, \const{EIO}, \const{EFAULT} e
-  \const{ENOMEM}.}
+  ed inoltre \errval{ENOTDIR}, \errval{ENAMETOOLONG}, \errval{ENOENT},
+  \errval{EACCES}, \errval{ELOOP}, \errval{EIO}, \errval{EFAULT} e
+  \errval{ENOMEM}.}
 \end{prototype}
 
 La funzione apre il link simbolico, ne legge il contenuto, lo scrive nel
@@ -454,21 +456,23 @@ 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[\errcode{EEXIST}] Un file (o una directory) con quel nome esiste di già. 
+  \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[\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[\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[\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 \const{EPERM}, \const{EFAULT}, \const{ENAMETOOLONG},
-  \const{ENOENT}, \const{ENOTDIR}, \const{ENOMEM}, \const{ELOOP},
-  \const{EROFS}.}
+  ed inoltre anche \errval{EPERM}, \errval{EFAULT}, \errval{ENAMETOOLONG},
+  \errval{ENOENT}, \errval{ENOTDIR}, \errval{ENOMEM}, \errval{ELOOP},
+  \errval{EROFS}.}
 \end{prototype}
 
 La funzione crea una nuova directory vuota (che contiene solo le due voci
@@ -493,16 +497,16 @@ suo prototipo 
     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[\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
+  \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[\errcode{EBUSY}] La directory specificata è la directory di lavoro o la
     radice di qualche processo.
   \item[\errcode{ENOTEMPTY}] La directory non è vuota.
   \end{errlist}
-  ed inoltre anche \const{EFAULT}, \const{ENAMETOOLONG}, \const{ENOENT},
-  \const{ENOTDIR}, \const{ENOMEM}, \const{ELOOP}, \const{EROFS}.}
+  ed inoltre anche \errval{EFAULT}, \errval{ENAMETOOLONG}, \errval{ENOENT},
+  \errval{ENOTDIR}, \errval{ENOMEM}, \errval{ELOOP}, \errval{EROFS}.}
 \end{prototype}
 
 La modalità con cui avviene la cancellazione è analoga a quella di
@@ -544,9 +548,9 @@ di queste funzioni 
     o un dipositivo.
   \item[\errcode{EEXIST}] \param{pathname} esiste già o è un link simbolico.
   \end{errlist}
-  ed inoltre anche \const{EFAULT}, \const{EACCESS}, \const{ENAMETOOLONG},
-  \const{ENOENT}, \const{ENOTDIR}, \const{ENOMEM}, \const{ELOOP},
-  \const{ENOSPC}, \const{EROFS}.}
+  ed inoltre anche \errval{EFAULT}, \errval{EACCESS}, \errval{ENAMETOOLONG},
+  \errval{ENOENT}, \errval{ENOTDIR}, \errval{ENOMEM}, \errval{ELOOP},
+  \errval{ENOSPC}, \errval{EROFS}.}
 \end{functions}
 
 La funzione permette di creare un file speciale, ma si può usare anche per
@@ -584,9 +588,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 \const{EACCESS},
-    \const{EEXIST}, \const{ENAMETOOLONG}, \const{ENOENT}, \const{ENOSPC},
-    \const{ENOTDIR} e \const{EROFS}.}
+    errore, nel qual caso \var{errno} assumerà i valori \errval{EACCESS},
+    \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
@@ -690,11 +694,11 @@ appunto per \textit{change directory}, il suo prototipo 
     nel qual caso \var{errno} assumerà i valori:
   \begin{errlist}
   \item[\errcode{ENOTDIR}] Non si è specificata una directory.
-  \item[\errcode{EACCESS}] Manca il permesso di ricerca su uno dei componenti di
-    \param{path}.
+  \item[\errcode{EACCESS}] Manca il permesso di ricerca su uno dei componenti
+    di \param{path}.
   \end{errlist}
-  ed inoltre \const{EFAULT}, \const{ENAMETOOLONG}, \const{ENOENT},
-  \const{ENOMEM}, \const{ELOOP} e \const{EIO}.}
+  ed inoltre \errval{EFAULT}, \errval{ENAMETOOLONG}, \errval{ENOENT},
+  \errval{ENOMEM}, \errval{ELOOP} e \errval{EIO}.}
 \end{prototype}
 \noindent ed ovviamente \param{pathname} deve indicare una directory per la
 quale si hanno i permessi di accesso.
@@ -707,12 +711,12 @@ 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 \const{EBADF} o
-    \const{EACCES}.}
+    errore, in caso di errore \var{errno} assumerà i valori \errval{EBADF} o
+    \errval{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
-possibile (tutti gli altri sarebbero occorsi all'apertura di \func{fd}), è
+possibile (tutti gli altri sarebbero occorsi all'apertura di \param{fd}), è
 quello in cui il processo non ha il permesso di accesso alla directory
 specificata da \param{fd}.
 
@@ -757,7 +761,7 @@ esplicitamente, il suo prototipo 
 
   \bodydesc{La funzione ritorna il puntatore alla stringa con il nome o
   \val{NULL} in caso di fallimento, \var{errno} viene impostata a
-  \const{ENOMEM} qualora fallisca l'allocazione della stringa.}
+  \errval{ENOMEM} qualora fallisca l'allocazione della stringa.}
 \end{prototype}
 
 La funzione alloca con \code{malloc} la stringa in cui restituisce il nome,
@@ -796,8 +800,8 @@ POSIX definisce la funzione \func{tempfile}, il cui prototipo 
     \item[\errcode{EINTR}] La funzione è stata interrotta da un segnale.
     \item[\errcode{EEXIST}] Non è stato possibile generare un nome univoco.
     \end{errlist}
-    ed inoltre \const{EFAULT}, \const{EMFILE}, \const{ENFILE}, \const{ENOSPC},
-    \const{EROFS} e \const{EACCESS}.}
+    ed inoltre \errval{EFAULT}, \errval{EMFILE}, \errval{ENFILE},
+    \errval{ENOSPC}, \errval{EROFS} e \errval{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
@@ -921,9 +925,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: \const{EBADF},
-    \const{ENOENT}, \const{ENOTDIR}, \const{ELOOP}, \const{EFAULT},
-    \const{EACCESS}, \const{ENOMEM}, \const{ENAMETOOLONG}.}
+    errore, nel qual caso \var{errno} assumerà uno dei valori: \errval{EBADF},
+    \errval{ENOENT}, \errval{ENOTDIR}, \errval{ELOOP}, \errval{EFAULT},
+    \errval{EACCESS}, \errval{ENOMEM}, \errval{ENAMETOOLONG}.}
 \end{functions}
 \noindent il loro comportamento è identico, solo che operano rispettivamente
 su un file, su un link simbolico e su un file descriptor.
@@ -1126,8 +1130,8 @@ dimensione si possono usare le due funzioni \func{truncate} e
     permesso di esecuzione una delle directory del pathname. 
   \item[\errcode{ETXTBSY}] Il file è un programma in esecuzione.
   \end{errlist}
-  ed anche \const{ENOTDIR}, \const{ENAMETOOLONG}, \const{ENOENT},
-  \const{EROFS}, \const{EIO}, \const{EFAULT}, \const{ELOOP}.}
+  ed anche \errval{ENOTDIR}, \errval{ENAMETOOLONG}, \errval{ENOENT},
+  \errval{EROFS}, \errval{EIO}, \errval{EFAULT}, \errval{ELOOP}.}
 \end{functions}
 
 Se il file è più lungo della lunghezza specificata i dati in eccesso saranno
@@ -1725,8 +1729,8 @@ da \param{pathname}.
   \item[\errcode{EROFS}] si è richiesto l'accesso in scrittura per un file su
     un filesystem montato in sola lettura.
   \end{errlist}
-  ed inoltre \const{EFAULT}, \const{ENAMETOOLONG}, \const{ENOENT},
-  \const{ENOTDIR}, \const{ELOOP}, \const{EIO}.}
+  ed inoltre \errval{EFAULT}, \errval{ENAMETOOLONG}, \errval{ENOENT},
+  \errval{ENOTDIR}, \errval{ELOOP}, \errval{EIO}.}
 \end{prototype}
 
 I valori possibili per l'argomento \param{mode} sono esprimibili come
@@ -1792,9 +1796,9 @@ filename e su un file descriptor, i loro prototipi sono:
     proprietario del file o non è zero.
     \item[\errcode{EROFS}] Il file è su un filesystem in sola lettura.
   \end{errlist}
-  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}.}
+  ed inoltre \errval{EIO}; \func{chmod} restituisce anche \errval{EFAULT},
+  \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOMEM}, \errval{ENOTDIR},
+  \errval{EACCES}, \errval{ELOOP}; \func{fchmod} anche \errval{EBADF}.}
 \end{functions}
 
 Entrambe le funzioni utilizzano come secondo argomento \param{mode}, una
@@ -1945,10 +1949,10 @@ sono tre e i loro prototipi sono i seguenti:
   \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 \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}.}
+  Oltre a questi entrambe restituiscono gli errori \errval{EROFS} e
+  \errval{EIO}; \func{chown} restituisce anche \errval{EFAULT},
+  \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOMEM}, \errval{ENOTDIR},
+  \errval{EACCES}, \errval{ELOOP}; \func{fchown} anche \errval{EBADF}.}
 \end{functions}
 
 In Linux soltanto l'amministratore può cambiare il proprietario di un file,
@@ -2106,9 +2110,9 @@ radice con la funzione \func{chroot}, il cui prototipo 
   \begin{errlist}
   \item[\errcode{EPERM}] L'userid effettivo del processo non è zero.
   \end{errlist}
-  ed inoltre \const{EFAULT}, \const{ENAMETOOLONG}, \const{ENOENT},
-  \const{ENOMEM}, \const{ENOTDIR}, \const{EACCES}, \const{ELOOP};
-  \const{EROFS} e \const{EIO}.}
+  ed inoltre \errval{EFAULT}, \errval{ENAMETOOLONG}, \errval{ENOENT},
+  \errval{ENOMEM}, \errval{ENOTDIR}, \errval{EACCES}, \errval{ELOOP};
+  \errval{EROFS} e \errval{EIO}.}
 \end{prototype}
 \noindent in questo modo la directory radice del processo diventerà
 \param{path} (che ovviamente deve esistere) ed ogni pathname assoluto sarà