+In tab.~\ref{tab:file_atfunc_corr} si sono riportate le funzioni introdotte
+con questa nuova interfaccia, con a fianco la corrispondente funzione
+classica. Tranne che nel caso di \func{faccessat} e \func{unlinkat} tutti i
+loro prototipi seguono la convenzione appena vista per \func{openat}, in cui
+agli argomenti della corrispondente funzione classica viene anteposto
+l'argomento \param{dirfd}.\footnote{non staremo pertanto a riportarli uno per
+ uno.}
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|l|}
+ \hline
+ \textbf{Funzione} & \textbf{Corrispondente} \\
+ \hline
+ \hline
+ \func{faccessat} &\func{access} \\
+ \func{fchmodat} &\func{chmod} \\
+ \func{fchownat} &\func{chown} \\
+ \func{fstatat} &\func{stat} \\
+ \func{futimesat} &\func{utimes} \\
+ \func{linkat} &\func{link} \\
+ \func{mkdirat} &\func{mkdir} \\
+ \func{mknodat} &\func{mknod} \\
+ \func{openat} &\func{open} \\
+ \func{readlinkat}&\func{readlink}\\
+ \func{renameat} &\func{rename} \\
+ \func{symlinkat} &\func{symlink} \\
+ \func{unlinkat} &\func{unlink} \\
+ \func{mkfifoat} &\func{mkfifo} \\
+ \hline
+ \end{tabular}
+ \caption{Corrispondenze fra le nuove funzioni ``\textit{at}'' e le
+ corrispettive funzioni classiche.}
+ \label{tab:file_atfunc_corr}
+\end{table}
+
+% TODO documentare utimesat, introdotta in 2.6.22
+% http://kernelnewbies.org/Linux_2_6_22
+
+Il comportamento delle nuove funzioni è del tutto analogo a quello delle
+corrispettive classiche, con la sola eccezione del fatto che se fra i loro
+argomenti si utilizza un pathname relativo questo sarà risolto rispetto alla
+directory indicata da \param{dirfd}; qualora invece si usi un pathname
+assoluto \param{dirfd} verrà semplicemente ignorato. Infine se per
+\param{dirfd} si usa il valore speciale \const{AT\_FDCWD}, la risoluzione sarà
+effettuata rispetto alla directory di lavoro corrente del processo.
+
+Così come il comportamento, anche i valori di ritorno e le condizioni di
+errore delle nuove funzioni sono gli stessi delle funzioni classiche, agli
+errori si aggiungono però quelli dovuti a valori errati per \param{dirfd}; in
+particolare si avrà un errore di \errcode{EBADF} se esso non è un file
+descriptor valido, ed un errore di \errcode{ENOTDIR} se esso non fa riferimento
+ad una directory.\footnote{tranne il caso in cui si sia specificato un
+ pathname assoluto, nel qual caso, come detto, il valore di \param{dirfd}
+ sarà completamente ignorato.}
+
+Come accennato ci sono due eccezioni alla precedente regola, \func{faccessat}
+e \func{unlinkat}, che tratteremo esplicitamente. Dette funzioni, oltre a
+prendere \param{dirfd} come primo argomento aggiuntivo, prendono un ulteriore
+argomento finale \param{flags}, utilizzato come maschera binaria. Nel caso di
+\funcd{faccessat} avremo cioè:
+\begin{functions}
+ \headdecl{unistd.h}
+ \funcdecl{int faccessat(int dirfd, const char *path, int mode, int flags)}
+
+ Controlla i permessi di accesso.
+
+ \bodydesc{la funzione restituisce gli stessi valori e gli stessi codici di
+ errore di \func{access}, ed in più:
+ \begin{errlist}
+ \item[\errcode{EBADF}] \param{dirfd} non è un file descriptor valido.
+ \item[\errcode{ENOTDIR}] \param{pathname} è un pathname relativo, ma
+ \param{dirfd} fa riferimento ad un file.
+ \end{errlist}}
+\end{functions}
+
+La funzione esegue lo stesso controllo di accesso effettuabile con
+\func{access}, ma si può utilizzare l'argomento \param{flags} per modificarne
+il comportamento rispetto a quello ordinario di \func{access}; questo infatti
+può essere specificato come maschera binaria dei seguenti valori:
+\begin{basedescript}{\desclabelwidth{2.0cm}}
+\item[\const{AT\_EACCESS}] se impostato esegue il controllo dei permessi
+ usando l'\textsl{user-ID effettivo} invece di quello reale (il comportamento
+ di default, che riprende quello di \func{access}).
+\item[\const{AT\_SYMLINK\_NOFOLLOW}] se impostato non esegue la
+ dereferenziazione del link simbolico (il comportamento di default, che
+ riprende quello di \func{access}), ma effettua il controllo sui permessi del
+ link simbolico stesso.
+\end{basedescript}
+
+Nel caso di \func{unlinkat} l'ulteriore argomento \param{flags} viene inserito
+perché detta funzione può comportarsi sia come analogo di \func{unlink} che di
+\func{rmdir}; pertanto il suo prototipo è:
+\begin{functions}
+ \headdecl{fcntl.h}
+ \funcdecl{int unlinkat(int dirfd, const char *pathname, int flags)}
+
+ Rimuove una voce da una directory.
+
+ \bodydesc{la funzione restituisce gli stessi valori e gli stessi codici di
+ errore di \func{unlink} o di \func{rmdir} a seconda del valore di
+ \param{flags}, ed in più:
+ \begin{errlist}
+ \item[\errcode{EBADF}] \param{dirfd} non è un file descriptor valido.
+ \item[\errcode{ENOTDIR}] \param{pathname} è un pathname relativo, ma
+ \param{dirfd} fa riferimento ad un file.
+ \end{errlist}}
+\end{functions}
+
+Di default il comportamento di \func{unlinkat} è equivalente a quello che
+avrebbe \func{unlink} applicata a \param{pathname}, fallendo se questo è una
+directory, se però si imposta \param{flags} al valore di
+\const{AT\_REMOVEDIR},\footnote{anche se \param{flags} è una maschera binaria,
+ essendo questo l'unico flag disponibile, lo si può assegnare direttamente.}
+essa si comporterà come \func{rmdir}.