gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] gawk branch, feature/docit, updated. gawk-4.1.0-5211-gfd450250


From: Antonio Giovanni Colombo
Subject: [SCM] gawk branch, feature/docit, updated. gawk-4.1.0-5211-gfd450250
Date: Tue, 28 Mar 2023 10:11:40 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, feature/docit has been updated
       via  fd450250a51a5c126804c5c5fb3cc2c866184592 (commit)
      from  bafdbc1bb6da942a5099d884466e9bfc4c2af7bc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=fd450250a51a5c126804c5c5fb3cc2c866184592

commit fd450250a51a5c126804c5c5fb3cc2c866184592
Author: Antonio Giovanni Colombo <azc100@gmail.com>
Date:   Tue Mar 28 16:11:07 2023 +0200

    Modifications for gawk 5.3

diff --git a/doc/it/ChangeLog b/doc/it/ChangeLog
index e679b899..a1c81841 100755
--- a/doc/it/ChangeLog
+++ b/doc/it/ChangeLog
@@ -1,3 +1,9 @@
+2023-03-28         Antonio Giovanni Colombo   <azc100@gmail.com>
+
+       * gawk.1: Updated.
+       * gawktexi.in: Updated.
+       * texinfo.tex: Updated.
+
 2023-03-07         Antonio Giovanni Colombo   <azc100@gmail.com>
 
        * gawktexi.in: Updated.
diff --git a/doc/it/gawk.1 b/doc/it/gawk.1
old mode 100644
new mode 100755
index 2260da18..ab2c2d97
--- a/doc/it/gawk.1
+++ b/doc/it/gawk.1
@@ -20,6 +20,7 @@
 .\"Aggiornam. a gawk-5.1.1 di A.G. Colombo - Maggio 2022
 .\"Aggiornam. a gawk-5.1.1 di A.G. Colombo - Giugno 2022
 .\"Aggiornam. a gawk-5.2.0 di A.G. Colombo - Luglio 2022
+.\"Aggiornam. a gawk-5.3.0 di A.G. Colombo - Marzo  2023
 
 .ds PX \s-1POSIX\s+1
 .ds UX \s-1UNIX\s+1
@@ -257,6 +258,14 @@ Questa trace è stampata sullo standard error.
 Ogni ``codice operativo'' è preceduto da un segno
 .B +
 nell'output.
+.TP
+\fB\-k\fR, \fB\-\^\-csv\fR
+Abilita gestione speciale file CSV
+[Comma Separated Values - Valori Separati da Virgola].
+Vedere il manuale per i dettagli.
+.BR FIXME :
+Eventualmente, fornire un link (URL) qui.
+.TP
 .BI \-l " lib\fR, "\c
 .BI \-\^\-load " lib"
 Carica un'estensione
@@ -656,6 +665,23 @@ Analogamente, assegnare un valore a
 .B $0
 provoca una nuova divisione del record, creando nuovi
 valori per i suoi campi.
+.SS Comma Separated Values [Valori Separati da Virgola]
+Quando è chiamato specificando l'opzione
+.B \-\^\-csv,
+.I gawk
+non usa le regole spiegate sopra per determinare cosa costituisce
+un record e per dividerlo in campi.
+Invece, i record sono delimitati dai caratteri "ritorno a capo",
+che non siano all'interno di un campo CSV [per esempio, un
+campo che contenga un indirizzo completo è normalmente su più
+righe, che però formano un unico campo]. I campi sono separati
+fra loro da una virgola.
+I caratteri "doppio apice" possono essere usati per indicare
+campi che contengono virgole, ritorni a capo, o doppi apici
+[che vanno raddoppiati].
+Vedere il manuale per i dettagli.
+.B FIXME
+Eventualmente, fornire un link (URL) qui.
 .SS Variabili predefinite
 Le variabili predefinite di
 .IR gawk "
diff --git a/doc/it/gawktexi.in b/doc/it/gawktexi.in
index 68216999..7810ba9b 100755
--- a/doc/it/gawktexi.in
+++ b/doc/it/gawktexi.in
@@ -4571,6 +4571,23 @@ Questa tracciatura @`e stampata sullo standard error.
 Ogni ``codice operativo'' @`e preceduto da un segno @code{+}
 nell'output.
 
+@item @option{-k}
+@itemx @option{--csv}
+@cindex @option{-k} (opzione)
+@cindex opzione @subentry @option{-k}
+@cindex @option{--csv} (opzione)
+@cindex opzione @subentry @option{--csv}
+@cindex campi separati da virgola (CSV) come dati @subentry opzione @option{-k}
+@cindex campi separati da virgola (CSV) come dati @subentry opzione 
@option{--csv}
+@cindex CSV (dati con valori separati da virgola) @subentry opzione @option{-k}
+@cindex CSV (dati con valori separati da virgola) @subentry opzione 
@option{--csv}
+@cindex dati CSV (campi separati da virgola) @subentry @option{-k}
+@cindex dati CSV (campi separati da virgola) @subentry @option{--csv}
+Richiede un trattamento speciale per file CSV [valori separati da virgola].
+@xref{Campi separati da virgola}.
+Quest'opzione non pu@`o essere usata insieme all'opzione @option{--posix}.
+Se lo si fa, viene generato un errore fatale.
+
 @item @option{-l} @var{ext}
 @itemx @option{--load} @var{ext}
 @cindex @option{-l} (opzione)
@@ -5720,7 +5737,7 @@ Questa
 @ifinfo
 Questo
 @end ifinfo
-@value{SECTION} descrive funzionalit@`a o opzioni da riga di comando
+@value{SECTION} descrive una funzionalit@`a o opzione da riga di comando
 provenienti da precedenti versioni di @command{gawk} che non sono pi@`u
 disponibili nella versione corrente, o che sono ancora utilizzabili ma sono
 deprecate (ci@`o significa che @emph{non} saranno presenti in una futura
@@ -6227,7 +6244,7 @@ Il valore esadecimale @var{hh}, dove @var{hh} indica una 
sequenza di cifre
 esadecimali (@samp{0}--@samp{9}, e @samp{A}--@samp{F}
 o @samp{a}--@samp{f}).  Dopo @samp{\x} @`e consentito un massimo di due cifre.
 Ogni ulteriore cifra esadecimale @`e considerata come una semplice
-lettera o numero.  @value{COMMONEXT}
+lettera o numero. @value{COMMONEXT}
 (La sequenza di protezione @samp{\x} non @`e permessa in POSIX awk.)
 
 @quotation ATTENZIONE
@@ -6241,6 +6258,27 @@ Dalla @value{PVERSION} 4.2,
 vengono elaborate solo due cifre.
 @end quotation
 
+@cindex @code{\} (barra inversa) @subentry @code{\u} (sequenza di protezione)
+@cindex backslash (@code{\}) @subentry @code{\u} (sequenza di protezione)
+@cindex barra inversa (@code{\}) @subentry @code{\/} (sequenza di protezione)
+@cindex estensioni comuni @subentry @code{\u} (sequenza di protezione)
+@cindex comuni @subentry estensioni @subentry @code{\u} (sequenza di 
protezione)
+@item \u@var{hh}@dots{}
+Il valore esadecimale @var{hh}, dove @var{hh} indica una sequenza di cifre
+esadecimli (@samp{0}--@samp{9}, e @samp{A}--@samp{F} o
+@samp{a}--@samp{f}).  Un massimo di otto cifre @`e consentito dopo
+la @samp{\u}.  Ogni successiva cifra esadecimale eventualmente immessa
+@`e trattata come una semplice lettera o numero. @value{COMMONEXT}
+(La sequenza di protezione @samp{\u} non @`e ammessa in modalit@`a POSIX.)
+
+Questa sequenza di protezione serve per indicare una lettera o un
+simbolo come specificato nella codifica Unicode.
+@command{gawk} dapprima converte le cifre cos@`{@dotless{i}} specificate in
+un numero intero, e poi traduce il ``carattere largo''
+cos@`{@dotless{i}} specificato nella codifica multibyte locale (anche se la
+codifica locale non @`e Unicode).  Se i byte specificati non
+rappresentano un carattere valido, il valore diviene @code{"?"}.
+
 @cindex @code{\} (barra inversa) @subentry @code{\/} (sequenza di protezione)
 @cindex barra inversa (@code{\}) @subentry @code{\/} (sequenza di protezione)
 @item \/
@@ -6399,7 +6437,6 @@ Le sequenze di protezione descritte
 @ifnotinfo
 prima
 @end ifnotinfo
-
 @iftex
 nella
 @end iftex
@@ -7522,6 +7559,20 @@ il carattere che fa da separatore fra i record.
 Altrimenti (in @command{gawk}), @code{RS} @`e valutata come espressione
 regolare.  Questo meccanismo @`e spiegato pi@`u in dettaglio qui sotto.
 
+@quotation NOTA
+Quando @command{gawk} @`e chiamato con l'opzione @option{--csv}, nulla
+di quanto descritto in
+@ifnotinfo
+questa
+@end ifnotinfo
+@ifinfo
+questo
+@end ifinfo
+@value{SECTION} @`e applicabile.
+@xref{Campi separati da virgola},
+per i dettagli.
+@end quotation
+
 @menu
 * awk divisione record::       Come @command{awk} standard divide i record.
 * gawk divisione record::      Come @command{gawk} divide i record.
@@ -8238,7 +8289,6 @@ I programmatori di shell notino:  @command{awk} 
@emph{non} usa il
 nome @code{IFS} che @`e usato dalle shell conformi a POSIX (come
 la Unix Bourne shell, @command{sh}, o Bash).
 
-@c FIXME: This needs reworking now that we have CSV
 @cindex @code{FS} (variabile) @subentry cambiare il valore della
 @cindex cambiare @subentry il valore di @code{FS} (variabile)
 Il valore di @code{FS} si pu@`o cambiare nel programma @command{awk} con
@@ -8250,10 +8300,10 @@ ricerca speciale
 @code{BEGIN}
 (@pxref{BEGIN/END}).
 Per esempio, qui impostiamo il valore di @code{FS} alla stringa
-@code{","}:
+@code{":"}:
 
 @example
-awk 'BEGIN @{ FS = "," @} ; @{ print $2 @}'
+awk 'BEGIN @{ FS = ":" @} ; @{ print $2 @}'
 @end example
 
 @cindex @code{BEGIN} (regola)
@@ -8261,7 +8311,7 @@ awk 'BEGIN @{ FS = "," @} ; @{ print $2 @}'
 Data la riga in input:
 
 @example
-John Q. Smith, 29 Oak St., Walamazoo, MI 42139
+John Q. Smith: 29 Oak St.: Walamazoo: MI 42139
 @end example
 
 @noindent
@@ -8277,7 +8327,7 @@ nome della persona dell'esempio che abbiamo appena usato 
potrebbe avere un
 titolo o un suffisso annesso, come:
 
 @example
-John Q. Smith, LXIX, 29 Oak St., Walamazoo, MI 42139
+John Q. Smith: LXIX: 29 Oak St.: Walamazoo: MI 42139
 @end example
 
 @noindent
@@ -8480,40 +8530,39 @@ si comporta in questo modo.
 @node Campi separati da virgola
 @subsection Lavorare con file CSV
 
-@cindex dati CSV (campi separati da virgola) @subentry analizzare con 
@code{FS} = ","
-@cindex CSV (campi separati da virgola) come dati @subentry analizzare con 
@code{FS} = ","
-@cindex Comma Separated Values (CSV) come dati @subentry analizzare con 
@code{FS} = ","
-@cindex campi separati da virgola (CSV) come dati @subentry analizzare con 
@code{FS} = ","
-@cindex @code{FS} (variabile) @subentry carattere "," come
-@cindex variabile @subentry @code{FS} @subentry carattere "," come
-@cindex @code{FS} (variabile) @subentry per analizzare file CSV
-@cindex variabile @subentry @code{FS} @subentry per analizzare file CSV
+@cindex CSV (dati con valori separati da virgola) @subentry record e campi
+@cindex dati CSV (dati con valori separati da virgola) @subentry record e campi
+@cindex campi separati da virgola (CSV) come dati @subentry record e campi
 Molti programmi di uso frequente si servono della virgola come separatore
 di campo, invece di usare lo spazio. [Normalmente i file in input
 a @command{gawk} hanno in questo caso come suffisso "csv",
-Comma Separated Value, ovvero Campi Separati da Virgola.]
+Comma Separated Value, ovvero Campi separati da virgola.]
 Questo @`e il caso in particolare per popolari fogli di calcolo.
 Non c'@`e uno standard accettato da tutti che regoli il formato di tali
 file, sebbene il documento
-@uref{http://www.ietf.org/rfc/rfc4180.txt, RFC 4180}
+@uref{http://www.ietf.org/rfc/rfc4180, RFC 4180}
 elenchi le pratiche normalmente seguite.
 
 Per decenni, chi voleva lavorare con file CSV in @command{awk}
 ha dovuto ``trovare da solo'' una soluzione. (Per esempio,
 @pxref{Separazione in base al contenuto}).
 Nel 2023, Brian Kernighan ha deciso di aggiungere un supporto
-iniziale per i file CSV alla sua versione di @command{awk}.
+per i file CSV alla sua versione di @command{awk}.
 Per restare allo stesso livello, anche @command{gawk} rende
 disponibile lo stesso supporto presente nella versione di Brian.
-Per usare dei file contenenti campi CSV, basta assegnare alla variabile
-@code{FS} una stringa che contiene solo una virgola,
-cos@`{@dotless{i}}: @samp{FS = ","}.
+Per usare dei file contenenti campi in formato CSV, basta
+chiamare @command{gawk} specificando come opzione
+@option{-k} oppure @option{--csv}.
 
 I campi nei file CSV sono separati da virgola.  Per consentire la
 presenza di una virgola all'interno di un campo (p.es. come parte
 di un dato), il campo pu@`o essere racchiuso fra doppi apici.
 Per consentire un doppio apice all'interno di un campo racchiuso fra
-doppi apici, si devono inserire due doppi apici.
+doppi apici, il campo stesso @empf{deve} essere racchiuso fra doppi apici
+e due doppi apici vanno specificati per ogni singolo doppio apice
+all'interno del campo.
+Il doppio apice che segnala l'inizio del campo dev'essere
+il primo carattere dopo la virgola [che segna l'inizio del campo].
 La tabella
 @ref{table-csv-examples} mostra alcuni esempi.
 
@@ -8529,22 +8578,48 @@ La tabella
 @end multitable
 @end float
 
-Il doppio apice che inizia un campo fra doppi apici
-dev'essere il primo carattere dopo la virgola.
+Inoltre, ed @`e qui che la situazione si ingarbuglia, all'interno
+di un campo fra doppi apici @`e consentito anche inserire
+il carattere a-capo!
+Per gestire una tale situazione, quando sta trattando un file CSV
+@command{gawk} analizza il file in input alla ricerca di
+caratteri a-capo che non siano racchiusi fra doppi apici.
+Quindi, se si utilizza l'opzione @option{--csv}, il modo
+di gestire i record utilizzando la variabile @code{RS}
+(@pxref{Record}) non viene utilizzato per nulla.
+
+Molti file CSV provengono da sistemi in cui il carattere di
+fine riga per file di testo @`e costituito dalla coppia di
+caratteri a-capo--ritorno-carrello.
+(CR-LF, @code{\r} seguito by @code{\n}).
+Per semplificare la vita, quando @command{gawk} tratta
+dei file CSV, scarta dall'input ogni carattere ritorno-carrello.
+
+Il comportamento della funzione @code{split()} (ancora non
+formalmente trattato, vedere @ref{Funzioni per stringhe})
+@`e leggermento differente quando si abbia a che fare con file CSV.
+Se @`e chiamato con due argomenti
+(@samp{split(@var{stringa}, @var{vettore})}), @code{split()}
+separa i campi con la logica CSV.
+In tutti gli altri casi, il comportamento @`e quello normale.
+
+Se si @`e specificato l'opzione @option{--csv}, l'elemento
+@code{PROCINFO["CSV"]} esister@`a, altrimenti non sar@`a disponibile.
+@xref{Variabili auto-assegnate}.
 
-Alcuni programmi che supportano dati in formato CSV consentono
-perfino di avere dei campi che includono dei caratteri a-capo
-(per esempio se un campo @`e un indirizzo postale).
-Questo @emph{non} @`e supportato n@'e in BWK @command{awk}, n@'e
-in @command{gawk}.  Non @`e possibile gestire simili situazioni
-usando solo le funzionalit@`a del linguaggio @command{awk},
-poich@'e @command{awk} divide preliminarmente l'input in
-record, e il separatore di record di default @`e il carattere
-a-capo.
-Quindi, ogni carattere a-capo presente in un campo segna
-semplicemente la fine del record.
+Infine, se si @`e specificato @option{--csv}, l'assegnazione di
+un vaalore a una delle variabile
+@code{FS}, @code{FIELDWIDTHS}, @code{FPAT}, o @code{RS}
+genera un messaggio di avvertimento.
 
-Questa funzionalit@`a @`e disabilitata in modalit@`a POSIX.
+Per amor di chiarezza, @command{gawk} considera come
+autoritativo per il file in input di tipo CSV
+il documento
+@uref{http://www.ietf.org/rfc/rfc4180, RFC 4180}.
+Non ci sono meccanismi che consentono di accettare file CSV
+in input che non rispettino tali specifiche, p.es. dei
+file che usino come carattere che separa i campi un
+punto-e-virgola al posto della virgola.
 
 @node Separatori campo da riga di comando
 @subsection Impostare @code{FS} dalla riga di comando
@@ -8737,6 +8812,10 @@ Il seguente elenco riassume come i campi vengono divisi, 
in base al valore
 di @code{FS} (@samp{==} significa ``@`e uguale a''):
 
 @table @code
+@item @asis{@command{gawk} @`e stato chiamato specificando l'opzione 
@option{--csv}}
+La divisione in campi segue le regole esposte in @ref{Campi separati da 
virgola}.
+Il valore di @code{FS} @`e ignorato.
+
 @item FS == " "
 I campi sono separati da uno o pi@`u spazi vuoti.  Gli spazi vuoti iniziali
 e finali sono ignorati.  Questo @`e il comportamento di default.
@@ -9046,6 +9125,10 @@ per un esempio di tale funzione).
 @node Separazione in base al contenuto
 @section Definire i campi in base al contenuto
 
+@strong{FIXME}: Quest'intera sezione dev'essere riscritta
+dopo che in @command{gawk} @`e stata introdotta la capacit@`a di analizzare
+file di tipo CSV. Ahim@`e.
+
 @menu
 * Ancora CSV::                  Ancora sui file CSV.
 * FS rispetto a FPAT::          Una differenza sottile.
@@ -9071,12 +9154,12 @@ parole, @code{FS} definisce cosa un campo @emph{non 
@`e}, invece di cosa
 Tuttavia, ci sono casi in cui effettivamente si ha bisogno di definire i campi
 in base a cosa essi sono, e non in base a cosa non sono.
 
-@cindex dati CSV (campi separati da virgola) @subentry analizzare con 
@code{FPAT}
 @cindex CSV (campi separati da virgola) come dati @subentry analizzare con 
@code{FPAT}
-@cindex Comma Separated Values (CSV) come dati @subentry analizzare con 
@code{FPAT}
+@cindex dati CSV (campi separati da virgola) @subentry analizzare con 
@code{FPAT}
 @cindex campi separati da virgola (CSV) come dati @subentry analizzare con 
@code{FPAT}
-Il caso pi@`u emblematico @`e quello dei dati cosiddetti @dfn{comma-separated
-value} (CSV).  Molti fogli elettronici, per esempio, possono esportare i dati
+Il caso pi@`u emblematico
+@`e quello dei dati di tipo CSV (campi separati da virgola).
+Molti fogli elettronici, per esempio, possono esportare i dati
 in file di testo, dove ogni record termina con un ritorno a capo e i campi
 sono separati tra loro da virgole. Se le virgole facessero solo da separatore
 fra i dati non ci sarebbero problemi.  Il problema sorge se uno dei campi
@@ -9344,7 +9427,9 @@ Il valore @`e @code{"FS"} se si usa la maniera normale di 
divisione dei campi,
 oppure @code{"FPAT"} se si una la divisione in campi in base al contenuto:
 
 @example
-if (PROCINFO["FS"] == "FS")
+if ("CSV" in PROCINFO)
+    @var{divisione in campi secondo le regole CSV} @dots{}
+else if (PROCINFO["FS"] == "FS")
     @var{divisione normale in campi} @dots{}
 else if (PROCINFO["FS"] == "FIELDWIDTHS")
     @var{divisione in campi a lunghezza fissa} @dots{}
@@ -9356,8 +9441,9 @@ else
 @end example
 
 Quest'informazione @`e utile se si sta scrivendo una funzione che
-deve cambiare provvisoriamente @code{FS} o @code{FIELDWIDTHS}, leggere alcuni
-record e poi ripristinare le inpostazioni originali.  Si veda
+deve cambiare provvisoriamente @code{FS}, @code{FIELDWIDTHS}, o
+@code{FPAT}, leggere alcuni
+record e poi tornale alle impostazioni originali.  Si veda
 (@pxref{Funzioni Passwd} per un esempio di una funzione di questo tipo.
 
 @node Righe multiple
@@ -10206,7 +10292,7 @@ Questo
 @value{SECTION} descrive una funzionalit@`a disponibile solo in
 @command{gawk}.
 
-Si pu@`o  specificare un tempo limite in millisecondi per leggere l'input dalla
+Si pu@`o specificare un tempo limite in millisecondi per leggere l'input dalla
 tastiera, da una @dfn{pipe} o da una comunicazione bidirezionale, compresi i
 @dfn{socket} TCP/IP.  Questo pu@`o essere fatto per input, per comando o per
 connessione, impostando un elemento speciale nel vettore @code{PROCINFO}
@@ -20608,12 +20694,6 @@ a inizio stringa viene messo in 
@code{@var{separatori}[0]} e ogni
 eventuale spazio bianco a fine stringa viene messo in
 @code{@var{separatori}[@var{n}]}, dove @var{n} @`e il valore restituito da
 @code{split()} (cio@`e il numero di elementi in @var{vettore}).
-Se la variabile @var{separacampo} @`e una virgola, e @command{gawk} non @`e
-in modalit@`a POSIX, la stringa viene suddivisa usando le regole di
-analisi dei file CSV, come richiesto dal separatore @code{FS}
-(@pxref{Campi separati da virgola}).  In questo caso il vettore 
@var{separatori}
-non viene popolato, perch@'e consisterebbe solo di elementi contenenti
-ciascuno una virgola.
 
 La funzione @code{split()} divide le stringhe in pezzi nello stesso
 modo in cui le righe in input sono divise in campi.  Per esempio:
@@ -20643,6 +20723,15 @@ separatori[2] = "-"
 @noindent
 Il valore restituito da questa chiamata a @code{split()} @`e tre.
 
+Se @command{gawk} @`e chiamato con l'opzione @option{--csv}, una chiamata
+a @code{split()} con due soli argomenti, divide la stringa usando le
+regole di analisi dei file di dati CSV, come esposto in
+@ref{Campi separati da virgola}.  Con tre o quattro argomenti,
+@code{split()} funzione come visto sopra.  La chiamata con quattro
+argomenti non avrebbe senso per i file CSV, poich@'e ogni elemento
+del vettore @var{separatori} consisterebbe semplicemente in una
+stringa che contiene una virgola.
+
 @cindex differenze tra @command{awk} e @command{gawk} @subentry funzione 
@code{split()}
 Come nella divisione in campi dei record in input, quando il valore di
 @var{separacampo} @`e @w{@code{" "}}, gli spazi bianchi a inizio e fine stringa
@@ -23491,8 +23580,66 @@ un errore fatale, quindi @command{awk} non arriver@`a 
a segnalare il secondo
 errore.  Se si commenta la prima chiamata e si riesegue il
 programma, a quel punto @command{awk} terminer@`a con un messaggio
 relativo al secondo errore.
-Solitamente queste cose non causano grossi problemi, ma @`e bene
-esserne a conoscenza.
+
+Ecco un esempio pi@`u complesso:
+
+@example
+BEGIN @{
+    funky(a)
+    if (A == 0)
+        print "<" a ">"
+    else
+        print a[1]
+@}
+
+function funky(arr)
+@{
+    if (A == 0)
+        arr = 1
+    else
+        arr[1] = 1
+@}
+@end example
+
+In questo esempio, la funzione usa il parametro che le viene
+passato in modo differente a seconda del valore della variabile
+globale @code{A}.
+Se @code{A} vale zero, il parametro @code{arr} @`e trattato come una
+variabile scalare.  Altrimenti @`e trattato come un vettore.
+
+Ci sono due modi in cui questo programma potrebbe comportarsi.
+@command{awk} potrebbe determinare che, nel programma principale
+@code{a} ha un indice (ossia @`e un elemento di un vettore), e quindi
+considerarlo un vettore (nella fase di analisi del programma, ossia
+prima ancora che il programma inizi la sua esecuzione.
+BWK @code{awk}, @code{mawk}, e forse altri fanno questo:
+
+@example
+$ @kbd{mawk -v A=0 -f funky.awk}
+@error{} mawk: funky.awk: line 6: illegal reference to variable a
+@error{} mawk: funky.awk: line 14: illegal reference to local variable arr
+$ @kbd{mawk -v A=1 -f funky.awk}
+@error{} mawk: funky.awk: line 6: illegal reference to variable a
+@error{} mawk: funky.awk: line 14: illegal reference to local variable arr
+@end example
+
+Oppure @command{awk} potrebbe attendere il momento in cui l'istruzione
+viene eseguita, per determinare il tipo della variabile @code{a}.
+In tal caso, poich@'e @code{a} non @`e ancora stato usato prima di essere
+passato alla funzione, l'uso che ne fa la funzione determina il tipo
+della variabile, che quindi pu@`o diventare scalare o vettoriale.
+@command{gawk} e MKS @command{awk} si comportano cos@`{@dotless{i}}:
+
+@example
+$ @kbd{gawk -v A=0 -f funky.awk}
+@print{} <>
+$ @kbd{gawk -v A=1 -f funky.awk }
+@print{} 1
+@end example
+
+POSIX non specifica quale dei due comportamenti sia quello corretto,
+quindi occorre essere consapevoli che differenti implementazioni di
+@command{awk} si comportano in modi diversi.
 
 @node Chiamate indirette
 @section Chiamate indirette di funzione
@@ -45772,6 +45919,10 @@ Divisione in campi per file di tipo CSV (Campi 
separati da virgola)
 La possibilit@`a che @command{gawk} bufferizzi l'output a @dfn{pipe}
 (@pxref{Noflush}).
 
+@item
+La sequenza di protezione @samp{\u}
+(@pxref{Sequenze di protezione}).
+
 @item
 La necessit@`a di utilizzare la libreria GNU @code{libsigsegv}
 @`e stata rimossa da @command{gawk}.
diff --git a/doc/it/texinfo.tex b/doc/it/texinfo.tex
old mode 100644
new mode 100755
index 1010636c..795e85da
--- a/doc/it/texinfo.tex
+++ b/doc/it/texinfo.tex
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2023-01-02.21}
+\def\texinfoversion{2023-03-21.06}
 %
 % Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc.
 %
@@ -2701,25 +2701,21 @@ end
 }
 \setregularquotes
 
-% Allow an option to not use regular directed right quote/apostrophe
-% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
-% The undirected quote is ugly, so don't make it the default, but it
-% works for pasting with more pdf viewers (at least evince), the
-% lilypond developers report.  xpdf does work with the regular 0x27.
+% output for ' in @code
+% in tt font hex 0D (undirected) or 27 (curly right quote)
 %
 \def\codequoteright{%
   \ifusingtt
       {\ifflagclear{txicodequoteundirected}%
           {\ifflagclear{codequoteundirected}%
               {'}%
-              {\char'15 }}%
-          {\char'15 }}%
+              {\char"0D }}%
+          {\char"0D }}%
       {'}%
 }
 
-% and a similar option for the left quote char vs. a grave accent.
-% Modern fonts display ASCII 0x60 as a grave accent, so some people like
-% the code environments to do likewise.
+% output for ` in @code
+% in tt font hex 12 (grave accent) or 60 (curly left quote)
 % \relax disables Spanish ligatures ?` and !` of \tt font.
 %
 \def\codequoteleft{%
@@ -2727,8 +2723,8 @@ end
       {\ifflagclear{txicodequotebacktick}%
           {\ifflagclear{codequotebacktick}%
               {\relax`}%
-              {\char'22 }}%
-          {\char'22 }}%
+              {\char"12 }}%
+          {\char"12 }}%
       {\relax`}%
 }
 
@@ -2747,7 +2743,7 @@ end
     \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
   \fi\fi
 }
-%
+
 \parseargdef\codequotebacktick{%
   \def\temp{#1}%
   \ifx\temp\onword
@@ -2762,6 +2758,11 @@ end
   \fi\fi
 }
 
+% Turn them on by default
+\let\SETtxicodequoteundirected = t
+\let\SETtxicodequotebacktick = t
+
+
 % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
 \def\noligaturesquoteleft{\relax\lq}
 
@@ -2947,10 +2948,6 @@ end
      \let-\dashnobreak
      \let_\realunder
     \fi
-    % Given -foo (with a single dash), we do not want to allow a break
-    % after the hyphen.
-    \global\let\codedashprev=\codedash
-    %
     \codex
   }
   %
@@ -2960,21 +2957,30 @@ end
     %
     % Now, output a discretionary to allow a line break, unless
     % (a) the next character is a -, or
-    % (b) the preceding character is a -.
+    % (b) the preceding character is a -, or
+    % (c) we are at the start of the string.
+    % In both cases (b) and (c), \codedashnobreak should be set to \codedash.
+    %
     % E.g., given --posix, we do not want to allow a break after either -.
     % Given --foo-bar, we do want to allow a break between the - and the b.
     \ifx\next\codedash \else
-      \ifx\codedashprev\codedash
+      \ifx\codedashnobreak\codedash
       \else \discretionary{}{}{}\fi
     \fi
     % we need the space after the = for the case when \next itself is a
     % space token; it would get swallowed otherwise.  As in @code{- a}.
-    \global\let\codedashprev= \next
+    \global\let\codedashnobreak= \next
   }
 }
 \def\normaldash{-}
 %
-\def\codex #1{\tclose{#1}\endgroup}
+\def\codex #1{\tclose{%
+  % Given -foo (with a single dash), we do not want to allow a break
+  % after the -.  \codedashnobreak is set to the first character in
+  % @code.
+  \futurelet\codedashnobreak\relax
+  #1%
+}\endgroup}
 
 \def\codeunder{%
   % this is all so @math{@code{var_name}+1} can work.  In math mode, _
@@ -3968,33 +3974,23 @@ $$%
 
 \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
 
-% When we turn headings on, set the page number to 1.
+% Set the page number to 1.
 \def\pageone{
   \global\pageno=1
   \global\arabiccount = \pagecount
 }
 
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{%
-\pageone
-\HEADINGSdoublex
-}
 \let\contentsalignmacro = \chappager
 
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{%
-\pageone
-\HEADINGSsinglex
-}
 % \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon
 
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdouble}
 \let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
+\def\HEADINGSdouble{%
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\folio\hfil\thistitle}}
@@ -4004,8 +4000,10 @@ $$%
 \global\let\contentsalignmacro = \chapoddpage
 }
 
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsingle}
+\def\HEADINGSsingle{%
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\thischapter\hfil\folio}}
@@ -4017,7 +4015,6 @@ $$%
 
 % for @setchapternewpage off
 \def\HEADINGSsinglechapoff{%
-\pageone
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\thischapter\hfil\folio}}
@@ -4743,13 +4740,11 @@ $$%
 % except not \outer, so it can be used within macros and \if's.
 \edef\newwrite{\makecsname{ptexnewwrite}}
 
-% \newindex {foo} defines an index named IX.
+% \newindex {IX} defines an index named IX.
 % It automatically defines \IXindex such that
 % \IXindex ...rest of line... puts an entry in the index IX.
 % It also defines \IXindfile to be the number of the output channel for
 % the file that accumulates this index.  The file's extension is IX.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
 %
 \def\newindex#1{%
   \expandafter\chardef\csname#1indfile\endcsname=0
@@ -5007,7 +5002,7 @@ $$%
   \commondummyword\ampchar          {\normalamp}%
   \commondummyword\atchar           {\@}%
   \commondummyword\arrow            {->}%
-  \commondummyword\backslashchar    {}%
+  \commondummyword\backslashchar    {\realbackslash}%
   \commondummyword\bullet           {bullet}%
   \commondummyword\comma            {,}%
   \commondummyword\copyright        {copyright}%
@@ -5107,9 +5102,6 @@ $$%
   %
   % We need to get rid of all macros, leaving only the arguments (if present).
   % Of course this is not nearly correct, but it is the best we can do for now.
-  % makeinfo does not expand macros in the argument to @deffn, which ends up
-  % writing an index entry, and texindex isn't prepared for an index sort entry
-  % that starts with \.
   %
   % Since macro invocations are followed by braces, we can just redefine them
   % to take a single TeX argument.  The case of a macro invocation that
@@ -7414,6 +7406,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 \def\setupverb{%
   \tt
   \def\par{\leavevmode\endgraf}%
+  \parindent = 0pt
   \setcodequotes
   \tabeightspaces
   % Respect line breaks,
@@ -7589,11 +7582,6 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \exdentamount=\defbodyindent
 }
 
-\newtoks\defidx
-\newtoks\deftext
-
-\def\useindex#1{\defidx={#1}\ignorespaces}
-
 % Called as \printdefunline \deffooheader{text}
 %
 \def\printdefunline#1#2{%
@@ -7601,10 +7589,6 @@ might help (with 'rm \jobname.?? \jobname.??s')%
     \plainfrenchspacing
     % call \deffooheader:
     #1#2 \endheader
-    % create the index entry
-    \defcharsdefault
-    \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}%
-    \temp
     % common ending:
     \interlinepenalty = 10000
     \advance\rightskip by 0pt plus 1fil\relax
@@ -7619,6 +7603,24 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 
 \def\Edefun{\endgraf\medbreak}
 
+% @defblock, @defline do not automatically create index entries
+\envdef\defblock{%
+  \startdefun
+}
+\let\Edefblock\Edefun
+
+\def\defline{%
+  \doingtypefnfalse
+  \parseargusing\activeparens{\printdefunline\deflineheader}%
+}
+\def\deflineheader#1 #2 #3\endheader{%
+  \printdefname{#1}{}{#2}\magicamp\defunargs{#3\unskip}%
+}
+\def\deftypeline{%
+  \doingtypefntrue
+  \parseargusing\activeparens{\printdefunline\deflineheader}%
+}
+
 % \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) }
 %
 % Define \deffoo, \deffoox  \Edeffoo and \deffooheader.
@@ -7670,56 +7672,51 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \fi\fi
 }
 
-\def\defind#1#2{
-  \defidx={#1}%
-  \deftext={#2}%
-}
-
 % Untyped functions:
 
 % @deffn category name args
 \makedefun{deffn}#1 #2 #3\endheader{%
-  \defind{fn}{\code{#2}}%
-  \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}%
+  \doind{fn}{\code{#2}}%
+  \printdefname{#1}{}{#2}\magicamp\defunargs{#3\unskip}%
 }
 
 % @defop category class name args
 \makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}}
 \def\defopheaderx#1#2 #3 #4\endheader{%
-  \defind{fn}{\code{#3}\space\putwordon\ \code{#2}}%
-  \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}%
+  \doind{fn}{\code{#3}\space\putwordon\ \code{#2}}%
+  \printdefname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}%
 }
 
 % Typed functions:
 
 % @deftypefn category type name args
 \makedefun{deftypefn}#1 #2 #3 #4\endheader{%
-  \defind{fn}{\code{#3}}%
+  \doind{fn}{\code{#3}}%
   \doingtypefntrue
-  \defname{#1}{#2}{#3}\defunargs{#4\unskip}%
+  \printdefname{#1}{#2}{#3}\defunargs{#4\unskip}%
 }
 
 % @deftypeop category class type name args
 \makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}}
 \def\deftypeopheaderx#1#2 #3 #4 #5\endheader{%
-  \defind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}%
+  \doind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}%
   \doingtypefntrue
-  \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}%
+  \printdefname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}%
 }
 
 % Typed variables:
 
 % @deftypevr category type var args
 \makedefun{deftypevr}#1 #2 #3 #4\endheader{%
-  \defind{vr}{\code{#3}}%
-  \defname{#1}{#2}{#3}\defunargs{#4\unskip}%
+  \doind{vr}{\code{#3}}%
+  \printdefname{#1}{#2}{#3}\defunargs{#4\unskip}%
 }
 
 % @deftypecv category class type var args
 \makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}}
 \def\deftypecvheaderx#1#2 #3 #4 #5\endheader{%
-  \defind{vr}{\code{#4}\space\putwordof\ \code{#2}}%
-  \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}%
+  \doind{vr}{\code{#4}\space\putwordof\ \code{#2}}%
+  \printdefname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}%
 }
 
 % Untyped variables:
@@ -7735,8 +7732,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 
 % @deftp category name args
 \makedefun{deftp}#1 #2 #3\endheader{%
-  \defind{tp}{\code{#2}}%
-  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+  \doind{tp}{\code{#2}}%
+  \printdefname{#1}{}{#2}\defunargs{#3\unskip}%
 }
 
 % Remaining @defun-like shortcuts:
@@ -7752,14 +7749,14 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 \makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof}
 \makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof}
 
-% \defname, which formats the name of the @def (not the args).
+% \printdefname, which formats the name of the @def (not the args).
 % #1 is the category, such as "Function".
 % #2 is the return type, if any.
 % #3 is the function name.
 %
 % We are followed by (but not passed) the arguments, if any.
 %
-\def\defname#1#2#3{%
+\def\printdefname#1#2#3{%
   \par
   % Get the values of \leftskip and \rightskip as they were outside the @def...
   \advance\leftskip by -\defbodyindent
@@ -7884,7 +7881,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 
 % If we encounter &foo, then turn on ()-hacking afterwards
 \newif\ifampseen
-\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+\def\amprm#1 {\ampseentrue{\rm\&#1 }}
 
 \def\parenfont{%
   \ifampseen
@@ -8208,12 +8205,12 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 %
 % We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
 % body to be transformed.
-% Set \macrobody to the body of the macro, and call \defmacro.
+% Set \macrobody to the body of the macro, and call \macrodef.
 %
 {\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{%
-\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}%
+\xdef\macrobody{\eatcr{#1}}\endgroup\macrodef}}%
 {\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{%
-\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}%
+\xdef\macrobody{\eatcr{#1}}\endgroup\macrodef}}%
 
 % Make @ a letter, so that we can make private-to-Texinfo macro names.
 \edef\texiatcatcode{\the\catcode`\@}
@@ -8432,16 +8429,17 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 % \xdef is used so that macro definitions will survive the file
 % they're defined in: @include reads the file inside a group.
 %
-\def\defmacro{%
+\def\macrodef{%
   \let\hash=##% convert placeholders to macro parameter chars
   \ifnum\paramno=1
-    \def\xeatspaces##1{##1}%
-    % This removes the pair of braces around the argument.  We don't
-    % use \eatspaces, because this can cause ends of lines to be lost
-    % when the argument to \eatspaces is read, leading to line-based
-    % commands like "@itemize" not being read correctly.
+    \long\def\xeatspaces##1{##1}%
+    % We don't use \xeatspaces for single-argument macros, because we
+    % want to keep ends of lines.  This definition removes \xeatspaces
+    % when \macrobody is expanded below.
   \else
-    \let\xeatspaces\relax % suppress expansion
+    \def\xeatspaces{\string\xeatspaces}%
+    % This expands \xeatspaces as a sequence of character tokens, which
+    % stops \scantokens inserting an extra space after the control sequence.
   \fi
   \ifcase\paramno
   % 0
@@ -8607,6 +8605,75 @@ might help (with 'rm \jobname.?? \jobname.??s')%
   \fi \macnamexxx}
 
 
+% @linemacro
+
+\parseargdef\linemacro{%
+  \getargs{#1}% now \macname is the macname and \argl the arglist
+  \ifx\argl\empty
+    \paramno=0
+    \let\hash\relax
+    \def\paramlist{\hash 1\endlinemacro}%
+  \else
+    \expandafter\linegetparamlist\argl;%
+  \fi
+  \begingroup \macrobodyctxt \usembodybackslash
+  \parselinemacrobody
+}
+
+% Build up \paramlist which will be used as the parameter text for the macro.
+% At the end it will be like "#1 #2 #3\endlinemacro".
+\def\linegetparamlist#1;{%
+  \paramno=0\def\paramlist{}%
+  \let\hash\relax
+  \linegetparamlistxxx#1,;,%
+}
+\def\linegetparamlistxxx#1,{%
+  \if#1;\let\next=\linegetparamlistxxxx
+  \else \let\next=\linegetparamlistxxx
+    \advance\paramno by 1
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\hash\the\paramno}%
+    \edef\paramlist{\paramlist\hash\the\paramno\space}%
+  \fi\next}
+\def\linegetparamlistxxxx{%
+  \expandafter\fixparamlist\paramlist\fixparamlist
+}
+% Replace final space token
+\def\fixparamlist#1 \fixparamlist{%
+  \def\paramlist{#1\endlinemacro}%
+}
+
+% Read the body of the macro, replacing backslash-surrounded variables
+%
+{\catcode`\ =\other\long\gdef\parselinemacrobody#1@end linemacro{%
+\xdef\macrobody{#1}%
+\endgroup
+\linemacrodef
+}}
+
+% Make the definition
+\def\linemacrodef{%
+  \let\hash=##%
+  \expandafter\xdef\csname\the\macname\endcsname{%
+    \bgroup
+    \noexpand\parsearg
+    \expandafter\noexpand\csname\the\macname @@\endcsname
+  }
+  \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+    \egroup
+    \expandafter\noexpand
+    \csname\the\macname @@@\endcsname##1\noexpand\endlinemacro
+  }
+  \expandafter\expandafter
+  \expandafter\xdef
+  \expandafter\expandafter\csname\the\macname @@@\endcsname\paramlist{%
+    \newlinechar=13 % split \macrobody into lines
+    \noexpand\scantokens{\macrobody}%
+  }
+}
+
+
+
 % @alias.
 % We need some trickery to remove the optional spaces around the equal
 % sign.  Make them active and then expand them all to nothing.
@@ -9598,8 +9665,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
 %
 \def\caption{\docaption\thiscaption}
 \def\shortcaption{\docaption\thisshortcaption}
-\def\docaption{\checkenv\float \bgroup\scanctxt\defcaption}
-\def\defcaption#1#2{\egroup \def#1{#2}}
+\def\docaption{\checkenv\float \bgroup\scanctxt\docaptionz}
+\def\docaptionz#1#2{\egroup \def#1{#2}}
 
 % The parameter is the control sequence identifying the counter we are
 % going to use.  Create it if it doesn't exist and assign it to \floatno.
@@ -11806,4 +11873,3 @@ directory should work if nowhere else does.}
 @c End:
 
 @newlineloadsconf
-

-----------------------------------------------------------------------

Summary of changes:
 doc/it/ChangeLog   |   6 ++
 doc/it/gawk.1      |  26 ++++++
 doc/it/gawktexi.in | 257 ++++++++++++++++++++++++++++++++++++++++++-----------
 doc/it/texinfo.tex | 252 ++++++++++++++++++++++++++++++++-------------------
 4 files changed, 395 insertions(+), 146 deletions(-)
 mode change 100644 => 100755 doc/it/gawk.1
 mode change 100644 => 100755 doc/it/texinfo.tex


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]