X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=46c502b85c2639941370b45a31235f19832579d1;hp=7574ac9a49a12a1a2376e7cbc72f59fbe99d4c12;hb=487b554b85cda92d10367d5af69a0355b9b2329d;hpb=a76ef671288ddb656f3a4aa599cfda5e05491c39 diff --git a/filedir.tex b/filedir.tex index 7574ac9..46c502b 100644 --- a/filedir.tex +++ b/filedir.tex @@ -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 @@ -1017,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: @@ -1455,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 @@ -1589,17 +1594,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,