Microcorrezioni
[gapil.git] / filedir.tex
index 050dcf7a5866dd51b2e7a4630a24387a737df041..0bae59c04094304df39739d08d4c0fe8c9cecec7 100644 (file)
@@ -260,13 +260,13 @@ tab.~\ref{tab:file_file_operations}.\footnote{essa può essere comunque
   detta funzione.} Questo avviene perché su Linux l'apertura di un file
 richiede comunque un'altra operazione che mette in gioco l'omonimo oggetto del
 VFS: l'allocazione di una struttura di tipo \kstruct{file} che viene associata
   detta funzione.} Questo avviene perché su Linux l'apertura di un file
 richiede comunque un'altra operazione che mette in gioco l'omonimo oggetto del
 VFS: l'allocazione di una struttura di tipo \kstruct{file} che viene associata
-ad ogni file aperto nel sistema.
-
-I motivi per cui viene usata una struttura a parte sono diversi, anzitutto,
-come illustrato in sez.~\ref{sec:file_fd}, questa è necessaria per le
-operazioni eseguite dai processi con l'interfaccia dei file descriptor; ogni
-processo infatti mantiene il riferimento ad una struttura \kstruct{file} per
-ogni file che ha aperto, ed è tramite essa che esegue le operazioni di I/O.
+ad ogni file aperto nel sistema.  I motivi per cui viene usata una struttura a
+parte sono diversi, anzitutto, come illustrato in sez.~\ref{sec:file_fd},
+questa è necessaria per le operazioni eseguite dai processi con l'interfaccia
+dei file descriptor. Ogni processo infatti mantiene il riferimento ad una
+struttura \kstruct{file} per ogni file che ha aperto, ed è tramite essa che
+esegue le operazioni di I/O. Inoltre il kernel mantiene un elenco di tutti i
+file aperti nella \itindex{file~table} \textit{file table}.
 
 Inoltre se le operazioni relative agli \textit{inode} fanno riferimento ad
 oggetti posti all'interno di un filesystem e vi si applicano quindi le
 
 Inoltre se le operazioni relative agli \textit{inode} fanno riferimento ad
 oggetti posti all'interno di un filesystem e vi si applicano quindi le
@@ -1722,7 +1722,7 @@ sono stati cancellati: solo quando il numero di collegamenti mantenuto
 lo spazio occupato su disco viene liberato. Si tenga presente comunque che a
 questo si aggiunge sempre un'ulteriore condizione e cioè che non ci siano
 processi che abbiano il suddetto file aperto.\footnote{come vedremo in
 lo spazio occupato su disco viene liberato. Si tenga presente comunque che a
 questo si aggiunge sempre un'ulteriore condizione e cioè che non ci siano
 processi che abbiano il suddetto file aperto.\footnote{come vedremo in
-  cap.~\ref{cha:file_unix_interface} il kernel mantiene anche una tabella dei
+  sez.~\ref{sec:file_unix_interface} il kernel mantiene anche una tabella dei
   file aperti nei vari processi, che a sua volta contiene i riferimenti agli
   \itindex{inode} \textit{inode} ad essi relativi; prima di procedere alla
   cancellazione dello spazio occupato su disco dal contenuto di un file il
   file aperti nei vari processi, che a sua volta contiene i riferimenti agli
   \itindex{inode} \textit{inode} ad essi relativi; prima di procedere alla
   cancellazione dello spazio occupato su disco dal contenuto di un file il
@@ -2001,7 +2001,7 @@ Tutto questo si riflette nello standard POSIX\footnote{le funzioni erano
 che ha introdotto una apposita interfaccia per la lettura delle directory,
 basata sui cosiddetti \textit{directory stream}, chiamati così per l'analogia
 con i \textit{file stream} dell'interfaccia standard ANSI C che vedremo in
 che ha introdotto una apposita interfaccia per la lettura delle directory,
 basata sui cosiddetti \textit{directory stream}, chiamati così per l'analogia
 con i \textit{file stream} dell'interfaccia standard ANSI C che vedremo in
-cap.~\ref{cha:files_std_interface}. La prima funzione di questa interfaccia è
+sez.~\ref{sec:files_std_interface}. La prima funzione di questa interfaccia è
 \funcd{opendir}, il cui prototipo è:
 
 \begin{funcproto}{
 \funcd{opendir}, il cui prototipo è:
 
 \begin{funcproto}{
@@ -3057,11 +3057,11 @@ In OpenBSD è stata introdotta un'altra funzione simile alle precedenti,
   più gli altri eventuali codici di errore di \func{mkdir}.}
 \end{funcproto}
 
   più gli altri eventuali codici di errore di \func{mkdir}.}
 \end{funcproto}
 
-La funzione genera una directory il cui nome è ottenuto sostituendo le
-\code{XXXXXX} finali di \param{template} con permessi \code{0700} (al solito
-si veda cap.~\ref{cha:file_unix_interface} per i dettagli). Dato che la
-creazione della directory è sempre esclusiva i precedenti problemi di
-\itindex{race~condition} \textit{race condition} non si pongono.
+La funzione crea una directory temporanea il cui nome è ottenuto sostituendo
+le \code{XXXXXX} finali di \param{template} con permessi \code{0700} (si veda
+sez.~\ref{sec:file_perm_overview} per i dettagli). Dato che la creazione della
+directory è sempre esclusiva i precedenti problemi di \itindex{race~condition}
+\textit{race condition} non si pongono.
 
 
 
 
 
 
@@ -3984,8 +3984,8 @@ crearlo o rinominarlo o cancellarlo invece occorrerà avere anche il permesso
 di scrittura per la directory.
 
 Avere il permesso di lettura per un file consente di aprirlo con le opzioni
 di scrittura per la directory.
 
 Avere il permesso di lettura per un file consente di aprirlo con le opzioni
-(si veda quanto riportato in tab.~\ref{tab:file_open_flags}) di sola lettura o
-di lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura
+(si veda quanto riportato in sez.~\ref{sec:file_open}) di sola lettura o di
+lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura
 consente di aprire un file in sola scrittura o lettura/scrittura e modificarne
 il contenuto, lo stesso permesso è necessario per poter troncare il file o per
 aggiornare il suo tempo di ultima modifica al tempo corrente, ma non per
 consente di aprire un file in sola scrittura o lettura/scrittura e modificarne
 il contenuto, lo stesso permesso è necessario per poter troncare il file o per
 aggiornare il suo tempo di ultima modifica al tempo corrente, ma non per
@@ -4517,8 +4517,8 @@ utenti non hanno motivi per modificarlo.
 \subsection{La gestione della titolarità dei file}
 \label{sec:file_ownership_management}
 
 \subsection{La gestione della titolarità dei file}
 \label{sec:file_ownership_management}
 
-Vedremo in sez.~\ref{sec:file_base_func} con quali funzioni si possono creare
-nuovi file, in tale occasione vedremo che è possibile specificare in sede di
+Vedremo in sez.~\ref{sec:file_open} con quali funzioni si possono creare nuovi
+file, in tale occasione vedremo che è possibile specificare in sede di
 creazione quali permessi applicare ad un file, però non si può indicare a
 quale utente e gruppo esso deve appartenere.  Lo stesso problema si presenta
 per la creazione di nuove directory (procedimento descritto in
 creazione quali permessi applicare ad un file, però non si può indicare a
 quale utente e gruppo esso deve appartenere.  Lo stesso problema si presenta
 per la creazione di nuove directory (procedimento descritto in
@@ -5484,31 +5484,31 @@ estensione usata dalle ACL di Linux e non è portabile, ma consente di
 semplificare l'inizializzazione in maniera molto comoda. 
 
 Altre due funzioni che consentono di creare una ACL già inizializzata sono
 semplificare l'inizializzazione in maniera molto comoda. 
 
 Altre due funzioni che consentono di creare una ACL già inizializzata sono
-\funcd{acl\_get\_fd} e \funcd{acl\_get\_file}, che però sono per lo più
-utilizzate per leggere la ACL corrente di un file; i rispettivi prototipi
-sono:
+\funcd{acl\_get\_fd} e \funcd{acl\_get\_file}, che consentono di leggere la
+ACL di un file; i rispettivi prototipi sono:
 
 \begin{funcproto}{
 \fhead{sys/types.h}
 \fhead{sys/acl.h}
 \fdecl{acl\_t acl\_get\_file(const char *path\_p, acl\_type\_t type)}
 \fdecl{acl\_t acl\_get\_fd(int fd)}
 
 \begin{funcproto}{
 \fhead{sys/types.h}
 \fhead{sys/acl.h}
 \fdecl{acl\_t acl\_get\_file(const char *path\_p, acl\_type\_t type)}
 \fdecl{acl\_t acl\_get\_fd(int fd)}
-\fdesc{Ottiene i dati delle ACL di un file.} 
+\fdesc{Leggono i dati delle ACL di un file.} 
 }
 
 }
 
-{La funzione ritorna un oggetto di tipo \type{acl\_t} in caso di successo e
-  \val{NULL} per un errore, nel qual caso \var{errno} assumerà uno
-  dei valori:
+{Le funzioni ritornano un oggetto di tipo \type{acl\_t} in caso di successo e
+  \val{NULL} per un errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
   \begin{errlist}
-  \item[\errcode{ENOMEM}] non c'è memoria sufficiente per allocare i dati.
+  \item[\errcode{ACCESS}] non c'è accesso per una componente di
+    \param{path\_p} o si è richiesta una ACL di default per un file (solo per
+    \func{acl\_get\_file}).
   \item[\errcode{EINVAL}] \param{type} non ha un valore valido (solo per
     \func{acl\_get\_file}).
   \item[\errcode{ENOTSUP}] il filesystem cui fa riferimento il file non
     supporta le ACL.
   \end{errlist}
   \item[\errcode{EINVAL}] \param{type} non ha un valore valido (solo per
     \func{acl\_get\_file}).
   \item[\errcode{ENOTSUP}] il filesystem cui fa riferimento il file non
     supporta le ACL.
   \end{errlist}
-  ed inoltre \errval{EBADF} per \func{acl\_get\_fd}, e \errval{EACCES},
-  \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOTDIR}, per
-  \func{acl\_get\_file}. }
+  ed inoltre \errval{ENOMEM} per entrambe, \errval{EBADF} per
+  \func{acl\_get\_fd}, e \errval{ENAMETOOLONG}, \errval{ENOENT},
+  \errval{ENOTDIR}, per \func{acl\_get\_file} nel loro significato generico. }
 \end{funcproto}
 
 Le due funzioni ritornano, con un oggetto di tipo \type{acl\_t}, il valore
 \end{funcproto}
 
 Le due funzioni ritornano, con un oggetto di tipo \type{acl\_t}, il valore
@@ -5939,10 +5939,10 @@ un messaggio di errore in caso contrario.
 
 Ottenuta la ACL la si converte in formato testuale (\texttt{\small 27}) con la
 funzione \func{acl\_to\_text}, controllando di nuovo se l'operazione ha
 
 Ottenuta la ACL la si converte in formato testuale (\texttt{\small 27}) con la
 funzione \func{acl\_to\_text}, controllando di nuovo se l'operazione ha
-successo (\texttt{\small 23--26}) ed uscendo in caso contrario.  Si provvede
-infine a stampare la rappresentazione testuale (\texttt{\small 28}) e dopo
-aver liberato (\texttt{\small 29--30}) le risorse allocate automaticamente, 
-si conclude l'esecuzione.
+successo (\texttt{\small 28--31}) ed uscendo in caso contrario.  Si provvede
+infine a stampare la rappresentazione testuale (\texttt{\small 32}) e dopo
+aver liberato (\texttt{\small 33--34}) le risorse allocate automaticamente, si
+conclude l'esecuzione.
 
 
 \subsection{La gestione delle quote disco}
 
 
 \subsection{La gestione delle quote disco}
@@ -7057,7 +7057,7 @@ basso livello; i loro rispettivi prototipi sono:
 \fdesc{Imposta le \textit{capabilities}.} 
 }
 
 \fdesc{Imposta le \textit{capabilities}.} 
 }
 
-{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
+{Le funzioni ritornano $0$ in caso di successo e $-1$ per un errore, nel qual
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
   \item[\errcode{EFAULT}] si è indicato un puntatore sbagliato o nullo
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
   \item[\errcode{EFAULT}] si è indicato un puntatore sbagliato o nullo
@@ -7877,7 +7877,7 @@ librerie) di cui il server potrebbe avere bisogno.
 % LocalWords:  lazy encfs sshfs setfsent getfsent getfsfile getfsspec endfsent
 % LocalWords:  setmntent getmntent addmntent endmntent hasmntopt such offsetof
 % LocalWords:  member scan attack EOVERFLOW BITS blkcnt rdev FDCWD functions
 % LocalWords:  lazy encfs sshfs setfsent getfsent getfsfile getfsspec endfsent
 % LocalWords:  setmntent getmntent addmntent endmntent hasmntopt such offsetof
 % LocalWords:  member scan attack EOVERFLOW BITS blkcnt rdev FDCWD functions
-% LocalWords:  faccessat grpid lacl AppArmor capsetp
+% LocalWords:  faccessat grpid lacl AppArmor capsetp mygetfacl
 
 %%% Local Variables: 
 %%% mode: latex
 
 %%% Local Variables: 
 %%% mode: latex