]>
Commit | Line | Data |
---|---|---|
9169c9b5 AM |
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 |