1 From 51e6897a1dc72dd5e39921e8a1c8fa4efb568ca6 Mon Sep 17 00:00:00 2001
2 From: "Arnold D. Robbins" <arnold@skeeve.com>
3 Date: Thu, 22 Mar 2018 18:37:52 +0200
4 Subject: [PATCH] Add support for %a and %A in printf.
14 doc/gawk.info | 925 ++++++++++++++++++++++++++++----------------------------
16 doc/gawktexi.in | 19 ++
21 14 files changed, 631 insertions(+), 462 deletions(-)
23 diff --git a/NEWS b/NEWS
24 index c2885c8..71d9608 100644
28 are permitted in any medium without royalty provided the copyright
29 notice and this notice are preserved.
31 +Changes from 4.2.1 to 4.2.2
32 +---------------------------
34 +1. Support for the POSIX standard %a and %A formats has been added.
36 Changes from 4.2.0 to 4.2.1
37 ---------------------------
39 diff --git a/builtin.c b/builtin.c
40 index 6927205..c54be9b 100644
43 @@ -1493,6 +1493,17 @@ mpf1:
47 +#if defined(PRINTF_HAS_A_FORMAT) && PRINTF_HAS_A_FORMAT == 1
51 + static bool warned = false;
52 + if (do_lint && tolower(cs1) == 'a' && ! warned) {
54 + lintwarn(_("%%%c format is POSIX standard but not portable to other awks"), cs1);
60 (void) force_number(arg);
61 @@ -1557,11 +1568,21 @@ mpf1:
65 - sprintf(cp, "*.*%c", cs1);
66 - while ((nc = snprintf(obufout, ofre, cpbuf,
67 - (int) fw, (int) prec,
68 - (double) tmpval)) >= ofre)
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)
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,
82 + (double) tmpval)) >= ofre)
87 #if defined(LC_NUMERIC)
88 diff --git a/configh.in b/configh.in
89 index e600005..8c4d94d 100644
93 /* Define to the version of this package. */
94 #undef PACKAGE_VERSION
96 +/* Define to 1 if *printf supports %a format */
97 +#undef PRINTF_HAS_A_FORMAT
99 /* Define to 1 if *printf supports %F format */
100 #undef PRINTF_HAS_F_FORMAT
102 diff --git a/configure b/configure
103 index 2283f09..f492a75 100755
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; }
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 :
115 + cat confdefs.h - <<_ACEOF >conftest.$ac_ext
116 +/* end confdefs.h. */
125 + sprintf(buf, "%a", 8.0);
127 + if (strncmp(buf, "0x", 2) == 0)
134 +if ac_fn_c_try_run "$LINENO"; then :
139 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
140 + conftest.$ac_objext conftest.beam conftest.$ac_ext
143 +if test "$has_a_format" = yes
146 +$as_echo "#define PRINTF_HAS_A_FORMAT 1" >>confdefs.h
149 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_a_format" >&5
150 +$as_echo "$has_a_format" >&6; }
154 # Check for system-dependent location of socket libraries
155 diff --git a/configure.ac b/configure.ac
156 index f45c710..a4817ee 100644
159 @@ -395,6 +395,34 @@ then
161 AC_MSG_RESULT($has_f_format)
163 +dnl check for printf %a format
164 +AC_MSG_CHECKING([for printf %a format])
173 + sprintf(buf, "%a", 8.0);
175 + if (strncmp(buf, "0x", 2) == 0)
183 + has_a_format=no dnl Cross-compiling, assuming the worst.
185 +if test "$has_a_format" = yes
187 + AC_DEFINE(PRINTF_HAS_A_FORMAT, 1, [Define to 1 if *printf supports %a format])
189 +AC_MSG_RESULT($has_a_format)
191 dnl check for sockets
194 diff --git a/doc/awkcard.in b/doc/awkcard.in
195 index 1148294..d4df342 100644
198 @@ -1431,6 +1431,7 @@ the error.\*(CX
199 accept the following conversion specification formats:
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
206 diff --git a/doc/gawk.1 b/doc/gawk.1
207 index 16762a8..48c07b7 100644
211 . if \w'\(rq' .ds rq "\(rq
214 -.TH GAWK 1 "Feb 15 2018" "Free Software Foundation" "Utility Commands"
215 +.TH GAWK 1 "Mar 22 2018" "Free Software Foundation" "Utility Commands"
217 gawk \- pattern scanning and processing language
219 @@ -1264,7 +1264,7 @@ behavior:
220 \fBPROCINFO["NONFATAL"]\fR
221 If this exists, then I/O errors for all redirections become nonfatal.
223 -\fBPROCINFO["\fname\fB", "NONFATAL"]\fR
224 +\fBPROCINFO["\fIname\fB", "NONFATAL"]\fR
228 @@ -2429,6 +2429,14 @@ function
230 accept the following conversion specification formats:
231 .TP "\w'\fB%g\fR, \fB%G\fR'u+2n"
233 +A floating point number of the form
234 +[\fB\-\fP]\fB0x\fIh\fB.\fIhhhh\fBp+\-\fIdd\fR
235 +(C99 hexadecimal floating point format).
238 +uppercase letters are used instead of lowercase ones.
242 If the argument used for
243 diff --git a/doc/gawk.info b/doc/gawk.info
244 index 738de09..c01e43b 100644
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:
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.
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
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.
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.
278 * dark corner, FS as null string: Single Character Fields.
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.
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
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
1200 diff --git a/doc/gawk.texi b/doc/gawk.texi
1201 index 7b69b52..7dfa3b3 100644
1204 @@ -9557,6 +9557,25 @@ the field width. Here is a list of the format-control letters:
1206 @c @asis for docbook to come out right
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).
1213 +uppercase letters are used instead of lowercase ones.
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
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
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
1230 diff --git a/doc/gawktexi.in b/doc/gawktexi.in
1231 index 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:
1236 @c @asis for docbook to come out right
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).
1243 +uppercase letters are used instead of lowercase ones.
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
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
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
1260 diff --git a/doc/wordlist b/doc/wordlist
1261 index 3c3c7e9..3763056 100644
1264 @@ -865,6 +865,7 @@ dayname
1272 @@ -1132,6 +1133,7 @@ helpfull
1280 diff --git a/doc/wordlist2 b/doc/wordlist2
1281 index 9275fdb..7bf7ad3 100644
1284 @@ -60,6 +60,7 @@ distclean
1292 diff --git a/pc/config.h b/pc/config.h
1293 index de2b7ec..2ec5352 100644
1297 /* Define to the version of this package. */
1298 #define PACKAGE_VERSION "4.2.1"
1300 +/* Define to 1 if *printf supports %a format */
1301 +#define PRINTF_HAS_A_FORMAT 1
1303 /* Define to 1 if *printf supports %F format */
1305 #define PRINTF_HAS_F_FORMAT 1
1306 diff --git a/pc/config.sed b/pc/config.sed
1307 index 5b3cc32..a7ba878 100644
1310 @@ -273,6 +273,8 @@ s/^#undef HAVE_VPRINTF *$/#define HAVE_VPRINTF 1/
1312 #define HAVE__BOOL 1\
1314 +/^#undef PRINTF_HAS_A_FORMAT *$/c\
1315 +#define PRINTF_HAS_A_FORMAT 1
1316 /^#undef PRINTF_HAS_F_FORMAT *$/c\
1318 #define PRINTF_HAS_F_FORMAT 1\