Correzioni multiple agli indici delle funzioni, inserita macro per
[gapil.git] / system.tex
index 77a866afcea69c5179a3d7a709eee9190d389f8f..8f074839df2b65ff3375a0343db6bac6d84e551c 100644 (file)
@@ -403,8 +403,7 @@ riportate in tab.~\ref{tab:sys_file_macro}.
     \hline                
     \const{LINK\_MAX}   &8  & Numero massimo di link a un file.\\
     \const{NAME\_MAX}&  14  & Lunghezza in byte di un nome di file. \\
-    \const{PATH\_MAX}& 256  & Lunghezza in byte di un
-                              \itindex{pathname} \textit{pathname}.\\
+    \const{PATH\_MAX}& 256  & Lunghezza in byte di un \textit{pathname}.\\
     \const{PIPE\_BUF}&4096  & Byte scrivibili atomicamente in una pipe
                               (vedi sez.~\ref{sec:ipc_pipes}).\\
     \const{MAX\_CANON}&255  & Dimensione di una riga di terminale in modo 
@@ -435,7 +434,7 @@ le analoghe di tab.~\ref{tab:sys_posix1_general}.
     \const{\_POSIX\_LINK\_MAX}   &8  & Numero massimo di link a un file.\\
     \const{\_POSIX\_NAME\_MAX}&  14  & Lunghezza in byte di un nome di file.\\
     \const{\_POSIX\_PATH\_MAX}& 256  & Lunghezza in byte di un 
-                                       \itindex{pathname} \textit{pathname}.\\
+                                       \textit{pathname}.\\
     \const{\_POSIX\_PIPE\_BUF}& 512  & Byte scrivibili atomicamente in una
                                        pipe.\\
     \const{\_POSIX\_MAX\_CANON}&255  & Dimensione di una riga di
@@ -478,13 +477,13 @@ E si noti come la funzione in questo caso richieda un argomento che specifichi
 a quale file si fa riferimento, dato che il valore del limite cercato può
 variare a seconda del filesystem. Una seconda versione della funzione,
 \funcd{fpathconf}, opera su un file descriptor invece che su un
-\itindex{pathname} \textit{pathname}. Il suo prototipo è:
+\textit{pathname}. Il suo prototipo è:
 \begin{prototype}{unistd.h}{long fpathconf(int fd, int name)}
   Restituisce il valore del parametro \param{name} per il file \param{fd}.
   
   \bodydesc{È identica a \func{pathconf} solo che utilizza un file descriptor
-    invece di un \itindex{pathname} \textit{pathname}; pertanto gli errori
-    restituiti cambiano di conseguenza.}
+    invece di un \textit{pathname}; pertanto gli errori restituiti cambiano di
+    conseguenza.}
 \end{prototype}
 \noindent ed il suo comportamento è identico a quello di \func{pathconf}.
 
@@ -603,8 +602,8 @@ maniera gerarchica all'interno di un albero;\footnote{si tenga presente che
   di Linux occorrerà includere anche i file \file{linux/unistd.h} e
   \file{linux/sysctl.h}.} per accedere ad uno di essi occorre specificare un
 cammino attraverso i vari nodi dell'albero, in maniera analoga a come avviene
-per la risoluzione di un \itindex{pathname} \textit{pathname} (da cui l'uso
-alternativo del filesystem \file{/proc}, che vedremo dopo).
+per la risoluzione di un \textit{pathname} (da cui l'uso alternativo del
+filesystem \file{/proc}, che vedremo dopo).
 
 Ciascun nodo dell'albero è identificato da un valore intero, ed il cammino che
 arriva ad identificare un parametro specifico è passato alla funzione
@@ -647,9 +646,9 @@ forma di file alcune delle strutture interne del kernel stesso.
 
 In particolare l'albero dei valori di \func{sysctl} viene presentato in forma
 di file nella directory \file{/proc/sys}, cosicché è possibile accedervi
-specificando un \itindex{pathname} \textit{pathname} e leggendo e scrivendo sul
-file corrispondente al parametro scelto.  Il kernel si occupa di generare al
-volo il contenuto ed i nomi dei file corrispondenti, e questo ha il grande
+specificando un \textit{pathname} e leggendo e scrivendo sul file
+corrispondente al parametro scelto.  Il kernel si occupa di generare al volo
+il contenuto ed i nomi dei file corrispondenti, e questo ha il grande
 vantaggio di rendere accessibili i vari parametri a qualunque comando di shell
 e di permettere la navigazione dell'albero dei valori.
 
@@ -717,9 +716,10 @@ dall'altra con il diffondersi delle reti la necessità di centralizzare le
 informazioni degli utenti e dei gruppi per insiemi di macchine, in modo da
 mantenere coerenti i dati, ha portato anche alla necessità di poter recuperare
 e memorizzare dette informazioni su supporti diversi, introducendo il sistema
-del \itindex{Name~Service~Switch} \textit{Name Service Switch} che tratteremo
-brevemente più avanti (in sez.~\ref{sec:sock_resolver}) dato che la maggior
-parte delle sua applicazioni sono relative alla risoluzioni di nomi di rete.
+del \itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch} che
+tratteremo brevemente più avanti (in sez.~\ref{sec:sock_resolver}) dato che la
+maggior parte delle sua applicazioni sono relative alla risoluzioni di nomi di
+rete.
 
 In questo paragrafo ci limiteremo comunque a trattare le funzioni classiche
 per la lettura delle informazioni relative a utenti e gruppi tralasciando
@@ -851,15 +851,16 @@ fig.~\ref{fig:sys_group_struct}.
 
 Le funzioni viste finora sono in grado di leggere le informazioni sia
 direttamente dal file delle password in \conffile{/etc/passwd} che tramite il
-sistema del \itindex{Name~Service~Switch} \textit{Name Service Switch} e sono
-completamente generiche. Si noti però che non c'è una funzione che permetta di
-impostare direttamente una password.\footnote{in realtà questo può essere
-  fatto ricorrendo a PAM, ma questo è un altro discorso.} Dato che POSIX non
-prevede questa possibilità esiste un'altra interfaccia che lo fa, derivata da
-SVID le cui funzioni sono riportate in tab.~\ref{tab:sys_passwd_func}. Questa
-però funziona soltanto quando le informazioni sono mantenute su un apposito
-file di \textsl{registro} di utenti e gruppi, con il formato classico di
-\conffile{/etc/passwd} e \conffile{/etc/group}.
+sistema del \itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch} e
+sono completamente generiche. Si noti però che non c'è una funzione che
+permetta di impostare direttamente una password.\footnote{in realtà questo può
+  essere fatto ricorrendo a PAM, ma questo è un altro discorso.} Dato che
+POSIX non prevede questa possibilità esiste un'altra interfaccia che lo fa,
+derivata da SVID le cui funzioni sono riportate in
+tab.~\ref{tab:sys_passwd_func}. Questa però funziona soltanto quando le
+informazioni sono mantenute su un apposito file di \textsl{registro} di utenti
+e gruppi, con il formato classico di \conffile{/etc/passwd} e
+\conffile{/etc/group}.
 
 \begin{table}[htb]
   \footnotesize
@@ -869,27 +870,27 @@ file di \textsl{registro} di utenti e gruppi, con il formato classico di
     \textbf{Funzione} & \textbf{Significato}\\
     \hline
     \hline
-    \func{fgetpwent}   & Legge una voce dal file di registro degli utenti
+    \funcm{fgetpwent}   & Legge una voce dal file di registro degli utenti
+                          specificato.\\
+    \funcm{fgetpwent\_r}& Come la precedente, ma \index{funzioni!rientranti}
+                          rientrante.\\ 
+    \funcm{putpwent}    & Immette una voce in un file di registro degli
+                          utenti.\\ 
+    \funcm{getpwent}    & Legge una voce da \conffile{/etc/passwd}.\\
+    \funcm{getpwent\_r} & Come la precedente, ma \index{funzioni!rientranti}
+                          rientrante.\\ 
+    \funcm{setpwent}    & Ritorna all'inizio di \conffile{/etc/passwd}.\\
+    \funcm{endpwent}    & Chiude \conffile{/etc/passwd}.\\
+    \funcm{fgetgrent}   & Legge una voce dal file di registro dei gruppi 
                          specificato.\\
-    \func{fgetpwent\_r}& Come la precedente, ma \index{funzioni!rientranti}
-                         rientrante.\\ 
-    \func{putpwent}    & Immette una voce in un file di registro degli
-                         utenti.\\ 
-    \func{getpwent}    & Legge una voce da \conffile{/etc/passwd}.\\
-    \func{getpwent\_r} & Come la precedente, ma \index{funzioni!rientranti}
-                         rientrante.\\ 
-    \func{setpwent}    & Ritorna all'inizio di \conffile{/etc/passwd}.\\
-    \func{endpwent}    & Chiude \conffile{/etc/passwd}.\\
-    \func{fgetgrent}   & Legge una voce dal file di registro dei gruppi 
-                         specificato.\\
-    \func{fgetgrent\_r}& Come la precedente, ma \index{funzioni!rientranti}
-                         rientrante.\\
-    \func{putgrent}    & Immette una voce in un file di registro dei gruppi.\\
-    \func{getgrent}    & Legge una voce da \conffile{/etc/group}.\\ 
-    \func{getgrent\_r} & Come la precedente, ma \index{funzioni!rientranti} 
-                         rientrante.\\
-    \func{setgrent}    & Ritorna all'inizio di \conffile{/etc/group}.\\
-    \func{endgrent}    & Chiude \conffile{/etc/group}.\\
+    \funcm{fgetgrent\_r}& Come la precedente, ma \index{funzioni!rientranti}
+                          rientrante.\\
+    \funcm{putgrent}    & Immette una voce in un file di registro dei gruppi.\\
+    \funcm{getgrent}    & Legge una voce da \conffile{/etc/group}.\\ 
+    \funcm{getgrent\_r} & Come la precedente, ma \index{funzioni!rientranti} 
+                          rientrante.\\
+    \funcm{setgrent}    & Ritorna all'inizio di \conffile{/etc/group}.\\
+    \funcm{endgrent}    & Chiude \conffile{/etc/group}.\\
     \hline
   \end{tabular}
   \caption{Funzioni per la manipolazione dei campi di un file usato come
@@ -898,6 +899,8 @@ file di \textsl{registro} di utenti e gruppi, con il formato classico di
   \label{tab:sys_passwd_func}
 \end{table}
 
+% TODO mancano i prototipi di alcune delle funzioni
+
 Dato che oramai la gran parte delle distribuzioni di GNU/Linux utilizzano
 almeno le \textit{shadow password} (quindi con delle modifiche rispetto al
 formato classico del file \conffile{/etc/passwd}), si tenga presente che le
@@ -1084,15 +1087,17 @@ sono un sovrainsieme di \code{utmp}.
 
 Le \acr{glibc} utilizzano già una versione estesa di \code{utmp}, che rende
 inutili queste nuove strutture; pertanto esse e le relative funzioni di
-gestione (\func{getutxent}, \func{getutxid}, \func{getutxline},
-\func{pututxline}, \func{setutxent} e \func{endutxent}) sono ridefinite come
+gestione (\funcm{getutxent}, \funcm{getutxid}, \funcm{getutxline},
+\funcm{pututxline}, \funcm{setutxent} e \funcm{endutxent}) sono ridefinite come
 sinonimi delle funzioni appena viste.
 
+% TODO (verificare le funzioni di cui sopra )
+
 Come visto in sez.~\ref{sec:sys_user_group}, l'uso di strutture allocate
 staticamente rende le funzioni di lettura non \index{funzioni!rientranti}
 rientranti; per questo motivo le \acr{glibc} forniscono anche delle versioni
-\index{funzioni!rientranti} rientranti: \func{getutent\_r}, \func{getutid\_r},
-\func{getutline\_r}, che invece di restituire un puntatore restituiscono un
+\index{funzioni!rientranti} rientranti: \funcm{getutent\_r}, \funcm{getutid\_r},
+\funcm{getutline\_r}, che invece di restituire un puntatore restituiscono un
 intero e prendono due argomenti aggiuntivi. Le funzioni si comportano
 esattamente come le analoghe non \index{funzioni!rientranti} rientranti, solo
 che restituiscono il risultato all'indirizzo specificato dal primo argomento
@@ -1548,10 +1553,10 @@ prototipo è:
     \errval{ENOTDIR}, \errval{EROFS}.}
 \end{prototype}
 
-La funzione attiva il salvataggio dei dati sul file indicato dal pathname
-contenuti nella stringa puntata da \param{filename}; la funzione richiede che
-il processo abbia i privilegi di amministratore (è necessaria la
-\itindex{capabilities} capability \const{CAP\_SYS\_PACCT}, vedi
+La funzione attiva il salvataggio dei dati sul file indicato dal
+\textit{pathname} contenuti nella stringa puntata da \param{filename}; la
+funzione richiede che il processo abbia i privilegi di amministratore (è
+necessaria la \itindex{capabilities} capability \const{CAP\_SYS\_PACCT}, vedi
 sez.~\ref{sec:proc_capabilities}). Se si specifica il valore \val{NULL} per
 \param{filename} il \textit{BSD accounting} viene invece disabilitato. Un
 semplice esempio per l'uso di questa funzione è riportato nel programma
@@ -2292,7 +2297,7 @@ non \index{funzioni!rientranti} rientrante, per cui nel caso si usino i
   (quella riportata dalla pagina di manuale), che restituisce \code{int} al
   posto di \code{char *}, e che tronca la stringa restituita a
   \param{size}.}  una apposita versione \index{funzioni!rientranti} rientrante
-\func{strerror\_r}, il cui prototipo è:
+\funcd{strerror\_r}, il cui prototipo è:
 \begin{prototype}{string.h}
   {char * strerror\_r(int errnum, char *buf, size\_t size)} 
   
@@ -2358,7 +2363,7 @@ completo del programma è allegato nel file \file{ErrCode.c} e contiene pure la
 gestione delle opzioni e tutte le definizioni necessarie ad associare il
 valore numerico alla costante simbolica. In particolare si è riportata la
 sezione che converte la stringa passata come argomento in un intero
-(\texttt{\small 1--2}), controllando con i valori di ritorno di \func{strtol}
+(\texttt{\small 1--2}), controllando con i valori di ritorno di \funcm{strtol}
 che la conversione sia avvenuta correttamente (\texttt{\small 4--10}), e poi
 stampa, a seconda dell'opzione scelta il messaggio di errore (\texttt{\small
   11--14}) o la macro (\texttt{\small 15--17}) associate a quel codice.