%% intro.tex
%%
-%% Copyright (C) 2000-2012 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
sono rappresentati da numeri interi (cioè semplici variabili di tipo
\ctyp{int}). L'interfaccia è definita nell'\textit{header file}
\headfile{unistd.h} e la tratteremo in dettaglio in
-cap.~\ref{cha:file_unix_interface}.
+sez.~\ref{sec:file_unix_interface}.
\itindbeg{file~stream}
puntatori ad un opportuna struttura definita dalle librerie del C, ad essi si
accede sempre in maniera indiretta utilizzando il tipo \code{FILE *}.
L'interfaccia è definita nell'\textit{header file} \headfile{stdio.h} e la
-tratteremo in dettaglio nel cap.~\ref{cha:files_std_interface}.
+tratteremo in dettaglio in sez.~\ref{sec:files_std_interface}.
Entrambe le interfacce possono essere usate per l'accesso ai file come agli
altri oggetti del VFS, ma per poter accedere alle operazioni di controllo
-(descritte in sez.~\ref{sec:file_fcntl} e sez.~\ref{sec:file_ioctl}) su un
-qualunque tipo di oggetto del VFS occorre usare l'interfaccia standard di Unix
-con i file descriptor. Allo stesso modo devono essere usati i file descriptor
-se si vuole ricorrere a modalità speciali di I/O come il
-\itindex{file~locking} \textit{file locking} o l'I/O non-bloccante (vedi
+(descritte in sez.~\ref{sec:file_fcntl_ioctl}) su un qualunque tipo di oggetto
+del VFS occorre usare l'interfaccia standard di Unix con i file
+descriptor. Allo stesso modo devono essere usati i file descriptor se si vuole
+ricorrere a modalità speciali di I/O come il \itindex{file~locking}
+\textit{file locking} o l'I/O non-bloccante (vedi
cap.~\ref{cha:file_advanced}).
Gli \textit{stream} forniscono un'interfaccia di alto livello costruita sopra
\textbf{Standard} & \textbf{IEEE} & \textbf{ISO} & \textbf{Contenuto} \\
\hline
\hline
- POSIX.1 & 1003.1 & 9945-1& Interfacce di base \\
- POSIX.1a& 1003.1a& 9945-1& Estensioni a POSIX.1 \\
- POSIX.2 & 1003.2 & 9945-2& Comandi \\
- POSIX.3 & 2003 &TR13210& Metodi di test \\
- POSIX.4 & 1003.1b & --- & Estensioni real-time \\
- POSIX.4a& 1003.1c & --- & \itindex{thread} Thread \\
- POSIX.4b& 1003.1d &9945-1& Ulteriori estensioni real-time \\
- POSIX.5 & 1003.5 & 14519& Interfaccia per il linguaggio ADA \\
- POSIX.6 & 1003.2c,1e& 9945-2& Sicurezza \\
- POSIX.8 & 1003.1f& 9945-1& Accesso ai file via rete \\
- POSIX.9 & 1003.9 & --- & Interfaccia per il Fortran-77 \\
- POSIX.12& 1003.1g& 9945-1& Socket \\
+ POSIX.1 & 1003.1 & 9945-1& Interfacce di base. \\
+ POSIX.1a& 1003.1a& 9945-1& Estensioni a POSIX.1. \\
+ POSIX.2 & 1003.2 & 9945-2& Comandi. \\
+ POSIX.3 & 2003 &TR13210& Metodi di test. \\
+ POSIX.4 & 1003.1b & --- & Estensioni real-time. \\
+ POSIX.4a& 1003.1c & --- & \itindex{thread} Thread. \\
+ POSIX.4b& 1003.1d &9945-1& Ulteriori estensioni real-time. \\
+ POSIX.5 & 1003.5 & 14519& Interfaccia per il linguaggio ADA. \\
+ POSIX.6 & 1003.2c,1e& 9945-2& Sicurezza. \\
+ POSIX.8 & 1003.1f& 9945-1& Accesso ai file via rete. \\
+ POSIX.9 & 1003.9 & --- & Interfaccia per il Fortran-77. \\
+ POSIX.12& 1003.1g& 9945-1& Socket. \\
\hline
\end{tabular}
\caption{Elenco dei vari standard POSIX e relative denominazioni.}
\macro{\_GNU\_SOURCE}) è stata a sua volta attivata, nel qual caso queste
hanno la precedenza. Se però si definisce \macro{\_BSD\_SOURCE} dopo aver
definito una di queste macro, l'effetto sarà quello di dare la precedenza
- alle funzioni in forma BSD.
+ alle funzioni in forma BSD. Questa macro è stata deprecata a partire dalle
+ \acr{glibc} 2.20, essendo ricompresa in \macro{\_DEFAULT\_SOURCE} che è
+ definita di default.
\item[\macro{\_SVID\_SOURCE}] definendo questa macro si rendono disponibili le
funzionalità derivate da SVID. Esse comprendono anche quelle definite negli
standard ISO C, POSIX.1, POSIX.2, e X/Open (XPG$n$) illustrati in
- precedenza.
+ precedenza. Questa macro è stata deprecata a partire dalle \acr{glibc} 2.20,
+ essendo ricompresa in \macro{\_DEFAULT\_SOURCE} che è definita di default.
+
+\item[\macro{\_DEFAULT\_SOURCE}] questa macro abilita le definizioni
+ considerate il \textit{default}, comprese quelle richieste dalla standard
+ POSIX.1-2008, ed è sostanzialente equivalente a \macro{\_SVID\_SOURCE}
+ \macro{\_BSD\_SOURCE}] e \macro{\_POSIX\_C\_SOURCE}. Essendo predefinita non
+ è necessario usarla a meno di non aver richiesto delle definizioni più
+ restrittive sia con altre macro che con i flag del compilatore, nel qual
+ caso abilita le funzioni che altrimenti sarebbero disabilitate. Questa macro
+ è stata introdotta a partire dalle \acr{glibc} 2.19 e consente di deprecare
+ \macro{\_SVID\_SOURCE} e \macro{\_BSD\_SOURCE}].
\item[\macro{\_XOPEN\_SOURCE}] definendo questa macro si rendono disponibili
le funzionalità descritte nella \textit{X/Open Portability Guide}. Anche
viene tuttora riconosciuta come equivalente di \macro{\_ISOC99\_SOURCE} per
compatibilità.
+\item[\macro{\_ISOC11\_SOURCE}] definendo questa macro si rendono disponibili
+ le funzionalità previste per la revisione delle librerie standard del C
+ introdotte con lo standard ISO C11, e abilita anche quelle previste dagli
+ standard C99 e C95. La macro è definita a partire dalla versione 2.16 della
+ \acr{glibc}.
+
\item[\macro{\_GNU\_SOURCE}] definendo questa macro si rendono disponibili
tutte le funzionalità disponibili nei vari standard oltre a varie estensioni
specifiche presenti solo nella \acr{glibc} ed in Linux. Gli standard coperti
presente negli standard con i file di grandi dimensioni, ed in particolare
definire le due funzioni \func{fseeko} e \func{ftello} che al contrario
delle corrispettive \func{fseek} e \func{ftell} usano il tipo di dato
- specifico \type{off\_t} (vedi sez.~\ref{sec:file_fseek}).
+ specifico \type{off\_t} (vedi sez.~\ref{sec:file_io}).
\item[\macro{\_LARGEFILE64\_SOURCE}] definendo questa macro si rendono
disponibili le funzioni di una interfaccia alternativa al supporto di valori