]> git.pld-linux.org Git - packages/gawk.git/blob - 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
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.
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
23 diff --git a/NEWS b/NEWS
24 index 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  
39 diff --git a/builtin.c b/builtin.c
40 index 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)
88 diff --git a/configh.in b/configh.in
89 index 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  
102 diff --git a/configure b/configure
103 index 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
155 diff --git a/configure.ac b/configure.ac
156 index 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  
194 diff --git a/doc/awkcard.in b/doc/awkcard.in
195 index 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
206 diff --git a/doc/gawk.1 b/doc/gawk.1
207 index 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
243 diff --git a/doc/gawk.info b/doc/gawk.info
244 index 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
1200 diff --git a/doc/gawk.texi b/doc/gawk.texi
1201 index 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
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:
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
1260 diff --git a/doc/wordlist b/doc/wordlist
1261 index 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
1280 diff --git a/doc/wordlist2 b/doc/wordlist2
1281 index 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
1292 diff --git a/pc/config.h b/pc/config.h
1293 index 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
1306 diff --git a/pc/config.sed b/pc/config.sed
1307 index 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 -- 
1320 2.14.4
1321
This page took 0.334673 seconds and 3 git commands to generate.