Eliminazione della macro \secref & C e delle doppie occorrenze di parole
[gapil.git] / filedir.tex
index 65ae8d6d25a9660ef36051200d2d597123addd48..d72b71e8717e7a3b69123560b0c8728dfe0c7f5a 100644 (file)
@@ -25,7 +25,7 @@ dei file 
 \section{La gestione di file e directory}
 \label{sec:file_dir}
 
-Come già accennato in \secref{sec:file_filesystem} in un sistema unix-like la
+Come già accennato in sez.~\ref{sec:file_filesystem} in un sistema unix-like la
 gestione dei file ha delle caratteristiche specifiche che derivano
 direttamente dall'architettura del sistema. 
 
@@ -49,10 +49,10 @@ chiamandolo con nomi diversi o accedendovi da directory diverse.
 Questo è possibile anche in ambiente Unix, dove tali collegamenti sono
 usualmente chiamati \textit{link}; ma data l'architettura del sistema riguardo
 la gestione dei file (ed in particolare quanto trattato in
-\secref{sec:file_arch_func}) ci sono due metodi sostanzialmente diversi per
+sez.~\ref{sec:file_arch_func}) ci sono due metodi sostanzialmente diversi per
 fare questa operazione.
 
-Come spiegato in \secref{sec:file_filesystem} l'accesso al contenuto di un
+Come spiegato in sez.~\ref{sec:file_filesystem} l'accesso al contenuto di un
 file su disco avviene passando attraverso il suo inode\index{inode}, che è la
 struttura usata dal kernel che lo identifica univocamente all'interno di un
 singolo filesystem. Il nome del file che si trova nella voce di una directory
@@ -86,7 +86,7 @@ chiamare questo tipo di associazione un collegamento diretto (o \textit{hard
     già.
   \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}).
+    sez.~\ref{sec:sys_limits}).
   \end{errlist}
   ed inoltre \errval{EACCES}, \errval{ENAMETOOLONG}, \errval{ENOTDIR},
   \errval{EFAULT}, \errval{ENOMEM}, \errval{EROFS}, \errval{ELOOP},
@@ -98,11 +98,11 @@ indicato da \param{oldpath}.  Per quanto detto la creazione di un nuovo
 collegamento diretto non copia il contenuto del file, ma si limita a creare
 una voce nella directory specificata da \param{newpath} e ad aumentare di uno
 il numero di riferimenti al file (riportato nel campo \var{st\_nlink} della
-struttura \struct{stat}, vedi \secref{sec:file_stat}) aggiungendo il nuovo
+struttura \struct{stat}, vedi sez.~\ref{sec:file_stat}) aggiungendo il nuovo
 nome ai precedenti. Si noti che uno stesso file può essere così chiamato con
 vari nomi in diverse directory.
  
-Per quanto dicevamo in \secref{sec:file_filesystem} la creazione di un
+Per quanto dicevamo in sez.~\ref{sec:file_filesystem} la creazione di un
 collegamento diretto è possibile solo se entrambi i pathname sono nello stesso
 filesystem; inoltre il filesystem deve supportare i collegamenti diretti (il
 meccanismo non è disponibile ad esempio con il filesystem \acr{vfat} di
@@ -113,7 +113,7 @@ filesystem, con l'eccezione delle directory. In alcune versioni di Unix solo
 l'amministratore è in grado di creare un collegamento diretto ad un'altra
 directory: questo viene fatto perché con una tale operazione è possibile
 creare dei \textit{loop} nel filesystem (vedi l'esempio mostrato in
-\secref{sec:file_symlink}, dove riprenderemo il discorso) che molti programmi
+sez.~\ref{sec:file_symlink}, dove riprenderemo il discorso) che molti programmi
 non sono in grado di gestire e la cui rimozione diventerebbe estremamente
 complicata (in genere per questo tipo di errori occorre far girare il
 programma \cmd{fsck} per riparare il filesystem).
@@ -147,8 +147,8 @@ suo prototipo 
 \end{prototype}
 
 \footnotetext{questo è un valore specifico ritornato da Linux che non consente
-  l'uso di \func{unlink} con le directory (vedi \secref{sec:file_remove}). Non
-  è conforme allo standard POSIX, che prescrive invece l'uso di
+  l'uso di \func{unlink} con le directory (vedi sez.~\ref{sec:file_remove}).
+  Non è conforme allo standard POSIX, che prescrive invece l'uso di
   \errcode{EPERM} in caso l'operazione non sia consentita o il processo non
   abbia privilegi sufficienti.}
 
@@ -163,15 +163,15 @@ Per cancellare una voce in una directory 
 scrittura su di essa, dato che si va a rimuovere una voce dal suo contenuto, e
 il diritto di esecuzione sulla directory che la contiene (affronteremo in
 dettaglio l'argomento dei permessi di file e directory in
-\secref{sec:file_access_control}). Se inoltre lo \textit{sticky} bit (vedi
-\secref{sec:file_sticky}) è impostato occorrerà anche essere proprietari del
+sez.~\ref{sec:file_access_control}). Se inoltre lo \textit{sticky} bit (vedi
+sez.~\ref{sec:file_sticky}) è impostato occorrerà anche essere proprietari del
 file o proprietari della directory (o root, per cui nessuna delle restrizioni
 è applicata).
 
 Una delle caratteristiche di queste funzioni è che la creazione/rimozione del
 nome dalla directory e l'incremento/decremento del numero di riferimenti
 nell'inode\index{inode} devono essere effettuati in maniera atomica (si veda
-\secref{sec:proc_atom_oper}) senza possibili interruzioni fra le due
+sez.~\ref{sec:proc_atom_oper}) senza possibili interruzioni fra le due
 operazioni. Per questo entrambe queste funzioni sono realizzate tramite una
 singola system call.
 
@@ -180,7 +180,7 @@ i riferimenti ad esso sono stati cancellati: solo quando il \textit{link
   count} mantenuto nell'inode\index{inode} diventa zero lo spazio occupato su
 disco viene rimosso (si ricordi comunque che a questo si aggiunge sempre
 un'ulteriore condizione,\footnote{come vedremo in
-  \secref{cha:file_unix_interface} il kernel mantiene anche una tabella dei
+  cap.~\ref{cha:file_unix_interface} il kernel mantiene anche una tabella dei
   file aperti nei vari processi, che a sua volta contiene i riferimenti agli
   inode ad essi relativi. Prima di procedere alla cancellazione dello spazio
   occupato su disco dal contenuto di un file il kernel controlla anche questa
@@ -192,7 +192,7 @@ Questa propriet
 temporanei su disco in caso di crash dei programmi; la tecnica è quella di
 aprire il file e chiamare \func{unlink} subito dopo, in questo modo il
 contenuto del file è sempre disponibile all'interno del processo attraverso il
-suo file descriptor (vedi \secref{sec:file_fd}) fintanto che il processo non
+suo file descriptor (vedi sez.~\ref{sec:file_fd}) fintanto che il processo non
 chiude il file, ma non ne resta traccia in nessuna directory, e lo spazio
 occupato su disco viene immediatamente rilasciato alla conclusione del
 processo (quando tutti i file vengono chiusi).
@@ -203,7 +203,7 @@ processo (quando tutti i file vengono chiusi).
 
 Al contrario di quanto avviene con altri Unix, in Linux non è possibile usare
 \func{unlink} sulle directory; per cancellare una directory si può usare la
-funzione \func{rmdir} (vedi \secref{sec:file_dir_creat_rem}), oppure la
+funzione \func{rmdir} (vedi sez.~\ref{sec:file_dir_creat_rem}), oppure la
 funzione \funcd{remove}. 
 
 Questa è la funzione prevista dallo standard ANSI C per cancellare un file o
@@ -305,7 +305,7 @@ riferimento allo stesso file.
 \subsection{I link simbolici}
 \label{sec:file_symlink}
 
-Come abbiamo visto in \secref{sec:file_link} la funzione \func{link} crea
+Come abbiamo visto in sez.~\ref{sec:file_link} la funzione \func{link} crea
 riferimenti agli inode\index{inode}, pertanto può funzionare soltanto per file
 che risiedono sullo stesso filesystem e solo per un filesystem di tipo Unix.
 Inoltre abbiamo visto che in Linux non è consentito eseguire un link diretto
@@ -321,9 +321,9 @@ file che non esistono ancora.
 
 Il sistema funziona in quanto i link simbolici sono riconosciuti come tali dal
 kernel\footnote{è uno dei diversi tipi di file visti in
-  \tabref{tab:file_file_types}, contrassegnato come tale nell'inode, e
+  tab.~\ref{tab:file_file_types}, contrassegnato come tale nell'inode, e
   riconoscibile dal valore del campo \var{st\_mode} della struttura
-  \struct{stat} (vedi \secref{sec:file_stat}).}  per cui alcune funzioni di
+  \struct{stat} (vedi sez.~\ref{sec:file_stat}).}  per cui alcune funzioni di
 libreria (come \func{open} o \func{stat}) quando ricevono come argomento un
 link simbolico vengono automaticamente applicate al file da esso specificato.
 La funzione che permette di creare un nuovo link simbolico è \funcd{symlink},
@@ -356,8 +356,8 @@ che non esiste: in questo caso si ha quello che viene chiamato un
 \textit{dangling link}, letteralmente un \textsl{link ciondolante}.
 
 Come accennato i link simbolici sono risolti automaticamente dal kernel
-all'invocazione delle varie system call; in \tabref{tab:file_symb_effect} si è
-riportato un elenco dei comportamenti delle varie funzioni di libreria che
+all'invocazione delle varie system call; in tab.~\ref{tab:file_symb_effect} si
+è riportato un elenco dei comportamenti delle varie funzioni di libreria che
 operano sui file nei confronti della risoluzione dei link simbolici,
 specificando quali seguono il link simbolico e quali invece possono operare
 direttamente sul suo contenuto.
@@ -399,10 +399,10 @@ direttamente sul suo contenuto.
 Si noti che non si è specificato il comportamento delle funzioni che operano
 con i file descriptor, in quanto la risoluzione del link simbolico viene in
 genere effettuata dalla funzione che restituisce il file descriptor
-(normalmente la \func{open}, vedi \secref{sec:file_open}) e tutte le
+(normalmente la \func{open}, vedi sez.~\ref{sec:file_open}) e tutte le
 operazioni seguenti fanno riferimento solo a quest'ultimo.
 
-Dato che, come indicato in \tabref{tab:file_symb_effect}, funzioni come la
+Dato che, come indicato in tab.~\ref{tab:file_symb_effect}, funzioni come la
 \func{open} seguono i link simbolici, occorrono funzioni apposite per accedere
 alle informazioni del link invece che a quelle del file a cui esso fa
 riferimento. Quando si vuole leggere il contenuto di un link simbolico si usa
@@ -439,15 +439,15 @@ stringa con un carattere nullo e la tronca alla dimensione specificata da
 
 Un caso comune che si può avere con i link simbolici è la creazione dei
 cosiddetti \textit{loop}. La situazione è illustrata in
-\figref{fig:file_link_loop}, che riporta la struttura della directory
+fig.~\ref{fig:file_link_loop}, che riporta la struttura della directory
 \file{/boot}. Come si vede si è creato al suo interno un link simbolico che
 punta di nuovo a \file{/boot}.\footnote{il loop mostrato in
-  \figref{fig:file_link_loop} è un usato per poter permettere a \cmd{grub} (un
-  bootloader in grado di leggere direttamente da vari filesystem il file da
-  lanciare come sistema operativo) di vedere i file contenuti nella directory
-  \file{/boot} con lo stesso pathname con cui verrebbero visti dal sistema
-  operativo, anche se essi si trovano, come accade spesso, su una partizione
-  separata (che \cmd{grub}, all'avvio, vede come radice).}
+  fig.~\ref{fig:file_link_loop} è un usato per poter permettere a \cmd{grub}
+  (un bootloader in grado di leggere direttamente da vari filesystem il file
+  da lanciare come sistema operativo) di vedere i file contenuti nella
+  directory \file{/boot} con lo stesso pathname con cui verrebbero visti dal
+  sistema operativo, anche se essi si trovano, come accade spesso, su una
+  partizione separata (che \cmd{grub}, all'avvio, vede come radice).}
 
 Questo può causare problemi per tutti quei programmi che effettuano la
 scansione di una directory senza tener conto dei link simbolici, ad esempio se
@@ -523,12 +523,12 @@ standard (\file{.} e \file{..}), con il nome indicato dall'argomento
 \param{dirname}. Il nome può essere indicato sia come pathname assoluto che
 relativo.
 
-I permessi di accesso alla directory (vedi \secref{sec:file_access_control})
+I permessi di accesso alla directory (vedi sez.~\ref{sec:file_access_control})
 sono specificati da \param{mode}, i cui possibili valori sono riportati in
-\tabref{tab:file_permission_const}; questi sono modificati dalla maschera di
-creazione dei file (si veda \secref{sec:file_umask}).  La titolarità della
+tab.~\ref{tab:file_permission_const}; questi sono modificati dalla maschera di
+creazione dei file (si veda sez.~\ref{sec:file_umask}).  La titolarità della
 nuova directory è impostata secondo quanto riportato in
-\secref{sec:file_ownership}.
+sez.~\ref{sec:file_ownership}.
 
 La funzione per la cancellazione di una directory è \funcd{rmdir}, il suo
 prototipo è:
@@ -571,11 +571,11 @@ consentir
 \label{sec:file_mknod}
 
 Finora abbiamo parlato esclusivamente di file, directory e link simbolici; in
-\secref{sec:file_file_types} abbiamo visto però che il sistema prevede pure
+sez.~\ref{sec:file_file_types} abbiamo visto però che il sistema prevede pure
 degli altri tipi di file speciali, come i file di dispositivo 
 \index{file!di dispositivo} 
 e le fifo (i socket\index{socket} sono un caso a parte, che
-vedremo in \capref{cha:socket_intro}).
+vedremo in cap.~\ref{cha:socket_intro}).
 
 La manipolazione delle caratteristiche di questi file e la loro cancellazione
 può essere effettuata con le stesse funzioni che operano sui file regolari; ma
@@ -608,9 +608,9 @@ di queste funzioni 
 La funzione permette di creare un file speciale, ma si può usare anche per
 creare file regolari e fifo; l'argomento \param{mode} specifica il tipo di
 file che si vuole creare ed i relativi permessi, secondo i valori riportati in
-\tabref{tab:file_mode_flags}, che vanno combinati con un OR binario. I
+tab.~\ref{tab:file_mode_flags}, che vanno combinati con un OR binario. I
 permessi sono comunque modificati nella maniera usuale dal valore di
-\var{umask} (si veda \secref{sec:file_umask}).
+\var{umask} (si veda sez.~\ref{sec:file_umask}).
 
 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
@@ -628,11 +628,11 @@ agli utenti normali.
 I nuovi inode\index{inode} creati con \func{mknod} apparterranno al
 proprietario e al gruppo del processo che li ha creati, a meno che non si sia
 attivato il bit \acr{sgid} per la directory o sia stata attivata la semantica
-BSD per il filesystem (si veda \secref{sec:file_ownership}) in cui si va a
+BSD per il filesystem (si veda sez.~\ref{sec:file_ownership}) in cui si va a
 creare l'inode\index{inode}.
 
 Per creare una fifo (un file speciale, su cui torneremo in dettaglio in
-\secref{sec:ipc_named_pipe}) lo standard POSIX specifica l'uso della funzione
+sez.~\ref{sec:ipc_named_pipe}) lo standard POSIX specifica l'uso della funzione
 \funcd{mkfifo}, il cui prototipo è:
 \begin{functions}
   \headdecl{sys/types.h} \headdecl{sys/stat.h} 
@@ -667,17 +667,17 @@ inserirvi direttamente delle voci con le usuali funzioni di scrittura.
 Ma se la scrittura e l'aggiornamento dei dati delle directory è compito del
 kernel, sono molte le situazioni in cui i processi necessitano di poterne
 leggere il contenuto. Benché questo possa essere fatto direttamente (vedremo
-in \secref{sec:file_open} che è possibile aprire una directory come se fosse
+in sez.~\ref{sec:file_open} che è possibile aprire una directory come se fosse
 un file, anche se solo in sola lettura) in generale il formato con cui esse
 sono scritte può dipendere dal tipo di filesystem, tanto che, come riportato
-in \tabref{tab:file_file_operations}, il VFS del kernel prevede una apposita
+in tab.~\ref{tab:file_file_operations}, il VFS del kernel prevede una apposita
 funzione per la lettura delle directory.
 
 Tutto questo si riflette nello standard POSIX\footnote{le funzioni sono
   previste pure in BSD e SVID.} che ha introdotto una apposita interfaccia per
 la lettura delle directory, basata sui cosiddetti \textit{directory stream}
 (chiamati così per l'analogia con i file stream dell'interfaccia standard di
-\capref{cha:files_std_interface}). La prima funzione di questa interfaccia è
+cap.~\ref{cha:files_std_interface}). La prima funzione di questa interfaccia è
 \funcd{opendir}, il cui prototipo è:
 \begin{functions}
   \headdecl{sys/types.h} \headdecl{dirent.h} 
@@ -720,8 +720,8 @@ La funzione\footnote{questa funzione 
 descriptor associato al \textit{directory stream} \param{dir}, essa è
 disponibile solo definendo \macro{\_BSD\_SOURCE} o \macro{\_SVID\_SOURCE}. Di
 solito si utilizza questa funzione in abbinamento alla funzione \func{fchdir}
-per cambiare la directory di lavoro (vedi \secref{sec:file_work_dir}) a quella
-relativa allo stream che si sta esaminando.
+per cambiare la directory di lavoro (vedi sez.~\ref{sec:file_work_dir}) a
+quella relativa allo stream che si sta esaminando.
 
 La lettura di una voce della directory viene effettuata attraverso la funzione
 \funcd{readdir}; il suo prototipo è:
@@ -745,7 +745,7 @@ cui definizione\footnote{la definizione 
   nel file \file{/usr/include/bits/dirent.h}, essa non contempla la presenza
   del campo \var{d\_namlen} che indica la lunghezza del nome del file (ed
   infatti la macro \macro{\_DIRENT\_HAVE\_D\_NAMLEN} non è definita).}  è
-riportata in \figref{fig:file_dirent_struct}). La funzione restituisce il
+riportata in fig.~\ref{fig:file_dirent_struct}). La funzione restituisce il
 puntatore alla struttura; si tenga presente però che quest'ultima è allocata
 staticamente, per cui viene sovrascritta tutte le volte che si ripete la
 lettura di una voce sullo stesso stream.
@@ -828,7 +828,7 @@ indica il tipo di file (fifo, directory, link simbolico, ecc.); i suoi
 possibili valori\footnote{fino alla versione 2.1 delle \acr{glibc} questo
   campo, pur presente nella struttura, non è implementato, e resta sempre al
   valore \const{DT\_UNKNOWN}.}  sono riportati in
-\tabref{tab:file_dtype_macro}; per la conversione da e verso l'analogo valore
+tab.~\ref{tab:file_dtype_macro}; per la conversione da e verso l'analogo valore
 mantenuto dentro il campo \var{st\_mode} di \struct{stat} sono definite anche
 due macro di conversione \macro{IFTODT} e \macro{DTTOIF}:
 \begin{functions}
@@ -949,10 +949,10 @@ del numero di versione (cio
 dopo \func{file4}.)
 
 Un semplice esempio dell'uso di queste funzioni è riportato in
-\figref{fig:file_my_ls}, dove si è riportata la sezione principale di un
+fig.~\ref{fig:file_my_ls}, dove si è riportata la sezione principale di un
 programma che, usando la routine di scansione illustrata in
-\figref{fig:file_dirscan}, stampa i nomi dei file contenuti in una directory e
-la relativa dimensione (in sostanza una versione semplificata del comando
+fig.~\ref{fig:file_dirscan}, stampa i nomi dei file contenuti in una directory
+la relativa dimensione (in sostanza una versione semplificata del comando
 \cmd{ls}).
 
 \begin{figure}[!htb]
@@ -965,7 +965,7 @@ la relativa dimensione (in sostanza una versione semplificata del comando
   \label{fig:file_my_ls}
 \end{figure}
 
-Il programma è estremamente semplice; in \figref{fig:file_my_ls} si è omessa
+Il programma è estremamente semplice; in fig.~\ref{fig:file_my_ls} si è omessa
 la parte di gestione delle opzioni (che prevede solo l'uso di una funzione per
 la stampa della sintassi, anch'essa omessa) ma il codice completo potrà essere
 trovato coi sorgenti allegati nel file \file{myls.c}.
@@ -998,23 +998,23 @@ valore di ritorno per indicare una esecuzione senza errori.
 \end{figure}
 
 Tutto il grosso del lavoro è svolto dalla funzione \func{DirScan}, riportata
-in \figref{fig:file_dirscan}. La funzione è volutamente generica e permette di
-eseguire una funzione, passata come secondo argomento, su tutte le voci di una
-directory.  La funzione inizia con l'aprire (\texttt{\small 19--23}) uno
+in fig.~\ref{fig:file_dirscan}. La funzione è volutamente generica e permette
+di eseguire una funzione, passata come secondo argomento, su tutte le voci di
+una directory.  La funzione inizia con l'aprire (\texttt{\small 19--23}) uno
 stream sulla directory passata come primo argomento, stampando un messaggio in
 caso di errore.
 
 Il passo successivo (\texttt{\small 24--25}) è cambiare directory di lavoro
-(vedi \secref{sec:file_work_dir}), usando in sequenza le funzione \func{dirfd}
-e \func{fchdir} (in realtà si sarebbe potuto usare direttamente \func{chdir}
-su \var{dirname}), in modo che durante il successivo ciclo (\texttt{\small
-  27--31}) sulle singole voci dello stream ci si trovi all'interno della
-directory.\footnote{questo è essenziale al funzionamento della funzione
-  \code{do\_ls} (e ad ogni funzione che debba usare il campo \var{d\_name}, in
-  quanto i nomi dei file memorizzati all'interno di una struttura
-  \struct{dirent} sono sempre relativi alla directory in questione, e senza
-  questo posizionamento non si sarebbe potuto usare \func{stat} per ottenere
-  le dimensioni.}
+(vedi sez.~\ref{sec:file_work_dir}), usando in sequenza le funzione
+\func{dirfd} e \func{fchdir} (in realtà si sarebbe potuto usare direttamente
+\func{chdir} su \var{dirname}), in modo che durante il successivo ciclo
+(\texttt{\small 27--31}) sulle singole voci dello stream ci si trovi
+all'interno della directory.\footnote{questo è essenziale al funzionamento
+  della funzione \code{do\_ls} (e ad ogni funzione che debba usare il campo
+  \var{d\_name}, in quanto i nomi dei file memorizzati all'interno di una
+  struttura \struct{dirent} sono sempre relativi alla directory in questione,
+  e senza questo posizionamento non si sarebbe potuto usare \func{stat} per
+  ottenere le dimensioni.}
 
 Avendo usato lo stratagemma di fare eseguire tutte le manipolazioni necessarie
 alla funzione passata come secondo argomento, il ciclo di scansione della
@@ -1050,7 +1050,7 @@ Quando un utente effettua il login, questa directory viene impostata alla
 consente di cambiarla a piacere, spostandosi da una directory ad un'altra, il
 comando \cmd{pwd} la stampa sul terminale.  Siccome la directory corrente
 resta la stessa quando viene creato un processo figlio (vedi
-\secref{sec:proc_fork}), la directory corrente della shell diventa anche la
+sez.~\ref{sec:proc_fork}), la directory corrente della shell diventa anche la
 directory corrente di qualunque comando da essa lanciato.
 
 In genere il kernel tiene traccia per ciascun processo dell'inode\index{inode}
@@ -1087,14 +1087,14 @@ per una dimensione pari a \param{size} qualora questa sia diversa da zero, o
 della lunghezza esatta del pathname altrimenti. In questo caso ci si deve
 ricordare di disallocare la stringa una 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
+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 \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
-funzione è deprecata.
+sez.~\ref{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 funzione è deprecata.
 
 Una seconda funzione simile è \code{char *get\_current\_dir\_name(void)} che è
 sostanzialmente equivalente ad una \code{getcwd(NULL, 0)}, con la sola
@@ -1151,7 +1151,7 @@ prima vista. Infatti anche se sembrerebbe banale generare un nome a caso e
 creare il file dopo aver controllato che questo non esista, nel momento fra il
 controllo e la creazione si ha giusto lo spazio per una possibile \textit{race
   condition}\index{race condition} (si ricordi quanto visto in
-\secref{sec:proc_race_cond}).
+sez.~\ref{sec:proc_race_cond}).
 
 Le \acr{glibc} provvedono varie funzioni per generare nomi di file temporanei,
 di cui si abbia certezza di unicità (al momento della generazione); la prima
@@ -1194,7 +1194,7 @@ la prima valida delle seguenti:
 \begin{itemize*}
 \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}).
+  sez.~\ref{sec:file_suid_sgid}).
 \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}.
@@ -1225,7 +1225,7 @@ POSIX definisce la funzione \funcd{tempfile}, il cui prototipo 
     \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
+\code{r+b}, si veda sez.~\ref{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 \const{P\_tmpdir} e poi con \file{/tmp}. Questa
@@ -1277,12 +1277,12 @@ prototipo 
 \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 \const{O\_EXCL} (si veda
-\secref{sec:file_open}), in questo modo al ritorno della funzione si ha la
+sez.~\ref{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
   versioni precedenti delle \acr{glibc} e le vecchie \acr{libc5} e \acr{libc4}
   usavano il valore \code{0666} che permetteva a chiunque di leggere i
-  contenuti del file.} (si veda \secref{sec:file_perm_overview}).
+  contenuti del file.} (si veda sez.~\ref{sec:file_perm_overview}).
 
 In OpenBSD è stata introdotta un'altra funzione\footnote{introdotta anche in
   Linux a partire dalle \acr{glibc} 2.1.91.} simile alle precedenti,
@@ -1300,7 +1300,7 @@ In OpenBSD 
     più gli altri eventuali codici di errore di \func{mkdir}.}
 \end{prototype}
 \noindent la directory è creata con permessi \code{0700} (al solito si veda
-\capref{cha:file_unix_interface} per i dettagli); dato che la creazione della
+cap.~\ref{cha:file_unix_interface} per i dettagli); dato che la creazione della
 directory è sempre esclusiva i precedenti problemi di \textit{race
   condition}\index{race condition} non si pongono.
 
@@ -1308,7 +1308,7 @@ directory 
 \section{La manipolazione delle caratteristiche dei files}
 \label{sec:file_infos}
 
-Come spiegato in \secref{sec:file_filesystem} tutte le informazioni generali
+Come spiegato in sez.~\ref{sec:file_filesystem} tutte le informazioni generali
 relative alle caratteristiche di ciascun file, a partire dalle informazioni
 relative al controllo di accesso, sono mantenute nell'inode\index{inode}.
 
@@ -1317,7 +1317,7 @@ usando la funzione \func{stat}, che permette l'accesso a tutti i dati
 memorizzati nell'inode\index{inode}; esamineremo poi le varie funzioni usate
 per manipolare tutte queste informazioni (eccetto quelle che riguardano la
 gestione del controllo di accesso, trattate in in
-\secref{sec:file_access_control}).
+sez.~\ref{sec:file_access_control}).
 
 
 \subsection{Le funzioni \func{stat}, \func{fstat} e \func{lstat}}
@@ -1355,7 +1355,7 @@ su un file, su un link simbolico e su un file descriptor.
 
 La struttura \struct{stat} usata da queste funzioni è definita nell'header
 \file{sys/stat.h} e in generale dipende dall'implementazione; la versione
-usata da Linux è mostrata in \figref{fig:file_stat_struct}, così come
+usata da Linux è mostrata in fig.~\ref{fig:file_stat_struct}, così come
 riportata dalla pagina di manuale di \func{stat} (in realtà la definizione
 effettivamente usata nel kernel dipende dall'architettura e ha altri campi
 riservati per estensioni come tempi più precisi, o per il padding dei campi).
@@ -1374,13 +1374,13 @@ riservati per estensioni come tempi pi
 
 Si noti come i vari membri della struttura siano specificati come tipi
 primitivi del sistema (di quelli definiti in
-\tabref{tab:intro_primitive_types}, e dichiarati in \file{sys/types.h}).
+tab.~\ref{tab:intro_primitive_types}, e dichiarati in \file{sys/types.h}).
 
 
 \subsection{I tipi di file}
 \label{sec:file_types}
 
-Come riportato in \tabref{tab:file_file_types} in Linux oltre ai file e alle
+Come riportato in tab.~\ref{tab:file_file_types} in Linux oltre ai file e alle
 directory esistono altri oggetti che possono stare su un filesystem.  Il tipo
 di file è ritornato dalla \func{stat} come maschera binaria nel campo
 \var{st\_mode} (che contiene anche le informazioni relative ai permessi).
@@ -1390,7 +1390,7 @@ standard POSIX definisce un insieme di macro per verificare il tipo di file,
 queste vengono usate anche da Linux che supporta pure le estensioni allo
 standard per i link simbolici e i socket\index{socket} definite da BSD;
 l'elenco completo delle macro con cui è possibile estrarre l'informazione da
-\var{st\_mode} è riportato in \tabref{tab:file_type_macro}.
+\var{st\_mode} è riportato in tab.~\ref{tab:file_type_macro}.
 \begin{table}[htb]
   \centering
   \footnotesize
@@ -1412,13 +1412,13 @@ l'elenco completo delle macro con cui 
   \label{tab:file_type_macro}
 \end{table}
 
-Oltre alle macro di \tabref{tab:file_type_macro} è possibile usare
+Oltre alle macro di tab.~\ref{tab:file_type_macro} è possibile usare
 direttamente il valore di \var{st\_mode} per ricavare il tipo di file
 controllando direttamente i vari bit in esso memorizzati. Per questo sempre in
 \file{sys/stat.h} sono definite le costanti numeriche riportate in
-\tabref{tab:file_mode_flags}.
+tab.~\ref{tab:file_mode_flags}.
 
-Il primo valore dell'elenco di \tabref{tab:file_mode_flags} è la maschera
+Il primo valore dell'elenco di tab.~\ref{tab:file_mode_flags} è la maschera
 binaria che permette di estrarre i bit nei quali viene memorizzato il tipo di
 file, i valori successivi sono le costanti corrispondenti ai singoli bit, e
 possono essere usati per effettuare la selezione sul tipo di file voluto, con
@@ -1491,7 +1491,7 @@ Si tenga conto che la lunghezza del file riportata in \var{st\_size} non 
 detto che corrisponda all'occupazione dello spazio su disco per via della
 possibile esistenza dei cosiddetti \textit{holes} (letteralmente
 \textsl{buchi}) che si formano tutte le volte che si va a scrivere su un file
-dopo aver eseguito una \func{lseek} (vedi \secref{sec:file_lseek}) oltre la
+dopo aver eseguito una \func{lseek} (vedi sez.~\ref{sec:file_lseek}) oltre la
 sua fine.
 
 In questo caso si avranno risultati differenti a seconda del modo in cui si
@@ -1550,10 +1550,10 @@ zeri (e in genere si ha la creazione di un \textit{hole} nel file).
 Il sistema mantiene per ciascun file tre tempi. Questi sono registrati
 nell'inode\index{inode} insieme agli altri attributi del file e possono essere
 letti tramite la funzione \func{stat}, che li restituisce attraverso tre campi
-della struttura \struct{stat} di \figref{fig:file_stat_struct}. Il significato
-di detti tempi e dei relativi campi è riportato nello schema in
-\tabref{tab:file_file_times}, dove è anche riportato un esempio delle funzioni
-che effettuano cambiamenti su di essi.
+della struttura \struct{stat} di fig.~\ref{fig:file_stat_struct}. Il
+significato di detti tempi e dei relativi campi è riportato nello schema in
+tab.~\ref{tab:file_file_times}, dove è anche riportato un esempio delle
+funzioni che effettuano cambiamenti su di essi.
 
 \begin{table}[htb]
   \centering
@@ -1596,7 +1596,7 @@ quali file necessitano di essere ricompilati o (talvolta insieme anche al
 tempo di cambiamento di stato) per decidere quali file devono essere
 archiviati per il backup. Il comando \cmd{ls} (quando usato con le opzioni
 \cmd{-l} o \cmd{-t}) mostra i tempi dei file secondo lo schema riportato
-nell'ultima colonna di \tabref{tab:file_file_times}.
+nell'ultima colonna di tab.~\ref{tab:file_file_times}.
 
 \begin{table}[htb]
   \centering
@@ -1672,7 +1672,7 @@ nell'ultima colonna di \tabref{tab:file_file_times}.
 \end{table}
 
 L'effetto delle varie funzioni di manipolazione dei file sui tempi è
-illustrato in \tabref{tab:file_times_effects}. Si sono riportati gli effetti
+illustrato in tab.~\ref{tab:file_times_effects}. Si sono riportati gli effetti
 sia per il file a cui si fa riferimento, sia per la directory che lo contiene;
 questi ultimi possono essere capiti se si tiene conto di quanto già detto, e
 cioè che anche le directory sono file (che contengono una lista di nomi) che
@@ -1714,7 +1714,7 @@ di \param{times}. Se questa 
 
 La funzione prende come argomento \param{times} una struttura
 \struct{utimebuf}, la cui definizione è riportata in
-\figref{fig:struct_utimebuf}, con la quale si possono specificare i nuovi
+fig.~\ref{fig:struct_utimebuf}, con la quale si possono specificare i nuovi
 valori che si vogliono impostare per tempi.
 
 \begin{figure}[!htb]
@@ -1766,7 +1766,7 @@ cosiddetto \textit{owner}) ed un gruppo di appartenenza, secondo il meccanismo
 degli identificatori di utente e gruppo (\acr{uid} e \acr{gid}). Questi valori
 sono accessibili da programma tramite la funzione \func{stat}, e sono
 mantenuti nei campi \var{st\_uid} e \var{st\_gid} della struttura
-\struct{stat} (si veda \secref{sec:file_stat}).\footnote{Questo è vero solo
+\struct{stat} (si veda sez.~\ref{sec:file_stat}).\footnote{Questo è vero solo
   per filesystem di tipo Unix, ad esempio non è vero per il filesystem vfat di
   Windows, che non fornisce nessun supporto per l'accesso multiutente, e per
   il quale i permessi vengono assegnati in maniera fissa con un opzione in
@@ -1813,13 +1813,13 @@ rispettivamente al proprietario, al gruppo, a tutti gli altri.
 I restanti tre bit (noti come \acr{suid}, \acr{sgid}, e \textsl{sticky}) sono
 usati per indicare alcune caratteristiche più complesse del meccanismo del
 controllo di accesso su cui torneremo in seguito (in
-\secref{sec:file_suid_sgid} e \secref{sec:file_sticky}); lo schema di
-allocazione dei bit è riportato in \figref{fig:file_perm_bit}.
+sez.~\ref{sec:file_suid_sgid} e sez.~\ref{sec:file_sticky}); lo schema di
+allocazione dei bit è riportato in fig.~\ref{fig:file_perm_bit}.
 
 Anche i permessi, come tutte le altre informazioni pertinenti al file, sono
 memorizzati nell'inode\index{inode}; in particolare essi sono contenuti in
 alcuni bit del campo \var{st\_mode} della struttura \struct{stat} (si veda di
-nuovo \figref{fig:file_stat_struct}).
+nuovo fig.~\ref{fig:file_stat_struct}).
 
 In genere ci si riferisce ai tre livelli dei privilegi usando le lettere
 \cmd{u} (per \textit{user}), \cmd{g} (per \textit{group}) e \cmd{o} (per
@@ -1829,7 +1829,7 @@ distinzione dato che in certi casi, mutuando la terminologia in uso nel VMS,
 si parla dei permessi base come di permessi per \textit{owner}, \textit{group}
 ed \textit{all}, le cui iniziali possono dar luogo a confusione.  Le costanti
 che permettono di accedere al valore numerico di questi bit nel campo
-\var{st\_mode} sono riportate in \tabref{tab:file_bit_perm}.
+\var{st\_mode} sono riportate in tab.~\ref{tab:file_bit_perm}.
 
 \begin{table}[htb]
   \centering
@@ -1878,7 +1878,7 @@ permessi opportuni per il medesimo) ma non si potr
 directory).
 
 Avere il permesso di lettura per un file consente di aprirlo con le opzioni
-(si veda quanto riportato in \tabref{tab:file_open_flags}) di sola lettura o
+(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
 consente di aprire un file in sola scrittura o lettura/scrittura e modificarne
 il contenuto, lo stesso permesso è necessario per poter troncare il file.
@@ -1902,7 +1902,7 @@ simbolico tutti i permessi come concessi; utente e gruppo a cui esso
 appartiene vengono pure ignorati quando il link viene risolto, vengono
 controllati solo quando viene richiesta la rimozione del link e quest'ultimo è
 in una directory con lo \textsl{sticky bit} impostato (si veda
-\secref{sec:file_sticky}).
+sez.~\ref{sec:file_sticky}).
 
 La procedura con cui il kernel stabilisce se un processo possiede un certo
 permesso (di lettura, scrittura o esecuzione) si basa sul confronto fra
@@ -1911,13 +1911,13 @@ l'utente e il gruppo a cui il file appartiene (i valori di \var{st\_uid} e
 effettivo e gli eventuali group-ID supplementari del processo.\footnote{in
   realtà Linux, per quanto riguarda l'accesso ai file, utilizza gli gli
   identificatori del gruppo \textit{filesystem} (si ricordi quanto esposto in
-  \secref{sec:proc_perms}), ma essendo questi del tutto equivalenti ai primi,
+  sez.~\ref{sec:proc_perms}), ma essendo questi del tutto equivalenti ai primi,
   eccetto il caso in cui si voglia scrivere un server NFS, ignoreremo questa
   differenza.}
 
 Per una spiegazione dettagliata degli identificatori associati ai processi si
-veda \secref{sec:proc_perms}; normalmente, a parte quanto vedremo in
-\secref{sec:file_suid_sgid}, l'user-ID effettivo e il group-ID effettivo
+veda sez.~\ref{sec:proc_perms}; normalmente, a parte quanto vedremo in
+sez.~\ref{sec:file_suid_sgid}, l'user-ID effettivo e il group-ID effettivo
 corrispondono ai valori dell'\acr{uid} e del \acr{gid} dell'utente che ha
 lanciato il processo, mentre i group-ID supplementari sono quelli dei gruppi
 cui l'utente appartiene.
@@ -1961,7 +1961,7 @@ tutti gli altri non vengono controllati.
 \subsection{I bit \acr{suid} e \acr{sgid}}
 \label{sec:file_suid_sgid}
 
-Come si è accennato (in \secref{sec:file_perm_overview}) nei dodici bit del
+Come si è accennato (in sez.~\ref{sec:file_perm_overview}) nei dodici bit del
 campo \var{st\_mode} di \struct{stat} che vengono usati per il controllo di
 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
@@ -1969,7 +1969,7 @@ 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
 \const{S\_ISUID} e \const{S\_ISGID}.
 
-Come spiegato in dettaglio in \secref{sec:proc_exec}, quando si lancia un
+Come spiegato in dettaglio in sez.~\ref{sec:proc_exec}, quando si lancia un
 programma il comportamento normale del kernel è quello di impostare gli
 identificatori del gruppo \textit{effective} del nuovo processo al valore dei
 corrispondenti del gruppo \textit{real} del processo corrente, che normalmente
@@ -1996,7 +1996,7 @@ Chiaramente avere un processo che ha privilegi superiori a quelli che avrebbe
 normalmente l'utente che lo ha lanciato comporta vari rischi, e questo tipo di
 programmi devono essere scritti accuratamente per evitare che possano essere
 usati per guadagnare privilegi non consentiti (l'argomento è affrontato in
-dettaglio in \secref{sec:proc_perms}).
+dettaglio in sez.~\ref{sec:proc_perms}).
 
 La presenza dei bit \acr{suid} e \acr{sgid} su un file può essere rilevata con
 il comando \cmd{ls -l}, che visualizza una lettera \cmd{s} al posto della
@@ -2004,19 +2004,19 @@ il comando \cmd{ls -l}, che visualizza una lettera \cmd{s} al posto della
 \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 \const{S\_ISUID} e \const{S\_IGID}, i cui valori sono
-riportati in \tabref{tab:file_mode_flags}.
+riportati in tab.~\ref{tab:file_mode_flags}.
 
 Gli stessi bit vengono ad assumere in significato completamente diverso per le
 directory, normalmente infatti Linux usa la convenzione di SVr4 per indicare
 con questi bit l'uso della semantica BSD nella creazione di nuovi file (si
-veda \secref{sec:file_ownership} per una spiegazione dettagliata al
+veda sez.~\ref{sec:file_ownership} per una spiegazione dettagliata al
 proposito).
 
 Infine Linux utilizza il bit \acr{sgid} per una ulteriore estensione mutuata
 da SVr4. Il caso in cui un file ha il bit \acr{sgid} impostato senza che lo
 sia anche il corrispondente bit di esecuzione viene utilizzato per attivare
 per quel file il \textit{mandatory locking} (affronteremo questo argomento in
-dettaglio più avanti, in \secref{sec:file_mand_locking}).
+dettaglio più avanti, in sez.~\ref{sec:file_mand_locking}).
 
 
 \subsection{Il bit \textsl{sticky}}
@@ -2029,7 +2029,7 @@ ottenere la massima velocit
 si poteva impostare questo bit.
 
 L'effetto di questo bit era che il segmento di testo del programma (si veda
-\secref{sec:proc_mem_layout} per i dettagli) veniva scritto nella swap la
+sez.~\ref{sec:proc_mem_layout} per i dettagli) veniva scritto nella swap la
 prima volta che questo veniva lanciato, e vi permaneva fino al riavvio della
 macchina (da questo il nome di \textsl{sticky bit}); essendo la swap un file
 continuo indicizzato direttamente in questo modo si poteva risparmiare in
@@ -2072,12 +2072,12 @@ consapevolmente, cancellare i file temporanei creati degli altri utenti.
 \subsection{La titolarità di nuovi file e directory}
 \label{sec:file_ownership}
 
-Vedremo in \secref{sec:file_base_func} con quali funzioni si possono creare
+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
 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
-\secref{sec:file_dir_creat_rem}).
+sez.~\ref{sec:file_dir_creat_rem}).
 
 Lo standard POSIX prescrive che l'\acr{uid} del nuovo file corrisponda
 all'user-ID effettivo del processo che lo crea; per il \acr{gid} invece prevede
@@ -2108,13 +2108,13 @@ con il \acr{gid} del gruppo primario dello stesso.
 \subsection{La funzione \func{access}}
 \label{sec:file_access}
 
-Come visto in \secref{sec:file_access_control} il controllo di accesso ad un
-file viene fatto utilizzando l'user-ID ed il group-ID effettivo del processo; ci
-sono casi però in cui si può voler effettuare il controllo con l'user-ID reale
-ed il group-ID reale, vale a dire usando i valori di \acr{uid} e \acr{gid}
-relativi all'utente che ha lanciato il programma, e che, come accennato in
-\secref{sec:file_suid_sgid} e spiegato in dettaglio in
-\secref{sec:proc_perms}, non è detto siano uguali a quelli effettivi.  
+Come visto in sez.~\ref{sec:file_access_control} il controllo di accesso ad un
+file viene fatto utilizzando l'user-ID ed il group-ID effettivo del processo;
+ci sono casi però in cui si può voler effettuare il controllo con l'user-ID
+reale ed il group-ID reale, vale a dire usando i valori di \acr{uid} e
+\acr{gid} relativi all'utente che ha lanciato il programma, e che, come
+accennato in sez.~\ref{sec:file_suid_sgid} e spiegato in dettaglio in
+sez.~\ref{sec:proc_perms}, non è detto siano uguali a quelli effettivi.
 
 Per far questo si può usare la funzione \funcd{access}, il cui prototipo è:
 \begin{prototype}{unistd.h}
@@ -2139,12 +2139,12 @@ Verifica i permessi di accesso.
 La funzione verifica i permessi di accesso, indicati da \param{mode}, per il
 file indicato da \param{pathname}. 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 \const{F\_OK}, o
-anche direttamente \func{stat}. Nel caso in cui \param{pathname} si riferisca
-ad un link simbolico, questo viene seguito ed il controllo è fatto sul file a
-cui esso fa riferimento.
+riportate in tab.~\ref{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 \const{F\_OK},
+o anche direttamente \func{stat}. Nel caso in cui \param{pathname} si
+riferisca ad un link simbolico, questo viene seguito ed il controllo è fatto
+sul file a cui esso fa riferimento.
 
 La funzione controlla solo i bit dei permessi di accesso, si ricordi che il
 fatto che una directory abbia permesso di scrittura non significa che ci si
@@ -2207,7 +2207,7 @@ filename e su un file descriptor, i loro prototipi sono:
 
 Entrambe le funzioni utilizzano come secondo argomento \param{mode}, una
 variabile dell'apposito tipo primitivo \type{mode\_t} (vedi
-\tabref{tab:intro_primitive_types}) utilizzato per specificare i permessi sui
+tab.~\ref{tab:intro_primitive_types}) utilizzato per specificare i permessi sui
 file.
 
 \begin{table}[!htb]
@@ -2244,12 +2244,13 @@ file.
 \end{table}
 
 Le costanti con cui specificare i singoli bit di \param{mode} sono riportate
-in \tabref{tab:file_permission_const}. Il valore di \param{mode} può essere
+in tab.~\ref{tab:file_permission_const}. Il valore di \param{mode} può essere
 ottenuto combinando fra loro con un OR binario le costanti simboliche relative
 ai vari bit, o specificato direttamente, come per l'omonimo comando di shell,
 con un valore numerico (la shell lo vuole in ottale, dato che i bit dei
 permessi sono divisibili in gruppi di tre), che si può calcolare direttamente
-usando lo schema si utilizzo dei bit illustrato in \figref{fig:file_perm_bit}.
+usando lo schema si utilizzo dei bit illustrato in
+fig.~\ref{fig:file_perm_bit}.
 
 Ad esempio i permessi standard assegnati ai nuovi file (lettura e scrittura
 per il proprietario, sola lettura per il gruppo e gli altri) sono
@@ -2272,7 +2273,7 @@ in particolare accade che:
   l'user-ID effettivo del processo non è zero esso viene automaticamente
   cancellato (senza notifica di errore) qualora sia stato indicato in
   \param{mode}.
-\item per quanto detto in \secref{sec:file_ownership} riguardo la creazione
+\item per quanto detto in sez.~\ref{sec:file_ownership} riguardo la creazione
   dei nuovi file, si può avere il caso in cui il file creato da un processo è
   assegnato a un gruppo per il quale il processo non ha privilegi. Per evitare
   che si possa assegnare il bit \acr{sgid} ad un file appartenente a un gruppo
@@ -2297,7 +2298,7 @@ perdita di questo privilegio.
 Le funzioni \func{chmod} e \func{fchmod} ci permettono di modificare i
 permessi di un file, resta però il problema di quali sono i permessi assegnati
 quando il file viene creato. Le funzioni dell'interfaccia nativa di Unix, come
-vedremo in \secref{sec:file_open}, permettono di indicare esplicitamente i
+vedremo in sez.~\ref{sec:file_open}, permettono di indicare esplicitamente i
 permessi di creazione di un file, ma questo non è possibile per le funzioni
 dell'interfaccia standard ANSI C che non prevede l'esistenza di utenti e
 gruppi, ed inoltre il problema si pone anche per l'interfaccia nativa quando i
@@ -2306,10 +2307,10 @@ permessi non vengono indicati esplicitamente.
 In tutti questi casi l'unico riferimento possibile è quello della modalità di
 apertura del nuovo file (lettura/scrittura o sola lettura), che però può
 fornire un valore che è lo stesso per tutti e tre i permessi di
-\secref{sec:file_perm_overview} (cioè $666$ nel primo caso e $222$ nel
+sez.~\ref{sec:file_perm_overview} (cioè $666$ nel primo caso e $222$ nel
 secondo). Per questo motivo il sistema associa ad ogni processo\footnote{è
   infatti contenuta nel campo \var{umask} della struttura \struct{fs\_struct},
-  vedi \figref{fig:proc_task_struct}.}  una maschera di bit, la cosiddetta
+  vedi fig.~\ref{fig:proc_task_struct}.}  una maschera di bit, la cosiddetta
 \textit{umask}, che viene utilizzata per impedire che alcuni permessi possano
 essere assegnati ai nuovi file in sede di creazione. I bit indicati nella
 maschera vengono infatti cancellati dai permessi quando un nuovo file viene
@@ -2391,8 +2392,8 @@ che per il file 
 %La struttura fondamentale che contiene i dati essenziali relativi ai file è il
 %cosiddetto \textit{inode}; questo conterrà informazioni come il
 %tipo di file (file di dispositivo, directory, file di dati, per un elenco
-%completo vedi \ntab), i permessi (vedi \secref{sec:file_perms}), le date (vedi
-%\secref{sec:file_times}).
+%completo vedi \ntab), i permessi (vedi sez.~\ref{sec:file_perms}), le date (vedi
+%sez.~\ref{sec:file_times}).
 
 
 \subsection{Un quadro d'insieme sui permessi}
@@ -2403,11 +2404,11 @@ il significato dei singoli bit dei permessi sui file, vale la pena fare un
 riepilogo in cui si riassumono le caratteristiche di ciascuno di essi, in modo
 da poter fornire un quadro d'insieme.
 
-In \tabref{tab:file_fileperm_bits} si sono riassunti gli effetti dei vari bit
-per un file; per quanto riguarda l'applicazione dei permessi per proprietario,
-gruppo ed altri si ricordi quanto illustrato in
-\secref{sec:file_perm_overview}. Si rammenti che il valore dei permessi non ha
-alcun effetto qualora il processo possieda i privilegi di amministratore.
+In tab.~\ref{tab:file_fileperm_bits} si sono riassunti gli effetti dei vari
+bit per un file; per quanto riguarda l'applicazione dei permessi per
+proprietario, gruppo ed altri si ricordi quanto illustrato in
+sez.~\ref{sec:file_perm_overview}. Si rammenti che il valore dei permessi non
+ha alcun effetto qualora il processo possieda i privilegi di amministratore.
 
 \begin{table}[!htb]
   \centering
@@ -2445,12 +2446,12 @@ alcun effetto qualora il processo possieda i privilegi di amministratore.
 
 Per compattezza, nella tabella si sono specificati i bit di \acr{suid},
 \acr{sgid} e \acr{sticky} con la notazione illustrata anche in
-\figref{fig:file_perm_bit}. 
+fig.~\ref{fig:file_perm_bit}. 
 
-In \tabref{tab:file_dirperm_bits} si sono invece riassunti gli effetti dei
+In tab.~\ref{tab:file_dirperm_bits} si sono invece riassunti gli effetti dei
 vari bit dei permessi per una directory; anche in questo caso si sono
 specificati i bit di \acr{suid}, \acr{sgid} e \acr{sticky} con la notazione
-compatta illustrata in \figref{fig:file_perm_bit}.
+compatta illustrata in fig.~\ref{fig:file_perm_bit}.
 
 \begin{table}[!htb]
   \centering
@@ -2499,12 +2500,12 @@ Bench
 programma ad una sezione limitata del filesystem, per cui ne parleremo in
 questa sezione.
 
-Come accennato in \secref{sec:proc_fork} ogni processo oltre ad una directory
+Come accennato in sez.~\ref{sec:proc_fork} ogni processo oltre ad una directory
 di lavoro, ha anche una directory \textsl{radice}\footnote{entrambe sono
   contenute in due campi (rispettivamente \var{pwd} e \var{root}) di
-  \struct{fs\_struct}; vedi \figref{fig:proc_task_struct}.} che, pur essendo
+  \struct{fs\_struct}; vedi fig.~\ref{fig:proc_task_struct}.} che, pur essendo
 di norma corrispondente alla radice dell'albero di file e directory come visto
-dal kernel (ed illustrato in \secref{sec:file_organization}), ha per il
+dal kernel (ed illustrato in sez.~\ref{sec:file_organization}), ha per il
 processo il significato specifico di directory rispetto alla quale vengono
 risolti i pathname assoluti.\footnote{cioè quando un processo chiede la
   risoluzione di un pathname, il kernel usa sempre questa directory come punto
@@ -2545,7 +2546,7 @@ accedere a file al di fuori della sezione di albero in cui 
 \textsl{imprigionato}.
 
 Solo un processo con i privilegi di amministratore può usare questa funzione,
-e la nuova radice, per quanto detto in \secref{sec:proc_fork}, sarà ereditata
+e la nuova radice, per quanto detto in sez.~\ref{sec:proc_fork}, sarà ereditata
 da tutti i suoi processi figli. Si tenga presente però che la funzione non
 cambia la directory di lavoro, che potrebbe restare fuori dalla \textit{chroot
   jail}.