X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=3d59617e72405b66df178060a0ff7ad2e783d44f;hp=1e99a2842772d3abc973a0bd5c3696b495efe8f5;hb=718a0a24b34dce09e40eafc33c02ae494d100181;hpb=5a59e67204ff436dceb6a13ed39e876aea3945a8 diff --git a/filedir.tex b/filedir.tex index 1e99a28..3d59617 100644 --- a/filedir.tex +++ b/filedir.tex @@ -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{EACCES}, \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{EACCESS}] + \item[\errcode{EEXIST}] Un file (o una directory) con quel nome esiste di + già. + \item[\errcode{EACCES}] 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{EACCES}] 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{EACCES}, \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{EACCES}, + \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 @@ -647,7 +651,7 @@ apposita funzione di libreria, \func{getcwd}, il cui prototipo è nullo. \item[\errcode{ERANGE}] L'argomento \var{size} è più piccolo della lunghezza del pathname. - \item[\errcode{EACCESS}] Manca il permesso di lettura o di ricerca su uno dei + \item[\errcode{EACCES}] Manca il permesso di lettura o di ricerca su uno dei componenti del pathname (cioè su una delle directory superiori alla corrente). \end{errlist}} @@ -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{EACCES}] 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{EACCES}.} \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{EACCES}, \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 @@ -1300,7 +1304,7 @@ Cambia i tempi di ultimo accesso e modifica dell'inode specificato da \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[\errcode{EACCESS}] non si ha il permesso di scrittura sul file. + \item[\errcode{EACCES}] non si ha il permesso di scrittura sul file. \item[\errcode{ENOENT}] \param{filename} non esiste. \end{errlist}} \end{prototype} @@ -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à