\param{olddirfd} e \param{newdirfd}) per poter indicare entrambi come relativi
a due directory aperte in precedenza.
-In questo caso dato che su Linux il comportamento di \func{link} è quello di
+In questo caso, dato che su Linux il comportamento di \func{link} è quello di
non seguire mai i collegamenti simbolici, \const{AT\_SYMLINK\_NOFOLLOW} non
-viene utilizzato; a partire dal kernel 2.6.18 è stato aggiunto a questa
+viene utilizzato. A partire dal kernel 2.6.18 è stato aggiunto a questa
funzione la possibilità di usare il valore \const{AT\_SYMLINK\_FOLLOW} per
l'argomento \param{flags},\footnote{nei kernel precendenti, dall'introduzione
nel 2.6.16, l'argomento \param{flags} era presente, ma senza alcun valore
valido, e doveva essere passato sempre con valore nullo.} che richiede di
-dereferenziare i collegamenti simbolici, inoltre a partire dal kernel 3.11 si
-può usare \const{AT\_EMPTY\_PATH} con il significato illustrato in precedenza.
+dereferenziare i collegamenti simbolici. Inoltre a partire dal kernel 3.11 si
+può usare \const{AT\_EMPTY\_PATH} per creare un nuovo \textit{hard link} al
+file associato al file descriptor \param{olddirfd} (ottenuto ad esempio usando
+\func{open} con \const{O\_PATH}) che però in questo caso non può essere una
+directory.
+
+% NOTE per la discussione sui problemi di sicurezza relativi a questa
+% funzionalità vedi http://lwn.net/Articles/562488/
+
+La funzione però prevede un comportamento specifico nel caso che
+\param{olddirfd} faccia riferimento ad un file anonimo ottenuto usando
+\func{open} con \const{O\_TMPFILE}. In generale quando il file associato ad
+\param{olddirfd} ha un numero di link nullo, la funzione fallisce, c'è però
+una
+
+
+l'uso di \const{AT\_EMPTY\_PATH} assume un significato
+ulteriore, e richiede i privilegi di amministratore (la \textit{capability}
+\const{CAP\_DAC\_READ\_SEARCH}) quando viene usato con un file descriptor
+anomino ottenuto usando \const{O\_TMPFILE} con \func{open}. In generale
+
Altre due funzioni che utilizzano due \textit{pathname} (e due file
descriptor) sono \funcd{renameat} e \funcd{renameat2}, corrispondenti alla
% https://lwn.net/Articles/707602/ e
% https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a528d35e8bfcc521d7cb70aaf03e1bd296c8493f)
-% TODO manca prototipo di linkat, verificare se metterlo o metter menzione
-% altre modifiche al riguardo nel 3.11 (AT_EMPTY_PATH?) vedi
-% http://lwn.net/Articles/562488/
% TODO: Trattare esempio di inzializzazione di file e successivo collegamento
% con l'uso di O_TMPFILE e linkat, vedi man open
% TODO: mettere prototipi espliciti fseeko e ftello o menzione?
-
\subsection{Input/output binario}
\label{sec:file_binary_io}