%% process.tex
%%
-%% Copyright (C) 2000-2012 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2013 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",
Si può notare che si è anzitutto (\texttt{\small 1}) disabilitata la stampa di
messaggi di errore per opzioni non riconosciute, per poi passare al ciclo per
-la verifica delle opzioni (\texttt{\small 2-27}); per ciascuna delle opzioni
+la verifica delle opzioni (\texttt{\small 2--27}); per ciascuna delle opzioni
possibili si è poi provveduto ad un'azione opportuna, ad esempio per le tre
opzioni che prevedono un parametro si è effettuata la decodifica del medesimo,
il cui indirizzo è contenuto nella variabile \var{optarg}), avvalorando la
-relativa variabile (\texttt{\small 12-14}, \texttt{\small 15-17} e
-\texttt{\small 18-20}). Completato il ciclo troveremo in \var{optind} l'indice
-in \code{argv[]} del primo degli argomenti rimanenti nella linea di comando.
+relativa variabile (\texttt{\small 12--14}, \texttt{\small 15--17} e
+\texttt{\small 18--20}). Completato il ciclo troveremo in \var{optind}
+l'indice in \code{argv[]} del primo degli argomenti rimanenti nella linea di
+comando.
Normalmente \func{getopt} compie una permutazione degli elementi di
\param{argv} cosicché alla fine della scansione gli elementi che non sono
& \textbf{Linux} & \textbf{Descrizione} \\
\hline
\hline
- \texttt{USER} &$\bullet$&$\bullet$&$\bullet$& Nome utente\\
- \texttt{LOGNAME}&$\bullet$&$\bullet$&$\bullet$& Nome di login\\
+ \texttt{USER} &$\bullet$&$\bullet$&$\bullet$& Nome utente.\\
+ \texttt{LOGNAME}&$\bullet$&$\bullet$&$\bullet$& Nome di login.\\
\texttt{HOME} &$\bullet$&$\bullet$&$\bullet$& Directory base
- dell'utente\\
- \texttt{LANG} &$\bullet$&$\bullet$&$\bullet$& Localizzazione\\
+ dell'utente.\\
+ \texttt{LANG} &$\bullet$&$\bullet$&$\bullet$& Localizzazione.\\
\texttt{PATH} &$\bullet$&$\bullet$&$\bullet$& Elenco delle directory
- dei programmi\\
- \texttt{PWD} &$\bullet$&$\bullet$&$\bullet$& Directory corrente\\
- \texttt{SHELL} &$\bullet$&$\bullet$&$\bullet$& Shell in uso\\
- \texttt{TERM} &$\bullet$&$\bullet$&$\bullet$& Tipo di terminale\\
+ dei programmi.\\
+ \texttt{PWD} &$\bullet$&$\bullet$&$\bullet$& Directory corrente.\\
+ \texttt{SHELL} &$\bullet$&$\bullet$&$\bullet$& Shell in uso.\\
+ \texttt{TERM} &$\bullet$&$\bullet$&$\bullet$& Tipo di terminale.\\
\texttt{PAGER} &$\bullet$&$\bullet$&$\bullet$& Programma per vedere i
- testi\\
- \texttt{EDITOR} &$\bullet$&$\bullet$&$\bullet$& Editor preferito\\
- \texttt{BROWSER}&$\bullet$&$\bullet$&$\bullet$& Browser preferito\\
+ testi.\\
+ \texttt{EDITOR} &$\bullet$&$\bullet$&$\bullet$& Editor preferito.\\
+ \texttt{BROWSER}&$\bullet$&$\bullet$&$\bullet$& Browser preferito.\\
\texttt{TMPDIR} &$\bullet$&$\bullet$&$\bullet$& Directory dei file
- temporanei\\
+ temporanei.\\
\hline
\end{tabular}
\caption{Esempi delle variabili di ambiente più comuni definite da vari
% TODO opzioni in formato esteso
+% TODO trattare il vettore ausiliario e getauxval (vedi
+% http://lwn.net/Articles/519085/)
+
+
\section{Problematiche di programmazione generica}
\label{sec:proc_gen_prog}
Il codice di detto programma, \file{endtest.c}, è nei sorgenti allegati,
allora se lo eseguiamo su un normale PC compatibile, che è \textit{little
endian} otterremo qualcosa del tipo:
-\begin{Command}
-[piccardi@gont sources]$ ./endtest
-\end{Command}
-%$
-\begin{Terminal}
+\begin{Console}
+[piccardi@gont sources]$ \textbf{./endtest}
Using value ABCDEF01
val[0]= 1
val[1]=EF
val[2]=CD
val[3]=AB
-\end{Terminal}
+\end{Console}
+%$
mentre su un vecchio Macintosh con PowerPC, che è \textit{big endian} avremo
qualcosa del tipo:
-\begin{Command}
-piccardi@anarres:~/gapil/sources$ ./endtest
-\end{Command}
-%$
-\begin{Terminal}
+\begin{Console}
+piccardi@anarres:~/gapil/sources$ \textbf{./endtest}
Using value ABCDEF01
val[0]=AB
val[1]=CD
val[2]=EF
val[3]= 1
-\end{Terminal}
+\end{Console}
+%$
L'attenzione alla \textit{endianness} nella programmazione è importante, perché
se si fanno assunzioni relative alla propria architettura non è detto che