-La funzione prende due argomenti, il puntatore alla zona di memoria
-\param{buff}, in cui l'utente vuole che il risultato venga scritto (dovrà
-ovviamente essere stata allocata in precedenza), e la relativa dimensione,
-\param{len}; se la stringa che deve essere restituita eccede questa dimensione
-si avrà una condizione di errore.
-
-Se si passa come argomento \val{NULL} la funzione restituisce il puntatore ad
-una stringa statica che può essere sovrascritta da chiamate successive. Si
-tenga presente che il \itindex{pathname} \textit{pathname} restituito
-potrebbe non identificare univocamente il terminale (ad esempio potrebbe
-essere \file{/dev/tty}), inoltre non è detto che il processo possa
-effettivamente aprire il terminale.
-
-I vari attributi vengono mantenuti per ciascun terminale in una struttura
-\struct{termios}, (la cui definizione è riportata in
-fig.~\ref{fig:term_termios}), usata dalle varie funzioni dell'interfaccia. In
-fig.~\ref{fig:term_termios} si sono riportati tutti i campi della definizione
-usata in Linux; di questi solo i primi cinque sono previsti dallo standard
-POSIX.1, ma le varie implementazioni ne aggiungono degli altri per mantenere
-ulteriori informazioni.\footnote{la definizione della struttura si trova in
- \file{bits/termios.h}, da non includere mai direttamente, Linux, seguendo
- l'esempio di BSD, aggiunge i due campi \var{c\_ispeed} e \var{c\_ospeed} per
- mantenere le velocità delle linee seriali, ed un campo ulteriore,
- \var{c\_line} per ... (NdT, trovare a che serve).}
-% TODO trovare a che serve
+La funzione prende due argomenti in più, il puntatore \param{buff} alla zona
+di memoria in cui l'utente vuole che il risultato venga scritto, che dovrà
+essere stata allocata in precedenza, e la relativa dimensione,
+\param{len}. Se la stringa che deve essere restituita, compreso lo zero di
+terminazione finale, eccede questa dimensione si avrà una condizione di
+errore.
+
+Una funzione funzione analoga alle precedenti anch'essa prevista da POSIX.1,
+che restituisce sempre il nome di un file di dispositivo, è \funcd{ctermid},
+il cui prototipo è:
+\begin{prototype}{stdio.h}{char *ctermid(char *s)}
+
+ Restituisce il nome del terminale di controllo del processo.
+
+ \bodydesc{La funzione restituisce il puntatore alla stringa contenente il
+ \textit{pathname} del terminale o \val{NULL} se non non riesce ad eseguire
+ l'operazione.}
+\end{prototype}
+
+La funzione restituisce un puntatore al \textit{pathname} del file di
+dispositivo del terminale di controllo del processo chiamante. Se si passa
+come argomento \val{NULL} la funzione restituisce il puntatore ad una stringa
+statica che può essere sovrascritta da chiamate successive, e non è
+rientrante. Indicando invece un puntatore ad una zona di memoria già allocata
+la stringa sarà scritta su di essa, ma in questo caso il buffer preallocato
+deve essere di almeno \const{L\_ctermid}\footnote{\const{L\_ctermid} è una
+ delle varie costanti del sistema, non trattata esplicitamente in
+ sez.~\ref{sec:sys_characteristics} che indica la dimensione che deve avere
+ una stringa per poter contenere il nome di un terminale.} caratteri.
+
+Si tenga presente che il \itindex{pathname} \textit{pathname} restituito dalla
+funzione potrebbe non identificare univocamente il terminale (ad esempio
+potrebbe essere \file{/dev/tty}), inoltre non è detto che il processo possa
+effettivamente essere in grado di aprire il terminale.
+
+I vari attributi associati ad un terminale vengono mantenuti per ciascuno di
+essi in una struttura \struct{termios} che viene usata dalle varie funzioni
+dell'interfaccia. In fig.~\ref{fig:term_termios} si sono riportati tutti i
+campi della definizione di questa struttura usata in Linux; di questi solo i
+primi cinque sono previsti dallo standard POSIX.1, ma le varie implementazioni
+ne aggiungono degli altri per mantenere ulteriori informazioni.\footnote{la
+ definizione della struttura si trova in \file{bits/termios.h}, da non
+ includere mai direttamente, Linux, seguendo l'esempio di BSD, aggiunge i due
+ campi \var{c\_ispeed} e \var{c\_ospeed} per mantenere le velocità delle
+ linee seriali, ed un campo ulteriore, \var{c\_line} per indicare la
+ disciplina di linea.}