From 618bcb85e9e50d96cb4c97b7d61ab2bf4ac89c11 Mon Sep 17 00:00:00 2001
From: Simone Piccardi <piccardi@gnulinux.it>
Date: Mon, 9 Jul 2001 20:23:55 +0000
Subject: [PATCH] Iniziato a sistemare il secondo capitolo sui file

---
 filedir.tex | 43 ++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 38 insertions(+), 5 deletions(-)

diff --git a/filedir.tex b/filedir.tex
index 361e05a..1183d06 100644
--- a/filedir.tex
+++ b/filedir.tex
@@ -475,10 +475,10 @@ i seguenti:
   
   \funcdecl{int lstat(const char *file\_name, struct stat *buf)} Identica a
   \func{stat} eccetto che se il \var{file\_name} è un link simbolico vengono
-  lette le informazioni relativa ad esso e non al file a cui punta.
+  lette le informazioni relativa ad esso e non al file a cui fa riferimento.
   
   \funcdecl{int fstat(int filedes, struct stat *buf)} Identica a \func{stat}
-  eccetto che funziona con un file aperto, specificato tramite il suo file
+  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
@@ -567,8 +567,9 @@ simbolici e socket definite da BDS, l'elenco 
 \end{table}
 
 Oltre a queste macro è possibile usare direttamente il valore di
-\var{st\_mode} per ricavare il significato dei vari bit del campo attraverso
-l'uso dei flag riportati in \ntab:
+\var{st\_mode} per ricavare il significato dei vari bit in esso memorizzati,
+per questo sempre in \texttt{sys/stat.h} sono definiti i flag riportati in
+\ntab:
 \begin{table}[htb]
   \centering
   \footnotesize
@@ -608,10 +609,37 @@ l'uso dei flag riportati in \ntab:
   \label{tab:filedir_file_mode_flags}
 \end{table}
 
+Il primo valore definisce la maschera dei bit usati nei quali viene
+memorizzato il tipo di files, mentre gli altri possono essere usati per
+effettuare delle selezioni sul tipo di file voluto.
+
 \subsection{La dimensione dei file}
 \label{sec:filedir_file_size}
 
-Il membro \var{st\_size} contiene la dimensione del 
+Il membro \var{st\_size} contiene la dimensione del file in bytes (se il file
+è un file normale, nel caso di un link simbolico al dimensione è quella del
+pathname che contiene, per le directory è in genere un multiplo di 512). 
+
+Il campo \var{st\_blocks} definisce la lunghezza del file in blocchi di 512
+bytes. Il campo \var{st\_blksize} infine definisce la dimensione preferita per
+i trasferimenti sui file (che è la dimensione usata anche dalle librerie del C
+per l'interfaccia deglli stream); scrivere in blocchi di dimensione inferiore
+sarebbe inefficiente.
+
+Si tenga conto che 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 \textsl{buchi} (detti normalmente \textit{holes}) che
+si formano tutte le volte che si va a scrivere su un file dopo aver eseguito
+una \func{seek} (vedi \secref{sec:fileunix_lseek}) oltre la sua conclusione
+corrente.
+
+In tal caso si avranno differenti risultati a seconda del modi in cui si
+calcola la lunghezza del file, ad esempio il comando \cmd{du}, (che riporta il
+numero di blocchi occupati) potrà dare una dimensione inferiore, mentre se si
+legge dal file (ad esempio usando \cmd{wc -c}), dato che in tal caso per le
+parti non scritte vengono restituiti degli zeri, si avrà lo stesso risultato
+di \cmd{ls}.
+
 
 \subsection{I tempi dei file}
 \label{sec:filedir_file_times}
@@ -672,6 +700,11 @@ pertanto accesso senza restrizione a qualunque file del sistema.
 \subsection{I flag \texttt{suid} e \texttt{sgid}}
 \label{sec:filedir_suid_sgid}
 
+
+
+
+
+
 \subsection{La titolarità di nuovi files e directory}
 \label{sec:filedir_ownership}
 
-- 
2.39.5