]> git.pld-linux.org Git - packages/gawk.git/blame - gawk-4.2.1-000-add-support-for-a-and-A-in-printf.patch
- rel 2; upstream fixes used in fc
[packages/gawk.git] / gawk-4.2.1-000-add-support-for-a-and-A-in-printf.patch
CommitLineData
9169c9b5
AM
1From 51e6897a1dc72dd5e39921e8a1c8fa4efb568ca6 Mon Sep 17 00:00:00 2001
2From: "Arnold D. Robbins" <arnold@skeeve.com>
3Date: Thu, 22 Mar 2018 18:37:52 +0200
4Subject: [PATCH] Add support for %a and %A in printf.
5
6---
7 NEWS | 5 +
8 builtin.c | 31 +-
9 configh.in | 3 +
10 configure | 42 +++
11 configure.ac | 28 ++
12 doc/awkcard.in | 1 +
13 doc/gawk.1 | 12 +-
14 doc/gawk.info | 925 ++++++++++++++++++++++++++++----------------------------
15 doc/gawk.texi | 19 ++
16 doc/gawktexi.in | 19 ++
17 doc/wordlist | 2 +
18 doc/wordlist2 | 1 +
19 pc/config.h | 3 +
20 pc/config.sed | 2 +
21 14 files changed, 631 insertions(+), 462 deletions(-)
22
23diff --git a/NEWS b/NEWS
24index c2885c8..71d9608 100644
25--- a/NEWS
26+++ b/NEWS
27@@ -5,6 +5,11 @@
28 are permitted in any medium without royalty provided the copyright
29 notice and this notice are preserved.
30
31+Changes from 4.2.1 to 4.2.2
32+---------------------------
33+
34+1. Support for the POSIX standard %a and %A formats has been added.
35+
36 Changes from 4.2.0 to 4.2.1
37 ---------------------------
38
39diff --git a/builtin.c b/builtin.c
40index 6927205..c54be9b 100644
41--- a/builtin.c
42+++ b/builtin.c
43@@ -1493,6 +1493,17 @@ mpf1:
44 case 'e':
45 case 'f':
46 case 'E':
47+#if defined(PRINTF_HAS_A_FORMAT) && PRINTF_HAS_A_FORMAT == 1
48+ case 'A':
49+ case 'a':
50+ {
51+ static bool warned = false;
52+ if (do_lint && tolower(cs1) == 'a' && ! warned) {
53+ warned = true;
54+ lintwarn(_("%%%c format is POSIX standard but not portable to other awks"), cs1);
55+ }
56+ }
57+#endif
58 need_format = false;
59 parse_next_arg();
60 (void) force_number(arg);
61@@ -1557,11 +1568,21 @@ mpf1:
62 break;
63 #endif
64 default:
65- sprintf(cp, "*.*%c", cs1);
66- while ((nc = snprintf(obufout, ofre, cpbuf,
67- (int) fw, (int) prec,
68- (double) tmpval)) >= ofre)
69- chksize(nc)
70+ if (have_prec || tolower(cs1) != 'a') {
71+ sprintf(cp, "*.*%c", cs1);
72+ while ((nc = snprintf(obufout, ofre, cpbuf,
73+ (int) fw, (int) prec,
74+ (double) tmpval)) >= ofre)
75+ chksize(nc)
76+ } else {
77+ // For %a and %A, use the default precision if it
78+ // wasn't supplied by the user.
79+ sprintf(cp, "*%c", cs1);
80+ while ((nc = snprintf(obufout, ofre, cpbuf,
81+ (int) fw,
82+ (double) tmpval)) >= ofre)
83+ chksize(nc)
84+ }
85 }
86
87 #if defined(LC_NUMERIC)
88diff --git a/configh.in b/configh.in
89index e600005..8c4d94d 100644
90--- a/configh.in
91+++ b/configh.in
92@@ -368,6 +368,9 @@
93 /* Define to the version of this package. */
94 #undef PACKAGE_VERSION
95
96+/* Define to 1 if *printf supports %a format */
97+#undef PRINTF_HAS_A_FORMAT
98+
99 /* Define to 1 if *printf supports %F format */
100 #undef PRINTF_HAS_F_FORMAT
101
102diff --git a/configure b/configure
103index 2283f09..f492a75 100755
104--- a/configure
105+++ b/configure
106@@ -10210,6 +10210,48 @@ fi
107 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_f_format" >&5
108 $as_echo "$has_f_format" >&6; }
109
110+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for printf %a format" >&5
111+$as_echo_n "checking for printf %a format... " >&6; }
112+if test "$cross_compiling" = yes; then :
113+ has_a_format=no
114+else
115+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
116+/* end confdefs.h. */
117+
118+
119+#include <stdio.h>
120+
121+int main()
122+{
123+ char buf[100];
124+
125+ sprintf(buf, "%a", 8.0);
126+
127+ if (strncmp(buf, "0x", 2) == 0)
128+ return 0;
129+ else
130+ return 1;
131+}
132+
133+_ACEOF
134+if ac_fn_c_try_run "$LINENO"; then :
135+ has_a_format=yes
136+else
137+ has_a_format=no
138+fi
139+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
140+ conftest.$ac_objext conftest.beam conftest.$ac_ext
141+fi
142+
143+if test "$has_a_format" = yes
144+then
145+
146+$as_echo "#define PRINTF_HAS_A_FORMAT 1" >>confdefs.h
147+
148+fi
149+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_a_format" >&5
150+$as_echo "$has_a_format" >&6; }
151+
152
153 gawk_have_sockets=no
154 # Check for system-dependent location of socket libraries
155diff --git a/configure.ac b/configure.ac
156index f45c710..a4817ee 100644
157--- a/configure.ac
158+++ b/configure.ac
159@@ -395,6 +395,34 @@ then
160 fi
161 AC_MSG_RESULT($has_f_format)
162
163+dnl check for printf %a format
164+AC_MSG_CHECKING([for printf %a format])
165+AC_RUN_IFELSE([
166+AC_LANG_SOURCE([
167+#include <stdio.h>
168+
169+int main()
170+{
171+ char buf[[100]];
172+
173+ sprintf(buf, "%a", 8.0);
174+
175+ if (strncmp(buf, "0x", 2) == 0)
176+ return 0;
177+ else
178+ return 1;
179+}
180+])],
181+ has_a_format=yes,
182+ has_a_format=no,
183+ has_a_format=no dnl Cross-compiling, assuming the worst.
184+)
185+if test "$has_a_format" = yes
186+then
187+ AC_DEFINE(PRINTF_HAS_A_FORMAT, 1, [Define to 1 if *printf supports %a format])
188+fi
189+AC_MSG_RESULT($has_a_format)
190+
191 dnl check for sockets
192 GAWK_AC_LIB_SOCKETS
193
194diff --git a/doc/awkcard.in b/doc/awkcard.in
195index 1148294..d4df342 100644
196--- a/doc/awkcard.in
197+++ b/doc/awkcard.in
198@@ -1431,6 +1431,7 @@ the error.\*(CX
199 accept the following conversion specification formats:
200 .sp .5
201 .nf
202+\*(CB\*(FC%a\fP, \*(FC%A\fP A C99 floating point hexadecimal number\*(CD
203 \*(FC%c\fP An \s-1ASCII\s+1 character
204 \*(FC%d\fP, \*(FC%i\fP A decimal number (the integer part)
205 \*(FC%e\fP A floating point number of the form
206diff --git a/doc/gawk.1 b/doc/gawk.1
207index 16762a8..48c07b7 100644
208--- a/doc/gawk.1
209+++ b/doc/gawk.1
210@@ -13,7 +13,7 @@
211 . if \w'\(rq' .ds rq "\(rq
212 . \}
213 .\}
214-.TH GAWK 1 "Feb 15 2018" "Free Software Foundation" "Utility Commands"
215+.TH GAWK 1 "Mar 22 2018" "Free Software Foundation" "Utility Commands"
216 .SH NAME
217 gawk \- pattern scanning and processing language
218 .SH SYNOPSIS
219@@ -1264,7 +1264,7 @@ behavior:
220 \fBPROCINFO["NONFATAL"]\fR
221 If this exists, then I/O errors for all redirections become nonfatal.
222 .TP
223-\fBPROCINFO["\fname\fB", "NONFATAL"]\fR
224+\fBPROCINFO["\fIname\fB", "NONFATAL"]\fR
225 Make I/O errors for
226 .I name
227 be nonfatal.
228@@ -2429,6 +2429,14 @@ function
229 (see below)
230 accept the following conversion specification formats:
231 .TP "\w'\fB%g\fR, \fB%G\fR'u+2n"
232+.BR "%a" "," " %A"
233+A floating point number of the form
234+[\fB\-\fP]\fB0x\fIh\fB.\fIhhhh\fBp+\-\fIdd\fR
235+(C99 hexadecimal floating point format).
236+For
237+.BR %A ,
238+uppercase letters are used instead of lowercase ones.
239+.TP
240 .B %c
241 A single character.
242 If the argument used for
243diff --git a/doc/gawk.info b/doc/gawk.info
244index 738de09..c01e43b 100644
245--- a/doc/gawk.info
246+++ b/doc/gawk.info
247@@ -6614,6 +6614,21 @@ print. The rest of the format specifier is made up of optional
248 "modifiers" that control _how_ to print the value, such as the field
249 width. Here is a list of the format-control letters:
250
251+'%a', '%A'
252+ A floating point number of the form ['-']'0xH.HHHHp+-DD' (C99
253+ hexadecimal floating point format). For '%A', uppercase letters
254+ are used instead of lowercase ones.
255+
256+ NOTE: While the current POSIX standard requires support for
257+ '%a' and '%A' in 'awk', as far as we know, no other version of
258+ 'awk' actually implements it. It's use is thus highly
259+ nonportable!
260+
261+ Furthermore, these formats are not available on any system
262+ where the underlying C library 'printf()' function does not
263+ support them. As of this writing, among current systems, only
264+ OpenVMS is known to not support them.
265+
266 '%c'
267 Print a number as a character; thus, 'printf "%c", 65' outputs the
268 letter 'A'. The output for a string value is the first character
269@@ -33759,9 +33774,9 @@ Index
270 * dark corner, FILENAME variable: Getline Notes. (line 19)
271 * dark corner, FILENAME variable <1>: Auto-set. (line 108)
272 * dark corner, FNR/NR variables: Auto-set. (line 389)
273-* dark corner, format-control characters: Control Letters. (line 18)
274+* dark corner, format-control characters: Control Letters. (line 33)
275 * dark corner, format-control characters <1>: Control Letters.
276- (line 93)
277+ (line 108)
278 * dark corner, FS as null string: Single Character Fields.
279 (line 20)
280 * dark corner, input files: awk split records. (line 110)
281@@ -34459,8 +34474,8 @@ Index
282 * gawk, FIELDWIDTHS variable in: Fixed width data. (line 17)
283 * gawk, FIELDWIDTHS variable in <1>: User-modified. (line 37)
284 * gawk, file names in: Special Files. (line 6)
285-* gawk, format-control characters: Control Letters. (line 18)
286-* gawk, format-control characters <1>: Control Letters. (line 93)
287+* gawk, format-control characters: Control Letters. (line 33)
288+* gawk, format-control characters <1>: Control Letters. (line 108)
289 * gawk, FPAT variable in: Splitting By Content.
290 (line 25)
291 * gawk, FPAT variable in <1>: User-modified. (line 46)
292@@ -36129,456 +36144,456 @@ Node: OFMT\7f288591
293 Node: Printf\7f289947
294 Node: Basic Printf\7f290732
295 Node: Control Letters\7f292306
296-Node: Format Modifiers\7f296302
297-Node: Printf Examples\7f302317
298-Node: Redirection\7f304803
299-Node: Special FD\7f311644
300-Ref: Special FD-Footnote-1\7f314812
301-Node: Special Files\7f314886
302-Node: Other Inherited Files\7f315503
303-Node: Special Network\7f316504
304-Node: Special Caveats\7f317364
305-Node: Close Files And Pipes\7f318313
306-Ref: table-close-pipe-return-values\7f325220
307-Ref: Close Files And Pipes-Footnote-1\7f326033
308-Ref: Close Files And Pipes-Footnote-2\7f326181
309-Node: Nonfatal\7f326333
310-Node: Output Summary\7f328671
311-Node: Output Exercises\7f329893
312-Node: Expressions\7f330572
313-Node: Values\7f331760
314-Node: Constants\7f332438
315-Node: Scalar Constants\7f333129
316-Ref: Scalar Constants-Footnote-1\7f333993
317-Node: Nondecimal-numbers\7f334243
318-Node: Regexp Constants\7f337244
319-Node: Using Constant Regexps\7f337770
320-Node: Standard Regexp Constants\7f338392
321-Node: Strong Regexp Constants\7f341580
322-Node: Variables\7f344538
323-Node: Using Variables\7f345195
324-Node: Assignment Options\7f347105
325-Node: Conversion\7f348978
326-Node: Strings And Numbers\7f349502
327-Ref: Strings And Numbers-Footnote-1\7f352565
328-Node: Locale influences conversions\7f352674
329-Ref: table-locale-affects\7f355432
330-Node: All Operators\7f356050
331-Node: Arithmetic Ops\7f356679
332-Node: Concatenation\7f359185
333-Ref: Concatenation-Footnote-1\7f362032
334-Node: Assignment Ops\7f362139
335-Ref: table-assign-ops\7f367130
336-Node: Increment Ops\7f368443
337-Node: Truth Values and Conditions\7f371903
338-Node: Truth Values\7f372977
339-Node: Typing and Comparison\7f374025
340-Node: Variable Typing\7f374845
341-Ref: Variable Typing-Footnote-1\7f381308
342-Ref: Variable Typing-Footnote-2\7f381380
343-Node: Comparison Operators\7f381457
344-Ref: table-relational-ops\7f381876
345-Node: POSIX String Comparison\7f385371
346-Ref: POSIX String Comparison-Footnote-1\7f387066
347-Ref: POSIX String Comparison-Footnote-2\7f387205
348-Node: Boolean Ops\7f387289
349-Ref: Boolean Ops-Footnote-1\7f391771
350-Node: Conditional Exp\7f391863
351-Node: Function Calls\7f393599
352-Node: Precedence\7f397476
353-Node: Locales\7f401135
354-Node: Expressions Summary\7f402767
355-Node: Patterns and Actions\7f405340
356-Node: Pattern Overview\7f406460
357-Node: Regexp Patterns\7f408137
358-Node: Expression Patterns\7f408679
359-Node: Ranges\7f412460
360-Node: BEGIN/END\7f415568
361-Node: Using BEGIN/END\7f416329
362-Ref: Using BEGIN/END-Footnote-1\7f419065
363-Node: I/O And BEGIN/END\7f419171
364-Node: BEGINFILE/ENDFILE\7f421485
365-Node: Empty\7f424398
366-Node: Using Shell Variables\7f424715
367-Node: Action Overview\7f426989
368-Node: Statements\7f429314
369-Node: If Statement\7f431162
370-Node: While Statement\7f432657
371-Node: Do Statement\7f434685
372-Node: For Statement\7f435833
373-Node: Switch Statement\7f439004
374-Node: Break Statement\7f441390
375-Node: Continue Statement\7f443482
376-Node: Next Statement\7f445309
377-Node: Nextfile Statement\7f447692
378-Node: Exit Statement\7f450344
379-Node: Built-in Variables\7f452747
380-Node: User-modified\7f453880
381-Node: Auto-set\7f461647
382-Ref: Auto-set-Footnote-1\7f477946
383-Ref: Auto-set-Footnote-2\7f478152
384-Node: ARGC and ARGV\7f478208
385-Node: Pattern Action Summary\7f482421
386-Node: Arrays\7f484851
387-Node: Array Basics\7f486180
388-Node: Array Intro\7f487024
389-Ref: figure-array-elements\7f488999
390-Ref: Array Intro-Footnote-1\7f491703
391-Node: Reference to Elements\7f491831
392-Node: Assigning Elements\7f494295
393-Node: Array Example\7f494786
394-Node: Scanning an Array\7f496545
395-Node: Controlling Scanning\7f499567
396-Ref: Controlling Scanning-Footnote-1\7f504966
397-Node: Numeric Array Subscripts\7f505282
398-Node: Uninitialized Subscripts\7f507466
399-Node: Delete\7f509085
400-Ref: Delete-Footnote-1\7f511837
401-Node: Multidimensional\7f511894
402-Node: Multiscanning\7f514989
403-Node: Arrays of Arrays\7f516580
404-Node: Arrays Summary\7f521347
405-Node: Functions\7f523440
406-Node: Built-in\7f524478
407-Node: Calling Built-in\7f525559
408-Node: Numeric Functions\7f527555
409-Ref: Numeric Functions-Footnote-1\7f531583
410-Ref: Numeric Functions-Footnote-2\7f531940
411-Ref: Numeric Functions-Footnote-3\7f531988
412-Node: String Functions\7f532260
413-Ref: String Functions-Footnote-1\7f555918
414-Ref: String Functions-Footnote-2\7f556046
415-Ref: String Functions-Footnote-3\7f556294
416-Node: Gory Details\7f556381
417-Ref: table-sub-escapes\7f558172
418-Ref: table-sub-proposed\7f559691
419-Ref: table-posix-sub\7f561054
420-Ref: table-gensub-escapes\7f562595
421-Ref: Gory Details-Footnote-1\7f563418
422-Node: I/O Functions\7f563572
423-Ref: table-system-return-values\7f570040
424-Ref: I/O Functions-Footnote-1\7f572020
425-Ref: I/O Functions-Footnote-2\7f572168
426-Node: Time Functions\7f572288
427-Ref: Time Functions-Footnote-1\7f582959
428-Ref: Time Functions-Footnote-2\7f583027
429-Ref: Time Functions-Footnote-3\7f583185
430-Ref: Time Functions-Footnote-4\7f583296
431-Ref: Time Functions-Footnote-5\7f583408
432-Ref: Time Functions-Footnote-6\7f583635
433-Node: Bitwise Functions\7f583901
434-Ref: table-bitwise-ops\7f584495
435-Ref: Bitwise Functions-Footnote-1\7f590540
436-Ref: Bitwise Functions-Footnote-2\7f590713
437-Node: Type Functions\7f590904
438-Node: I18N Functions\7f593655
439-Node: User-defined\7f595306
440-Node: Definition Syntax\7f596111
441-Ref: Definition Syntax-Footnote-1\7f601798
442-Node: Function Example\7f601869
443-Ref: Function Example-Footnote-1\7f604791
444-Node: Function Caveats\7f604813
445-Node: Calling A Function\7f605331
446-Node: Variable Scope\7f606289
447-Node: Pass By Value/Reference\7f609283
448-Node: Return Statement\7f612782
449-Node: Dynamic Typing\7f615761
450-Node: Indirect Calls\7f616691
451-Ref: Indirect Calls-Footnote-1\7f626943
452-Node: Functions Summary\7f627071
453-Node: Library Functions\7f629776
454-Ref: Library Functions-Footnote-1\7f633383
455-Ref: Library Functions-Footnote-2\7f633526
456-Node: Library Names\7f633697
457-Ref: Library Names-Footnote-1\7f637157
458-Ref: Library Names-Footnote-2\7f637380
459-Node: General Functions\7f637466
460-Node: Strtonum Function\7f638569
461-Node: Assert Function\7f641591
462-Node: Round Function\7f644917
463-Node: Cliff Random Function\7f646457
464-Node: Ordinal Functions\7f647473
465-Ref: Ordinal Functions-Footnote-1\7f650536
466-Ref: Ordinal Functions-Footnote-2\7f650788
467-Node: Join Function\7f650998
468-Ref: Join Function-Footnote-1\7f652768
469-Node: Getlocaltime Function\7f652968
470-Node: Readfile Function\7f656710
471-Node: Shell Quoting\7f658687
472-Node: Data File Management\7f660088
473-Node: Filetrans Function\7f660720
474-Node: Rewind Function\7f664816
475-Node: File Checking\7f666726
476-Ref: File Checking-Footnote-1\7f668060
477-Node: Empty Files\7f668261
478-Node: Ignoring Assigns\7f670240
479-Node: Getopt Function\7f671790
480-Ref: Getopt Function-Footnote-1\7f683259
481-Node: Passwd Functions\7f683459
482-Ref: Passwd Functions-Footnote-1\7f692298
483-Node: Group Functions\7f692386
484-Ref: Group Functions-Footnote-1\7f700284
485-Node: Walking Arrays\7f700491
486-Node: Library Functions Summary\7f703499
487-Node: Library Exercises\7f704905
488-Node: Sample Programs\7f705370
489-Node: Running Examples\7f706140
490-Node: Clones\7f706868
491-Node: Cut Program\7f708092
492-Node: Egrep Program\7f718021
493-Ref: Egrep Program-Footnote-1\7f725533
494-Node: Id Program\7f725643
495-Node: Split Program\7f729323
496-Ref: Split Program-Footnote-1\7f732781
497-Node: Tee Program\7f732910
498-Node: Uniq Program\7f735700
499-Node: Wc Program\7f743126
500-Ref: Wc Program-Footnote-1\7f747381
501-Node: Miscellaneous Programs\7f747475
502-Node: Dupword Program\7f748688
503-Node: Alarm Program\7f750718
504-Node: Translate Program\7f755573
505-Ref: Translate Program-Footnote-1\7f760138
506-Node: Labels Program\7f760408
507-Ref: Labels Program-Footnote-1\7f763759
508-Node: Word Sorting\7f763843
509-Node: History Sorting\7f767915
510-Node: Extract Program\7f769750
511-Node: Simple Sed\7f777280
512-Node: Igawk Program\7f780354
513-Ref: Igawk Program-Footnote-1\7f794685
514-Ref: Igawk Program-Footnote-2\7f794887
515-Ref: Igawk Program-Footnote-3\7f795009
516-Node: Anagram Program\7f795124
517-Node: Signature Program\7f798186
518-Node: Programs Summary\7f799433
519-Node: Programs Exercises\7f800647
520-Ref: Programs Exercises-Footnote-1\7f804776
521-Node: Advanced Features\7f804867
522-Node: Nondecimal Data\7f806857
523-Node: Array Sorting\7f808448
524-Node: Controlling Array Traversal\7f809148
525-Ref: Controlling Array Traversal-Footnote-1\7f817516
526-Node: Array Sorting Functions\7f817634
527-Ref: Array Sorting Functions-Footnote-1\7f822725
528-Node: Two-way I/O\7f822921
529-Ref: Two-way I/O-Footnote-1\7f829473
530-Ref: Two-way I/O-Footnote-2\7f829660
531-Node: TCP/IP Networking\7f829742
532-Node: Profiling\7f832860
533-Ref: Profiling-Footnote-1\7f841532
534-Node: Advanced Features Summary\7f841855
535-Node: Internationalization\7f843699
536-Node: I18N and L10N\7f845179
537-Node: Explaining gettext\7f845866
538-Ref: Explaining gettext-Footnote-1\7f851758
539-Ref: Explaining gettext-Footnote-2\7f851943
540-Node: Programmer i18n\7f852108
541-Ref: Programmer i18n-Footnote-1\7f857057
542-Node: Translator i18n\7f857106
543-Node: String Extraction\7f857900
544-Ref: String Extraction-Footnote-1\7f859032
545-Node: Printf Ordering\7f859118
546-Ref: Printf Ordering-Footnote-1\7f861904
547-Node: I18N Portability\7f861968
548-Ref: I18N Portability-Footnote-1\7f864424
549-Node: I18N Example\7f864487
550-Ref: I18N Example-Footnote-1\7f867293
551-Node: Gawk I18N\7f867366
552-Node: I18N Summary\7f868011
553-Node: Debugger\7f869352
554-Node: Debugging\7f870375
555-Node: Debugging Concepts\7f870816
556-Node: Debugging Terms\7f872625
557-Node: Awk Debugging\7f875200
558-Node: Sample Debugging Session\7f876106
559-Node: Debugger Invocation\7f876640
560-Node: Finding The Bug\7f878026
561-Node: List of Debugger Commands\7f884504
562-Node: Breakpoint Control\7f885837
563-Node: Debugger Execution Control\7f889531
564-Node: Viewing And Changing Data\7f892893
565-Node: Execution Stack\7f896267
566-Node: Debugger Info\7f897904
567-Node: Miscellaneous Debugger Commands\7f901975
568-Node: Readline Support\7f907037
569-Node: Limitations\7f907933
570-Node: Debugging Summary\7f910042
571-Node: Arbitrary Precision Arithmetic\7f911321
572-Node: Computer Arithmetic\7f912806
573-Ref: table-numeric-ranges\7f916572
574-Ref: table-floating-point-ranges\7f917065
575-Ref: Computer Arithmetic-Footnote-1\7f917723
576-Node: Math Definitions\7f917780
577-Ref: table-ieee-formats\7f921096
578-Ref: Math Definitions-Footnote-1\7f921699
579-Node: MPFR features\7f921804
580-Node: FP Math Caution\7f923522
581-Ref: FP Math Caution-Footnote-1\7f924594
582-Node: Inexactness of computations\7f924963
583-Node: Inexact representation\7f925923
584-Node: Comparing FP Values\7f927283
585-Node: Errors accumulate\7f928365
586-Node: Getting Accuracy\7f929798
587-Node: Try To Round\7f932508
588-Node: Setting precision\7f933407
589-Ref: table-predefined-precision-strings\7f934104
590-Node: Setting the rounding mode\7f935934
591-Ref: table-gawk-rounding-modes\7f936308
592-Ref: Setting the rounding mode-Footnote-1\7f940239
593-Node: Arbitrary Precision Integers\7f940418
594-Ref: Arbitrary Precision Integers-Footnote-1\7f943593
595-Node: Checking for MPFR\7f943742
596-Node: POSIX Floating Point Problems\7f945216
597-Ref: POSIX Floating Point Problems-Footnote-1\7f949087
598-Node: Floating point summary\7f949125
599-Node: Dynamic Extensions\7f951315
600-Node: Extension Intro\7f952868
601-Node: Plugin License\7f954134
602-Node: Extension Mechanism Outline\7f954931
603-Ref: figure-load-extension\7f955370
604-Ref: figure-register-new-function\7f956935
605-Ref: figure-call-new-function\7f958027
606-Node: Extension API Description\7f960089
607-Node: Extension API Functions Introduction\7f961731
608-Node: General Data Types\7f967271
609-Ref: General Data Types-Footnote-1\7f975632
610-Node: Memory Allocation Functions\7f975931
611-Ref: Memory Allocation Functions-Footnote-1\7f980141
612-Node: Constructor Functions\7f980240
613-Node: Registration Functions\7f983826
614-Node: Extension Functions\7f984511
615-Node: Exit Callback Functions\7f989726
616-Node: Extension Version String\7f990976
617-Node: Input Parsers\7f991639
618-Node: Output Wrappers\7f1004360
619-Node: Two-way processors\7f1008872
620-Node: Printing Messages\7f1011137
621-Ref: Printing Messages-Footnote-1\7f1012308
622-Node: Updating ERRNO\7f1012461
623-Node: Requesting Values\7f1013200
624-Ref: table-value-types-returned\7f1013937
625-Node: Accessing Parameters\7f1014873
626-Node: Symbol Table Access\7f1016108
627-Node: Symbol table by name\7f1016620
628-Node: Symbol table by cookie\7f1018409
629-Ref: Symbol table by cookie-Footnote-1\7f1022594
630-Node: Cached values\7f1022658
631-Ref: Cached values-Footnote-1\7f1026194
632-Node: Array Manipulation\7f1026347
633-Ref: Array Manipulation-Footnote-1\7f1027438
634-Node: Array Data Types\7f1027475
635-Ref: Array Data Types-Footnote-1\7f1030133
636-Node: Array Functions\7f1030225
637-Node: Flattening Arrays\7f1034723
638-Node: Creating Arrays\7f1041699
639-Node: Redirection API\7f1046466
640-Node: Extension API Variables\7f1049299
641-Node: Extension Versioning\7f1050010
642-Ref: gawk-api-version\7f1050439
643-Node: Extension GMP/MPFR Versioning\7f1052170
644-Node: Extension API Informational Variables\7f1053798
645-Node: Extension API Boilerplate\7f1054871
646-Node: Changes from API V1\7f1058845
647-Node: Finding Extensions\7f1060417
648-Node: Extension Example\7f1060976
649-Node: Internal File Description\7f1061774
650-Node: Internal File Ops\7f1065854
651-Ref: Internal File Ops-Footnote-1\7f1077204
652-Node: Using Internal File Ops\7f1077344
653-Ref: Using Internal File Ops-Footnote-1\7f1079727
654-Node: Extension Samples\7f1080001
655-Node: Extension Sample File Functions\7f1081530
656-Node: Extension Sample Fnmatch\7f1089179
657-Node: Extension Sample Fork\7f1090666
658-Node: Extension Sample Inplace\7f1091884
659-Node: Extension Sample Ord\7f1095101
660-Node: Extension Sample Readdir\7f1095937
661-Ref: table-readdir-file-types\7f1096826
662-Node: Extension Sample Revout\7f1097631
663-Node: Extension Sample Rev2way\7f1098220
664-Node: Extension Sample Read write array\7f1098960
665-Node: Extension Sample Readfile\7f1100902
666-Node: Extension Sample Time\7f1101997
667-Node: Extension Sample API Tests\7f1103345
668-Node: gawkextlib\7f1103837
669-Node: Extension summary\7f1106755
670-Node: Extension Exercises\7f1110457
671-Node: Language History\7f1111955
672-Node: V7/SVR3.1\7f1113611
673-Node: SVR4\7f1115763
674-Node: POSIX\7f1117197
675-Node: BTL\7f1118577
676-Node: POSIX/GNU\7f1119306
677-Node: Feature History\7f1125084
678-Node: Common Extensions\7f1140943
679-Node: Ranges and Locales\7f1142226
680-Ref: Ranges and Locales-Footnote-1\7f1146842
681-Ref: Ranges and Locales-Footnote-2\7f1146869
682-Ref: Ranges and Locales-Footnote-3\7f1147104
683-Node: Contributors\7f1147325
684-Node: History summary\7f1153270
685-Node: Installation\7f1154650
686-Node: Gawk Distribution\7f1155594
687-Node: Getting\7f1156078
688-Node: Extracting\7f1157041
689-Node: Distribution contents\7f1158679
690-Node: Unix Installation\7f1165159
691-Node: Quick Installation\7f1165841
692-Node: Shell Startup Files\7f1168255
693-Node: Additional Configuration Options\7f1169344
694-Node: Configuration Philosophy\7f1171637
695-Node: Non-Unix Installation\7f1174006
696-Node: PC Installation\7f1174466
697-Node: PC Binary Installation\7f1175304
698-Node: PC Compiling\7f1175739
699-Node: PC Using\7f1176856
700-Node: Cygwin\7f1180071
701-Node: MSYS\7f1181170
702-Node: VMS Installation\7f1181671
703-Node: VMS Compilation\7f1182462
704-Ref: VMS Compilation-Footnote-1\7f1183691
705-Node: VMS Dynamic Extensions\7f1183749
706-Node: VMS Installation Details\7f1185434
707-Node: VMS Running\7f1187687
708-Node: VMS GNV\7f1191966
709-Node: VMS Old Gawk\7f1192701
710-Node: Bugs\7f1193172
711-Node: Bug address\7f1193835
712-Node: Usenet\7f1196627
713-Node: Maintainers\7f1197404
714-Node: Other Versions\7f1198665
715-Node: Installation summary\7f1205427
716-Node: Notes\7f1206629
717-Node: Compatibility Mode\7f1207494
718-Node: Additions\7f1208276
719-Node: Accessing The Source\7f1209201
720-Node: Adding Code\7f1210638
721-Node: New Ports\7f1216857
722-Node: Derived Files\7f1221345
723-Ref: Derived Files-Footnote-1\7f1226991
724-Ref: Derived Files-Footnote-2\7f1227026
725-Ref: Derived Files-Footnote-3\7f1227624
726-Node: Future Extensions\7f1227738
727-Node: Implementation Limitations\7f1228396
728-Node: Extension Design\7f1229579
729-Node: Old Extension Problems\7f1230733
730-Ref: Old Extension Problems-Footnote-1\7f1232251
731-Node: Extension New Mechanism Goals\7f1232308
732-Ref: Extension New Mechanism Goals-Footnote-1\7f1235672
733-Node: Extension Other Design Decisions\7f1235861
734-Node: Extension Future Growth\7f1237974
735-Node: Old Extension Mechanism\7f1238810
736-Node: Notes summary\7f1240573
737-Node: Basic Concepts\7f1241755
738-Node: Basic High Level\7f1242436
739-Ref: figure-general-flow\7f1242718
740-Ref: figure-process-flow\7f1243403
741-Ref: Basic High Level-Footnote-1\7f1246704
742-Node: Basic Data Typing\7f1246889
743-Node: Glossary\7f1250217
744-Node: Copying\7f1282055
745-Node: GNU Free Documentation License\7f1319598
746-Node: Index\7f1344718
747+Node: Format Modifiers\7f296985
748+Node: Printf Examples\7f303000
749+Node: Redirection\7f305486
750+Node: Special FD\7f312327
751+Ref: Special FD-Footnote-1\7f315495
752+Node: Special Files\7f315569
753+Node: Other Inherited Files\7f316186
754+Node: Special Network\7f317187
755+Node: Special Caveats\7f318047
756+Node: Close Files And Pipes\7f318996
757+Ref: table-close-pipe-return-values\7f325903
758+Ref: Close Files And Pipes-Footnote-1\7f326716
759+Ref: Close Files And Pipes-Footnote-2\7f326864
760+Node: Nonfatal\7f327016
761+Node: Output Summary\7f329354
762+Node: Output Exercises\7f330576
763+Node: Expressions\7f331255
764+Node: Values\7f332443
765+Node: Constants\7f333121
766+Node: Scalar Constants\7f333812
767+Ref: Scalar Constants-Footnote-1\7f334676
768+Node: Nondecimal-numbers\7f334926
769+Node: Regexp Constants\7f337927
770+Node: Using Constant Regexps\7f338453
771+Node: Standard Regexp Constants\7f339075
772+Node: Strong Regexp Constants\7f342263
773+Node: Variables\7f345221
774+Node: Using Variables\7f345878
775+Node: Assignment Options\7f347788
776+Node: Conversion\7f349661
777+Node: Strings And Numbers\7f350185
778+Ref: Strings And Numbers-Footnote-1\7f353248
779+Node: Locale influences conversions\7f353357
780+Ref: table-locale-affects\7f356115
781+Node: All Operators\7f356733
782+Node: Arithmetic Ops\7f357362
783+Node: Concatenation\7f359868
784+Ref: Concatenation-Footnote-1\7f362715
785+Node: Assignment Ops\7f362822
786+Ref: table-assign-ops\7f367813
787+Node: Increment Ops\7f369126
788+Node: Truth Values and Conditions\7f372586
789+Node: Truth Values\7f373660
790+Node: Typing and Comparison\7f374708
791+Node: Variable Typing\7f375528
792+Ref: Variable Typing-Footnote-1\7f381991
793+Ref: Variable Typing-Footnote-2\7f382063
794+Node: Comparison Operators\7f382140
795+Ref: table-relational-ops\7f382559
796+Node: POSIX String Comparison\7f386054
797+Ref: POSIX String Comparison-Footnote-1\7f387749
798+Ref: POSIX String Comparison-Footnote-2\7f387888
799+Node: Boolean Ops\7f387972
800+Ref: Boolean Ops-Footnote-1\7f392454
801+Node: Conditional Exp\7f392546
802+Node: Function Calls\7f394282
803+Node: Precedence\7f398159
804+Node: Locales\7f401818
805+Node: Expressions Summary\7f403450
806+Node: Patterns and Actions\7f406023
807+Node: Pattern Overview\7f407143
808+Node: Regexp Patterns\7f408820
809+Node: Expression Patterns\7f409362
810+Node: Ranges\7f413143
811+Node: BEGIN/END\7f416251
812+Node: Using BEGIN/END\7f417012
813+Ref: Using BEGIN/END-Footnote-1\7f419748
814+Node: I/O And BEGIN/END\7f419854
815+Node: BEGINFILE/ENDFILE\7f422168
816+Node: Empty\7f425081
817+Node: Using Shell Variables\7f425398
818+Node: Action Overview\7f427672
819+Node: Statements\7f429997
820+Node: If Statement\7f431845
821+Node: While Statement\7f433340
822+Node: Do Statement\7f435368
823+Node: For Statement\7f436516
824+Node: Switch Statement\7f439687
825+Node: Break Statement\7f442073
826+Node: Continue Statement\7f444165
827+Node: Next Statement\7f445992
828+Node: Nextfile Statement\7f448375
829+Node: Exit Statement\7f451027
830+Node: Built-in Variables\7f453430
831+Node: User-modified\7f454563
832+Node: Auto-set\7f462330
833+Ref: Auto-set-Footnote-1\7f478629
834+Ref: Auto-set-Footnote-2\7f478835
835+Node: ARGC and ARGV\7f478891
836+Node: Pattern Action Summary\7f483104
837+Node: Arrays\7f485534
838+Node: Array Basics\7f486863
839+Node: Array Intro\7f487707
840+Ref: figure-array-elements\7f489682
841+Ref: Array Intro-Footnote-1\7f492386
842+Node: Reference to Elements\7f492514
843+Node: Assigning Elements\7f494978
844+Node: Array Example\7f495469
845+Node: Scanning an Array\7f497228
846+Node: Controlling Scanning\7f500250
847+Ref: Controlling Scanning-Footnote-1\7f505649
848+Node: Numeric Array Subscripts\7f505965
849+Node: Uninitialized Subscripts\7f508149
850+Node: Delete\7f509768
851+Ref: Delete-Footnote-1\7f512520
852+Node: Multidimensional\7f512577
853+Node: Multiscanning\7f515672
854+Node: Arrays of Arrays\7f517263
855+Node: Arrays Summary\7f522030
856+Node: Functions\7f524123
857+Node: Built-in\7f525161
858+Node: Calling Built-in\7f526242
859+Node: Numeric Functions\7f528238
860+Ref: Numeric Functions-Footnote-1\7f532266
861+Ref: Numeric Functions-Footnote-2\7f532623
862+Ref: Numeric Functions-Footnote-3\7f532671
863+Node: String Functions\7f532943
864+Ref: String Functions-Footnote-1\7f556601
865+Ref: String Functions-Footnote-2\7f556729
866+Ref: String Functions-Footnote-3\7f556977
867+Node: Gory Details\7f557064
868+Ref: table-sub-escapes\7f558855
869+Ref: table-sub-proposed\7f560374
870+Ref: table-posix-sub\7f561737
871+Ref: table-gensub-escapes\7f563278
872+Ref: Gory Details-Footnote-1\7f564101
873+Node: I/O Functions\7f564255
874+Ref: table-system-return-values\7f570723
875+Ref: I/O Functions-Footnote-1\7f572703
876+Ref: I/O Functions-Footnote-2\7f572851
877+Node: Time Functions\7f572971
878+Ref: Time Functions-Footnote-1\7f583642
879+Ref: Time Functions-Footnote-2\7f583710
880+Ref: Time Functions-Footnote-3\7f583868
881+Ref: Time Functions-Footnote-4\7f583979
882+Ref: Time Functions-Footnote-5\7f584091
883+Ref: Time Functions-Footnote-6\7f584318
884+Node: Bitwise Functions\7f584584
885+Ref: table-bitwise-ops\7f585178
886+Ref: Bitwise Functions-Footnote-1\7f591223
887+Ref: Bitwise Functions-Footnote-2\7f591396
888+Node: Type Functions\7f591587
889+Node: I18N Functions\7f594338
890+Node: User-defined\7f595989
891+Node: Definition Syntax\7f596794
892+Ref: Definition Syntax-Footnote-1\7f602481
893+Node: Function Example\7f602552
894+Ref: Function Example-Footnote-1\7f605474
895+Node: Function Caveats\7f605496
896+Node: Calling A Function\7f606014
897+Node: Variable Scope\7f606972
898+Node: Pass By Value/Reference\7f609966
899+Node: Return Statement\7f613465
900+Node: Dynamic Typing\7f616444
901+Node: Indirect Calls\7f617374
902+Ref: Indirect Calls-Footnote-1\7f627626
903+Node: Functions Summary\7f627754
904+Node: Library Functions\7f630459
905+Ref: Library Functions-Footnote-1\7f634066
906+Ref: Library Functions-Footnote-2\7f634209
907+Node: Library Names\7f634380
908+Ref: Library Names-Footnote-1\7f637840
909+Ref: Library Names-Footnote-2\7f638063
910+Node: General Functions\7f638149
911+Node: Strtonum Function\7f639252
912+Node: Assert Function\7f642274
913+Node: Round Function\7f645600
914+Node: Cliff Random Function\7f647140
915+Node: Ordinal Functions\7f648156
916+Ref: Ordinal Functions-Footnote-1\7f651219
917+Ref: Ordinal Functions-Footnote-2\7f651471
918+Node: Join Function\7f651681
919+Ref: Join Function-Footnote-1\7f653451
920+Node: Getlocaltime Function\7f653651
921+Node: Readfile Function\7f657393
922+Node: Shell Quoting\7f659370
923+Node: Data File Management\7f660771
924+Node: Filetrans Function\7f661403
925+Node: Rewind Function\7f665499
926+Node: File Checking\7f667409
927+Ref: File Checking-Footnote-1\7f668743
928+Node: Empty Files\7f668944
929+Node: Ignoring Assigns\7f670923
930+Node: Getopt Function\7f672473
931+Ref: Getopt Function-Footnote-1\7f683942
932+Node: Passwd Functions\7f684142
933+Ref: Passwd Functions-Footnote-1\7f692981
934+Node: Group Functions\7f693069
935+Ref: Group Functions-Footnote-1\7f700967
936+Node: Walking Arrays\7f701174
937+Node: Library Functions Summary\7f704182
938+Node: Library Exercises\7f705588
939+Node: Sample Programs\7f706053
940+Node: Running Examples\7f706823
941+Node: Clones\7f707551
942+Node: Cut Program\7f708775
943+Node: Egrep Program\7f718704
944+Ref: Egrep Program-Footnote-1\7f726216
945+Node: Id Program\7f726326
946+Node: Split Program\7f730006
947+Ref: Split Program-Footnote-1\7f733464
948+Node: Tee Program\7f733593
949+Node: Uniq Program\7f736383
950+Node: Wc Program\7f743809
951+Ref: Wc Program-Footnote-1\7f748064
952+Node: Miscellaneous Programs\7f748158
953+Node: Dupword Program\7f749371
954+Node: Alarm Program\7f751401
955+Node: Translate Program\7f756256
956+Ref: Translate Program-Footnote-1\7f760821
957+Node: Labels Program\7f761091
958+Ref: Labels Program-Footnote-1\7f764442
959+Node: Word Sorting\7f764526
960+Node: History Sorting\7f768598
961+Node: Extract Program\7f770433
962+Node: Simple Sed\7f777963
963+Node: Igawk Program\7f781037
964+Ref: Igawk Program-Footnote-1\7f795368
965+Ref: Igawk Program-Footnote-2\7f795570
966+Ref: Igawk Program-Footnote-3\7f795692
967+Node: Anagram Program\7f795807
968+Node: Signature Program\7f798869
969+Node: Programs Summary\7f800116
970+Node: Programs Exercises\7f801330
971+Ref: Programs Exercises-Footnote-1\7f805459
972+Node: Advanced Features\7f805550
973+Node: Nondecimal Data\7f807540
974+Node: Array Sorting\7f809131
975+Node: Controlling Array Traversal\7f809831
976+Ref: Controlling Array Traversal-Footnote-1\7f818199
977+Node: Array Sorting Functions\7f818317
978+Ref: Array Sorting Functions-Footnote-1\7f823408
979+Node: Two-way I/O\7f823604
980+Ref: Two-way I/O-Footnote-1\7f830156
981+Ref: Two-way I/O-Footnote-2\7f830343
982+Node: TCP/IP Networking\7f830425
983+Node: Profiling\7f833543
984+Ref: Profiling-Footnote-1\7f842215
985+Node: Advanced Features Summary\7f842538
986+Node: Internationalization\7f844382
987+Node: I18N and L10N\7f845862
988+Node: Explaining gettext\7f846549
989+Ref: Explaining gettext-Footnote-1\7f852441
990+Ref: Explaining gettext-Footnote-2\7f852626
991+Node: Programmer i18n\7f852791
992+Ref: Programmer i18n-Footnote-1\7f857740
993+Node: Translator i18n\7f857789
994+Node: String Extraction\7f858583
995+Ref: String Extraction-Footnote-1\7f859715
996+Node: Printf Ordering\7f859801
997+Ref: Printf Ordering-Footnote-1\7f862587
998+Node: I18N Portability\7f862651
999+Ref: I18N Portability-Footnote-1\7f865107
1000+Node: I18N Example\7f865170
1001+Ref: I18N Example-Footnote-1\7f867976
1002+Node: Gawk I18N\7f868049
1003+Node: I18N Summary\7f868694
1004+Node: Debugger\7f870035
1005+Node: Debugging\7f871058
1006+Node: Debugging Concepts\7f871499
1007+Node: Debugging Terms\7f873308
1008+Node: Awk Debugging\7f875883
1009+Node: Sample Debugging Session\7f876789
1010+Node: Debugger Invocation\7f877323
1011+Node: Finding The Bug\7f878709
1012+Node: List of Debugger Commands\7f885187
1013+Node: Breakpoint Control\7f886520
1014+Node: Debugger Execution Control\7f890214
1015+Node: Viewing And Changing Data\7f893576
1016+Node: Execution Stack\7f896950
1017+Node: Debugger Info\7f898587
1018+Node: Miscellaneous Debugger Commands\7f902658
1019+Node: Readline Support\7f907720
1020+Node: Limitations\7f908616
1021+Node: Debugging Summary\7f910725
1022+Node: Arbitrary Precision Arithmetic\7f912004
1023+Node: Computer Arithmetic\7f913489
1024+Ref: table-numeric-ranges\7f917255
1025+Ref: table-floating-point-ranges\7f917748
1026+Ref: Computer Arithmetic-Footnote-1\7f918406
1027+Node: Math Definitions\7f918463
1028+Ref: table-ieee-formats\7f921779
1029+Ref: Math Definitions-Footnote-1\7f922382
1030+Node: MPFR features\7f922487
1031+Node: FP Math Caution\7f924205
1032+Ref: FP Math Caution-Footnote-1\7f925277
1033+Node: Inexactness of computations\7f925646
1034+Node: Inexact representation\7f926606
1035+Node: Comparing FP Values\7f927966
1036+Node: Errors accumulate\7f929048
1037+Node: Getting Accuracy\7f930481
1038+Node: Try To Round\7f933191
1039+Node: Setting precision\7f934090
1040+Ref: table-predefined-precision-strings\7f934787
1041+Node: Setting the rounding mode\7f936617
1042+Ref: table-gawk-rounding-modes\7f936991
1043+Ref: Setting the rounding mode-Footnote-1\7f940922
1044+Node: Arbitrary Precision Integers\7f941101
1045+Ref: Arbitrary Precision Integers-Footnote-1\7f944276
1046+Node: Checking for MPFR\7f944425
1047+Node: POSIX Floating Point Problems\7f945899
1048+Ref: POSIX Floating Point Problems-Footnote-1\7f949770
1049+Node: Floating point summary\7f949808
1050+Node: Dynamic Extensions\7f951998
1051+Node: Extension Intro\7f953551
1052+Node: Plugin License\7f954817
1053+Node: Extension Mechanism Outline\7f955614
1054+Ref: figure-load-extension\7f956053
1055+Ref: figure-register-new-function\7f957618
1056+Ref: figure-call-new-function\7f958710
1057+Node: Extension API Description\7f960772
1058+Node: Extension API Functions Introduction\7f962414
1059+Node: General Data Types\7f967954
1060+Ref: General Data Types-Footnote-1\7f976315
1061+Node: Memory Allocation Functions\7f976614
1062+Ref: Memory Allocation Functions-Footnote-1\7f980824
1063+Node: Constructor Functions\7f980923
1064+Node: Registration Functions\7f984509
1065+Node: Extension Functions\7f985194
1066+Node: Exit Callback Functions\7f990409
1067+Node: Extension Version String\7f991659
1068+Node: Input Parsers\7f992322
1069+Node: Output Wrappers\7f1005043
1070+Node: Two-way processors\7f1009555
1071+Node: Printing Messages\7f1011820
1072+Ref: Printing Messages-Footnote-1\7f1012991
1073+Node: Updating ERRNO\7f1013144
1074+Node: Requesting Values\7f1013883
1075+Ref: table-value-types-returned\7f1014620
1076+Node: Accessing Parameters\7f1015556
1077+Node: Symbol Table Access\7f1016791
1078+Node: Symbol table by name\7f1017303
1079+Node: Symbol table by cookie\7f1019092
1080+Ref: Symbol table by cookie-Footnote-1\7f1023277
1081+Node: Cached values\7f1023341
1082+Ref: Cached values-Footnote-1\7f1026877
1083+Node: Array Manipulation\7f1027030
1084+Ref: Array Manipulation-Footnote-1\7f1028121
1085+Node: Array Data Types\7f1028158
1086+Ref: Array Data Types-Footnote-1\7f1030816
1087+Node: Array Functions\7f1030908
1088+Node: Flattening Arrays\7f1035406
1089+Node: Creating Arrays\7f1042382
1090+Node: Redirection API\7f1047149
1091+Node: Extension API Variables\7f1049982
1092+Node: Extension Versioning\7f1050693
1093+Ref: gawk-api-version\7f1051122
1094+Node: Extension GMP/MPFR Versioning\7f1052853
1095+Node: Extension API Informational Variables\7f1054481
1096+Node: Extension API Boilerplate\7f1055554
1097+Node: Changes from API V1\7f1059528
1098+Node: Finding Extensions\7f1061100
1099+Node: Extension Example\7f1061659
1100+Node: Internal File Description\7f1062457
1101+Node: Internal File Ops\7f1066537
1102+Ref: Internal File Ops-Footnote-1\7f1077887
1103+Node: Using Internal File Ops\7f1078027
1104+Ref: Using Internal File Ops-Footnote-1\7f1080410
1105+Node: Extension Samples\7f1080684
1106+Node: Extension Sample File Functions\7f1082213
1107+Node: Extension Sample Fnmatch\7f1089862
1108+Node: Extension Sample Fork\7f1091349
1109+Node: Extension Sample Inplace\7f1092567
1110+Node: Extension Sample Ord\7f1095784
1111+Node: Extension Sample Readdir\7f1096620
1112+Ref: table-readdir-file-types\7f1097509
1113+Node: Extension Sample Revout\7f1098314
1114+Node: Extension Sample Rev2way\7f1098903
1115+Node: Extension Sample Read write array\7f1099643
1116+Node: Extension Sample Readfile\7f1101585
1117+Node: Extension Sample Time\7f1102680
1118+Node: Extension Sample API Tests\7f1104028
1119+Node: gawkextlib\7f1104520
1120+Node: Extension summary\7f1107438
1121+Node: Extension Exercises\7f1111140
1122+Node: Language History\7f1112638
1123+Node: V7/SVR3.1\7f1114294
1124+Node: SVR4\7f1116446
1125+Node: POSIX\7f1117880
1126+Node: BTL\7f1119260
1127+Node: POSIX/GNU\7f1119989
1128+Node: Feature History\7f1125767
1129+Node: Common Extensions\7f1141626
1130+Node: Ranges and Locales\7f1142909
1131+Ref: Ranges and Locales-Footnote-1\7f1147525
1132+Ref: Ranges and Locales-Footnote-2\7f1147552
1133+Ref: Ranges and Locales-Footnote-3\7f1147787
1134+Node: Contributors\7f1148008
1135+Node: History summary\7f1153953
1136+Node: Installation\7f1155333
1137+Node: Gawk Distribution\7f1156277
1138+Node: Getting\7f1156761
1139+Node: Extracting\7f1157724
1140+Node: Distribution contents\7f1159362
1141+Node: Unix Installation\7f1165842
1142+Node: Quick Installation\7f1166524
1143+Node: Shell Startup Files\7f1168938
1144+Node: Additional Configuration Options\7f1170027
1145+Node: Configuration Philosophy\7f1172320
1146+Node: Non-Unix Installation\7f1174689
1147+Node: PC Installation\7f1175149
1148+Node: PC Binary Installation\7f1175987
1149+Node: PC Compiling\7f1176422
1150+Node: PC Using\7f1177539
1151+Node: Cygwin\7f1180754
1152+Node: MSYS\7f1181853
1153+Node: VMS Installation\7f1182354
1154+Node: VMS Compilation\7f1183145
1155+Ref: VMS Compilation-Footnote-1\7f1184374
1156+Node: VMS Dynamic Extensions\7f1184432
1157+Node: VMS Installation Details\7f1186117
1158+Node: VMS Running\7f1188370
1159+Node: VMS GNV\7f1192649
1160+Node: VMS Old Gawk\7f1193384
1161+Node: Bugs\7f1193855
1162+Node: Bug address\7f1194518
1163+Node: Usenet\7f1197310
1164+Node: Maintainers\7f1198087
1165+Node: Other Versions\7f1199348
1166+Node: Installation summary\7f1206110
1167+Node: Notes\7f1207312
1168+Node: Compatibility Mode\7f1208177
1169+Node: Additions\7f1208959
1170+Node: Accessing The Source\7f1209884
1171+Node: Adding Code\7f1211321
1172+Node: New Ports\7f1217540
1173+Node: Derived Files\7f1222028
1174+Ref: Derived Files-Footnote-1\7f1227674
1175+Ref: Derived Files-Footnote-2\7f1227709
1176+Ref: Derived Files-Footnote-3\7f1228307
1177+Node: Future Extensions\7f1228421
1178+Node: Implementation Limitations\7f1229079
1179+Node: Extension Design\7f1230262
1180+Node: Old Extension Problems\7f1231416
1181+Ref: Old Extension Problems-Footnote-1\7f1232934
1182+Node: Extension New Mechanism Goals\7f1232991
1183+Ref: Extension New Mechanism Goals-Footnote-1\7f1236355
1184+Node: Extension Other Design Decisions\7f1236544
1185+Node: Extension Future Growth\7f1238657
1186+Node: Old Extension Mechanism\7f1239493
1187+Node: Notes summary\7f1241256
1188+Node: Basic Concepts\7f1242438
1189+Node: Basic High Level\7f1243119
1190+Ref: figure-general-flow\7f1243401
1191+Ref: figure-process-flow\7f1244086
1192+Ref: Basic High Level-Footnote-1\7f1247387
1193+Node: Basic Data Typing\7f1247572
1194+Node: Glossary\7f1250900
1195+Node: Copying\7f1282738
1196+Node: GNU Free Documentation License\7f1320281
1197+Node: Index\7f1345401
1198 \1f
1199 End Tag Table
1200diff --git a/doc/gawk.texi b/doc/gawk.texi
1201index 7b69b52..7dfa3b3 100644
1202--- a/doc/gawk.texi
1203+++ b/doc/gawk.texi
1204@@ -9557,6 +9557,25 @@ the field width. Here is a list of the format-control letters:
1205
1206 @c @asis for docbook to come out right
1207 @table @asis
1208+@item @code{%a}, @code{%A}
1209+A floating point number of the form
1210+[@code{-}]@code{0x@var{h}.@var{hhhh}p+-@var{dd}}
1211+(C99 hexadecimal floating point format).
1212+For @code{%A},
1213+uppercase letters are used instead of lowercase ones.
1214+
1215+@quotation NOTE
1216+While the current POSIX standard requires support for @code{%a}
1217+and @code{%A} in @command{awk}, as far as we know, no other version
1218+of @command{awk} actually implements it. It's use is thus highly
1219+nonportable!
1220+
1221+Furthermore, these formats are not available on any system where the
1222+underlying C library @code{printf()} function does not support them. As
1223+of this writing, among current systems, only OpenVMS is known to not
1224+support them.
1225+@end quotation
1226+
1227 @item @code{%c}
1228 Print a number as a character; thus, @samp{printf "%c",
1229 65} outputs the letter @samp{A}. The output for a string value is
1230diff --git a/doc/gawktexi.in b/doc/gawktexi.in
1231index 6203e1a..f2cb710 100644
1232--- a/doc/gawktexi.in
1233+++ b/doc/gawktexi.in
1234@@ -9156,6 +9156,25 @@ the field width. Here is a list of the format-control letters:
1235
1236 @c @asis for docbook to come out right
1237 @table @asis
1238+@item @code{%a}, @code{%A}
1239+A floating point number of the form
1240+[@code{-}]@code{0x@var{h}.@var{hhhh}p+-@var{dd}}
1241+(C99 hexadecimal floating point format).
1242+For @code{%A},
1243+uppercase letters are used instead of lowercase ones.
1244+
1245+@quotation NOTE
1246+While the current POSIX standard requires support for @code{%a}
1247+and @code{%A} in @command{awk}, as far as we know, no other version
1248+of @command{awk} actually implements it. It's use is thus highly
1249+nonportable!
1250+
1251+Furthermore, these formats are not available on any system where the
1252+underlying C library @code{printf()} function does not support them. As
1253+of this writing, among current systems, only OpenVMS is known to not
1254+support them.
1255+@end quotation
1256+
1257 @item @code{%c}
1258 Print a number as a character; thus, @samp{printf "%c",
1259 65} outputs the letter @samp{A}. The output for a string value is
1260diff --git a/doc/wordlist b/doc/wordlist
1261index 3c3c7e9..3763056 100644
1262--- a/doc/wordlist
1263+++ b/doc/wordlist
1264@@ -865,6 +865,7 @@ dayname
1265 db
1266 dcgettext
1267 dcngettext
1268+dd
1269 ddd
1270 de
1271 deallocations
1272@@ -1132,6 +1133,7 @@ helpfull
1273 helplib
1274 hfil
1275 hh
1276+hhhh
1277 hhob
1278 histsort
1279 hlp
1280diff --git a/doc/wordlist2 b/doc/wordlist2
1281index 9275fdb..7bf7ad3 100644
1282--- a/doc/wordlist2
1283+++ b/doc/wordlist2
1284@@ -60,6 +60,7 @@ distclean
1285 docbook
1286 du
1287 dvi
1288+elled
1289 emph
1290 en
1291 env
1292diff --git a/pc/config.h b/pc/config.h
1293index de2b7ec..2ec5352 100644
1294--- a/pc/config.h
1295+++ b/pc/config.h
1296@@ -473,6 +473,9 @@
1297 /* Define to the version of this package. */
1298 #define PACKAGE_VERSION "4.2.1"
1299
1300+/* Define to 1 if *printf supports %a format */
1301+#define PRINTF_HAS_A_FORMAT 1
1302+
1303 /* Define to 1 if *printf supports %F format */
1304 #ifdef __DJGPP__
1305 #define PRINTF_HAS_F_FORMAT 1
1306diff --git a/pc/config.sed b/pc/config.sed
1307index 5b3cc32..a7ba878 100644
1308--- a/pc/config.sed
1309+++ b/pc/config.sed
1310@@ -273,6 +273,8 @@ s/^#undef HAVE_VPRINTF *$/#define HAVE_VPRINTF 1/
1311 #ifdef __DJGPP__\
1312 #define HAVE__BOOL 1\
1313 #endif
1314+/^#undef PRINTF_HAS_A_FORMAT *$/c\
1315+#define PRINTF_HAS_A_FORMAT 1
1316 /^#undef PRINTF_HAS_F_FORMAT *$/c\
1317 #ifdef __DJGPP__\
1318 #define PRINTF_HAS_F_FORMAT 1\
1319--
13202.14.4
1321
This page took 0.352352 seconds and 4 git commands to generate.