gawk-diffs
[Top][All Lists]
Advanced

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

[SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4102-g0dcd39b


From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4102-g0dcd39b
Date: Mon, 24 Aug 2020 03:26:22 -0400 (EDT)

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

The branch, gawk-5.1-stable has been updated
       via  0dcd39b002cff7785c38ce535f6e57d4208fefa6 (commit)
       via  e71664615529f419082b373ea7e44c35b0595a97 (commit)
      from  886abd96488a120c196eddaf5db7943ff1b565e8 (commit)

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

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

commit 0dcd39b002cff7785c38ce535f6e57d4208fefa6
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Mon Aug 24 10:25:56 2020 +0300

    Make all messages consistent: no final periods.

diff --git a/ChangeLog b/ChangeLog
index 9912037..e2d20cf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2020-08-24         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * awkgram.y, builtin.c, command.y, debug.c, gawkapi.c,
+       io.c, node.c: Make all messages consistent: Remove final periods
+       from messages that had them.
+       * TODO: Updated.
+
 2020-08-20         Arnold D. Robbins     <arnold@skeeve.com>
 
        * awk.h (NODE): Move valref completely out of the union. Fixes
diff --git a/TODO b/TODO
index 9d01baf..35254d5 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-Tue Jul 28 20:45:09 IDT 2020
+Thu Aug 20 12:18:22 IDT 2020
 ============================
 
 There were too many files tracking different thoughts and ideas for
@@ -30,9 +30,6 @@ Minor Cleanups and Code Improvements
        Lint option which would allow extensions and only complain
        about genuine errors.
 
-       Message cleanup:
-       * Messages are inconsistent about final punctuation (periods etc.)
-
        Go through the FIXMEs in the manual and fix as many as possible.
 
 Minor New Features
diff --git a/awkgram.c b/awkgram.c
index a8042f1..13c43ff 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -7468,7 +7468,7 @@ shadow_funcs()
 
        /* End with fatal if the user requested it.  */
        if (shadow && lintfunc == r_fatal)
-               lintwarn(_("there were shadowed variables."));
+               lintwarn(_("there were shadowed variables"));
 }
 
 
diff --git a/awkgram.y b/awkgram.y
index 4017b9b..cfc12e7 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -4966,7 +4966,7 @@ shadow_funcs()
 
        /* End with fatal if the user requested it.  */
        if (shadow && lintfunc == r_fatal)
-               lintwarn(_("there were shadowed variables."));
+               lintwarn(_("there were shadowed variables"));
 }
 
 
diff --git a/builtin.c b/builtin.c
index 9b5609f..afd866a 100644
--- a/builtin.c
+++ b/builtin.c
@@ -4154,7 +4154,7 @@ do_typeof(int nargs)
                        /* fall through */
                default:
                        if (res == NULL) {
-                               warning(_("typeof detected invalid flags 
combination `%s'; please file a bug report."), flags2str(arg->flags));
+                               warning(_("typeof detected invalid flags 
combination `%s'; please file a bug report"), flags2str(arg->flags));
                                res = "unknown";
                        }
                        break;
diff --git a/command.c b/command.c
index a922e51..ba5a0e5 100644
--- a/command.c
+++ b/command.c
@@ -1766,7 +1766,7 @@ yyreduce:
 #line 321 "command.y"
           {
                if (in_cmd_src(yyvsp[0]->a_string))
-                       yyerror(_("source: `%s': already sourced."), 
yyvsp[0]->a_string);
+                       yyerror(_("source: `%s': already sourced"), 
yyvsp[0]->a_string);
          }
 #line 1772 "command.c"
     break;
@@ -1775,7 +1775,7 @@ yyreduce:
 #line 326 "command.y"
           {
                if (! input_from_tty)
-                       yyerror(_("save: `%s': command not permitted."), 
yyvsp[0]->a_string);
+                       yyerror(_("save: `%s': command not permitted"), 
yyvsp[0]->a_string);
          }
 #line 1781 "command.c"
     break;
@@ -2537,93 +2537,93 @@ append_statement(CMDARG *stmt_list, char *stmt)
 
 struct cmdtoken cmdtab[] = {
 { "backtrace", "bt", D_backtrace, D_BACKTRACE, do_backtrace,
-       gettext_noop("backtrace [N] - print trace of all or N innermost 
(outermost if N < 0) frames.") },
+       gettext_noop("backtrace [N] - print trace of all or N innermost 
(outermost if N < 0) frames") },
 { "break", "b", D_break, D_BREAK, do_breakpoint,
-       gettext_noop("break [[filename:]N|function] - set breakpoint at the 
specified location.") },
+       gettext_noop("break [[filename:]N|function] - set breakpoint at the 
specified location") },
 { "clear", "", D_clear, D_CLEAR, do_clear,
-       gettext_noop("clear [[filename:]N|function] - delete breakpoints 
previously set.") },
+       gettext_noop("clear [[filename:]N|function] - delete breakpoints 
previously set") },
 { "commands", "", D_commands, D_COMMANDS, do_commands,
-       gettext_noop("commands [num] - starts a list of commands to be executed 
at a breakpoint(watchpoint) hit.") },
+       gettext_noop("commands [num] - starts a list of commands to be executed 
at a breakpoint(watchpoint) hit") },
 { "condition", "", D_condition, D_CONDITION, do_condition,
-       gettext_noop("condition num [expr] - set or clear breakpoint or 
watchpoint condition.") },
+       gettext_noop("condition num [expr] - set or clear breakpoint or 
watchpoint condition") },
 { "continue", "c", D_continue, D_CONTINUE, do_continue,
-       gettext_noop("continue [COUNT] - continue program being debugged.") },
+       gettext_noop("continue [COUNT] - continue program being debugged") },
 { "delete", "d", D_delete, D_DELETE, do_delete_breakpoint,
-       gettext_noop("delete [breakpoints] [range] - delete specified 
breakpoints.") },
+       gettext_noop("delete [breakpoints] [range] - delete specified 
breakpoints") },
 { "disable", "", D_disable, D_DISABLE, do_disable_breakpoint,
-       gettext_noop("disable [breakpoints] [range] - disable specified 
breakpoints.") },
+       gettext_noop("disable [breakpoints] [range] - disable specified 
breakpoints") },
 { "display", "", D_display, D_DISPLAY, do_display,
-       gettext_noop("display [var] - print value of variable each time the 
program stops.") },
+       gettext_noop("display [var] - print value of variable each time the 
program stops") },
 { "down", "", D_down, D_DOWN, do_down,
-       gettext_noop("down [N] - move N frames down the stack.") },
+       gettext_noop("down [N] - move N frames down the stack") },
 { "dump", "", D_dump, D_DUMP, do_dump_instructions,
-       gettext_noop("dump [filename] - dump instructions to file or stdout.") 
},
+       gettext_noop("dump [filename] - dump instructions to file or stdout") },
 { "enable", "e", D_enable, D_ENABLE, do_enable_breakpoint,
-       gettext_noop("enable [once|del] [breakpoints] [range] - enable 
specified breakpoints.") },
+       gettext_noop("enable [once|del] [breakpoints] [range] - enable 
specified breakpoints") },
 { "end", "", D_end, D_END, do_commands,
-       gettext_noop("end - end a list of commands or awk statements.") },
+       gettext_noop("end - end a list of commands or awk statements") },
 { "eval", "", D_eval, D_EVAL, do_eval,
-       gettext_noop("eval stmt|[p1, p2, ...] - evaluate awk statement(s).") },
+       gettext_noop("eval stmt|[p1, p2, ...] - evaluate awk statement(s)") },
 { "exit", "", D_quit, D_QUIT, do_quit,
-       gettext_noop("exit - (same as quit) exit debugger.") },
+       gettext_noop("exit - (same as quit) exit debugger") },
 { "finish", "", D_finish, D_FINISH, do_finish,
-       gettext_noop("finish - execute until selected stack frame returns.") },
+       gettext_noop("finish - execute until selected stack frame returns") },
 { "frame", "f", D_frame, D_FRAME, do_frame,
-       gettext_noop("frame [N] - select and print stack frame number N.") },
+       gettext_noop("frame [N] - select and print stack frame number N") },
 { "help", "h", D_help, D_HELP, do_help,
-       gettext_noop("help [command] - print list of commands or explanation of 
command.") },
+       gettext_noop("help [command] - print list of commands or explanation of 
command") },
 { "ignore", "", D_ignore, D_IGNORE, do_ignore_breakpoint,
-       gettext_noop("ignore N COUNT - set ignore-count of breakpoint number N 
to COUNT.") },
+       gettext_noop("ignore N COUNT - set ignore-count of breakpoint number N 
to COUNT") },
 { "info", "i", D_info, D_INFO, do_info,
-       gettext_noop("info topic - 
source|sources|variables|functions|break|frame|args|locals|display|watch.") },
+       gettext_noop("info topic - 
source|sources|variables|functions|break|frame|args|locals|display|watch") },
 { "list", "l", D_list, D_LIST, do_list,
-       gettext_noop("list [-|+|[filename:]lineno|function|range] - list 
specified line(s).") },
+       gettext_noop("list [-|+|[filename:]lineno|function|range] - list 
specified line(s)") },
 { "next", "n", D_next, D_NEXT, do_next,
-       gettext_noop("next [COUNT] - step program, proceeding through 
subroutine calls.") },
+       gettext_noop("next [COUNT] - step program, proceeding through 
subroutine calls") },
 { "nexti", "ni", D_nexti, D_NEXTI, do_nexti,
-       gettext_noop("nexti [COUNT] - step one instruction, but proceed through 
subroutine calls.") },
+       gettext_noop("nexti [COUNT] - step one instruction, but proceed through 
subroutine calls") },
 { "option", "o", D_option, D_OPTION, do_option,
-       gettext_noop("option [name[=value]] - set or display debugger 
option(s).") },
+       gettext_noop("option [name[=value]] - set or display debugger 
option(s)") },
 { "print", "p", D_print, D_PRINT, do_print_var,
-       gettext_noop("print var [var] - print value of a variable or array.") },
+       gettext_noop("print var [var] - print value of a variable or array") },
 { "printf", "", D_printf, D_PRINTF, do_print_f,
-       gettext_noop("printf format, [arg], ... - formatted output.") },
+       gettext_noop("printf format, [arg], ... - formatted output") },
 { "quit", "q", D_quit, D_QUIT, do_quit,
-       gettext_noop("quit - exit debugger.") },
+       gettext_noop("quit - exit debugger") },
 { "return", "", D_return, D_RETURN, do_return,
-       gettext_noop("return [value] - make selected stack frame return to its 
caller.") },
+       gettext_noop("return [value] - make selected stack frame return to its 
caller") },
 { "run", "r", D_run, D_RUN, do_run,
-       gettext_noop("run - start or restart executing program.") },
+       gettext_noop("run - start or restart executing program") },
 #ifdef HAVE_LIBREADLINE
 { "save", "", D_save, D_SAVE, do_save,
-       gettext_noop("save filename - save commands from the session to file.") 
},
+       gettext_noop("save filename - save commands from the session to file") 
},
 #endif
 { "set", "", D_set, D_SET, do_set_var,
-       gettext_noop("set var = value - assign value to a scalar variable.") },
+       gettext_noop("set var = value - assign value to a scalar variable") },
 { "silent", "", D_silent, D_SILENT, do_commands,
-       gettext_noop("silent - suspends usual message when stopped at a 
breakpoint/watchpoint.") },
+       gettext_noop("silent - suspends usual message when stopped at a 
breakpoint/watchpoint") },
 { "source", "", D_source, D_SOURCE, do_source,
-       gettext_noop("source file - execute commands from file.") },
+       gettext_noop("source file - execute commands from file") },
 { "step", "s", D_step, D_STEP, do_step,
-       gettext_noop("step [COUNT] - step program until it reaches a different 
source line.") },
+       gettext_noop("step [COUNT] - step program until it reaches a different 
source line") },
 { "stepi", "si", D_stepi, D_STEPI, do_stepi,
-       gettext_noop("stepi [COUNT] - step one instruction exactly.") },
+       gettext_noop("stepi [COUNT] - step one instruction exactly") },
 { "tbreak", "t", D_tbreak, D_TBREAK, do_tmp_breakpoint,
-       gettext_noop("tbreak [[filename:]N|function] - set a temporary 
breakpoint.") },
+       gettext_noop("tbreak [[filename:]N|function] - set a temporary 
breakpoint") },
 { "trace", "", D_trace, D_TRACE, do_trace_instruction,
-       gettext_noop("trace on|off - print instruction before executing.") },
+       gettext_noop("trace on|off - print instruction before executing") },
 { "undisplay", "", D_undisplay, D_UNDISPLAY, do_undisplay,
-       gettext_noop("undisplay [N] - remove variable(s) from automatic display 
list.") },
+       gettext_noop("undisplay [N] - remove variable(s) from automatic display 
list") },
 { "until", "u", D_until, D_UNTIL, do_until,
-       gettext_noop("until [[filename:]N|function] - execute until program 
reaches a different line or line N within current frame.") },
+       gettext_noop("until [[filename:]N|function] - execute until program 
reaches a different line or line N within current frame") },
 { "unwatch", "", D_unwatch, D_UNWATCH, do_unwatch,
-       gettext_noop("unwatch [N] - remove variable(s) from watch list.") },
+       gettext_noop("unwatch [N] - remove variable(s) from watch list") },
 { "up",        "", D_up, D_UP, do_up,
-       gettext_noop("up [N] - move N frames up the stack.") },
+       gettext_noop("up [N] - move N frames up the stack") },
 { "watch", "w", D_watch, D_WATCH, do_watch,
-       gettext_noop("watch var - set a watchpoint for a variable.") },
+       gettext_noop("watch var - set a watchpoint for a variable") },
 { "where", "", D_backtrace, D_BACKTRACE, do_backtrace,
-       gettext_noop("where [N] - (same as backtrace) print trace of all or N 
innermost (outermost if N < 0) frames.") },
+       gettext_noop("where [N] - (same as backtrace) print trace of all or N 
innermost (outermost if N < 0) frames") },
 { NULL, NULL, D_illegal, 0, (Func_cmd) 0,
         NULL },
 };
diff --git a/command.y b/command.y
index c02b84b..3936207 100644
--- a/command.y
+++ b/command.y
@@ -320,12 +320,12 @@ command
        | D_SOURCE D_STRING
          {
                if (in_cmd_src($2->a_string))
-                       yyerror(_("source: `%s': already sourced."), 
$2->a_string);
+                       yyerror(_("source: `%s': already sourced"), 
$2->a_string);
          }
        | D_SAVE D_STRING
          {
                if (! input_from_tty)
-                       yyerror(_("save: `%s': command not permitted."), 
$2->a_string);
+                       yyerror(_("save: `%s': command not permitted"), 
$2->a_string);
          }
        | D_COMMANDS commands_arg
          {
@@ -816,93 +816,93 @@ append_statement(CMDARG *stmt_list, char *stmt)
 
 struct cmdtoken cmdtab[] = {
 { "backtrace", "bt", D_backtrace, D_BACKTRACE, do_backtrace,
-       gettext_noop("backtrace [N] - print trace of all or N innermost 
(outermost if N < 0) frames.") },
+       gettext_noop("backtrace [N] - print trace of all or N innermost 
(outermost if N < 0) frames") },
 { "break", "b", D_break, D_BREAK, do_breakpoint,
-       gettext_noop("break [[filename:]N|function] - set breakpoint at the 
specified location.") },
+       gettext_noop("break [[filename:]N|function] - set breakpoint at the 
specified location") },
 { "clear", "", D_clear, D_CLEAR, do_clear,
-       gettext_noop("clear [[filename:]N|function] - delete breakpoints 
previously set.") },
+       gettext_noop("clear [[filename:]N|function] - delete breakpoints 
previously set") },
 { "commands", "", D_commands, D_COMMANDS, do_commands,
-       gettext_noop("commands [num] - starts a list of commands to be executed 
at a breakpoint(watchpoint) hit.") },
+       gettext_noop("commands [num] - starts a list of commands to be executed 
at a breakpoint(watchpoint) hit") },
 { "condition", "", D_condition, D_CONDITION, do_condition,
-       gettext_noop("condition num [expr] - set or clear breakpoint or 
watchpoint condition.") },
+       gettext_noop("condition num [expr] - set or clear breakpoint or 
watchpoint condition") },
 { "continue", "c", D_continue, D_CONTINUE, do_continue,
-       gettext_noop("continue [COUNT] - continue program being debugged.") },
+       gettext_noop("continue [COUNT] - continue program being debugged") },
 { "delete", "d", D_delete, D_DELETE, do_delete_breakpoint,
-       gettext_noop("delete [breakpoints] [range] - delete specified 
breakpoints.") },
+       gettext_noop("delete [breakpoints] [range] - delete specified 
breakpoints") },
 { "disable", "", D_disable, D_DISABLE, do_disable_breakpoint,
-       gettext_noop("disable [breakpoints] [range] - disable specified 
breakpoints.") },
+       gettext_noop("disable [breakpoints] [range] - disable specified 
breakpoints") },
 { "display", "", D_display, D_DISPLAY, do_display,
-       gettext_noop("display [var] - print value of variable each time the 
program stops.") },
+       gettext_noop("display [var] - print value of variable each time the 
program stops") },
 { "down", "", D_down, D_DOWN, do_down,
-       gettext_noop("down [N] - move N frames down the stack.") },
+       gettext_noop("down [N] - move N frames down the stack") },
 { "dump", "", D_dump, D_DUMP, do_dump_instructions,
-       gettext_noop("dump [filename] - dump instructions to file or stdout.") 
},
+       gettext_noop("dump [filename] - dump instructions to file or stdout") },
 { "enable", "e", D_enable, D_ENABLE, do_enable_breakpoint,
-       gettext_noop("enable [once|del] [breakpoints] [range] - enable 
specified breakpoints.") },
+       gettext_noop("enable [once|del] [breakpoints] [range] - enable 
specified breakpoints") },
 { "end", "", D_end, D_END, do_commands,
-       gettext_noop("end - end a list of commands or awk statements.") },
+       gettext_noop("end - end a list of commands or awk statements") },
 { "eval", "", D_eval, D_EVAL, do_eval,
-       gettext_noop("eval stmt|[p1, p2, ...] - evaluate awk statement(s).") },
+       gettext_noop("eval stmt|[p1, p2, ...] - evaluate awk statement(s)") },
 { "exit", "", D_quit, D_QUIT, do_quit,
-       gettext_noop("exit - (same as quit) exit debugger.") },
+       gettext_noop("exit - (same as quit) exit debugger") },
 { "finish", "", D_finish, D_FINISH, do_finish,
-       gettext_noop("finish - execute until selected stack frame returns.") },
+       gettext_noop("finish - execute until selected stack frame returns") },
 { "frame", "f", D_frame, D_FRAME, do_frame,
-       gettext_noop("frame [N] - select and print stack frame number N.") },
+       gettext_noop("frame [N] - select and print stack frame number N") },
 { "help", "h", D_help, D_HELP, do_help,
-       gettext_noop("help [command] - print list of commands or explanation of 
command.") },
+       gettext_noop("help [command] - print list of commands or explanation of 
command") },
 { "ignore", "", D_ignore, D_IGNORE, do_ignore_breakpoint,
-       gettext_noop("ignore N COUNT - set ignore-count of breakpoint number N 
to COUNT.") },
+       gettext_noop("ignore N COUNT - set ignore-count of breakpoint number N 
to COUNT") },
 { "info", "i", D_info, D_INFO, do_info,
-       gettext_noop("info topic - 
source|sources|variables|functions|break|frame|args|locals|display|watch.") },
+       gettext_noop("info topic - 
source|sources|variables|functions|break|frame|args|locals|display|watch") },
 { "list", "l", D_list, D_LIST, do_list,
-       gettext_noop("list [-|+|[filename:]lineno|function|range] - list 
specified line(s).") },
+       gettext_noop("list [-|+|[filename:]lineno|function|range] - list 
specified line(s)") },
 { "next", "n", D_next, D_NEXT, do_next,
-       gettext_noop("next [COUNT] - step program, proceeding through 
subroutine calls.") },
+       gettext_noop("next [COUNT] - step program, proceeding through 
subroutine calls") },
 { "nexti", "ni", D_nexti, D_NEXTI, do_nexti,
-       gettext_noop("nexti [COUNT] - step one instruction, but proceed through 
subroutine calls.") },
+       gettext_noop("nexti [COUNT] - step one instruction, but proceed through 
subroutine calls") },
 { "option", "o", D_option, D_OPTION, do_option,
-       gettext_noop("option [name[=value]] - set or display debugger 
option(s).") },
+       gettext_noop("option [name[=value]] - set or display debugger 
option(s)") },
 { "print", "p", D_print, D_PRINT, do_print_var,
-       gettext_noop("print var [var] - print value of a variable or array.") },
+       gettext_noop("print var [var] - print value of a variable or array") },
 { "printf", "", D_printf, D_PRINTF, do_print_f,
-       gettext_noop("printf format, [arg], ... - formatted output.") },
+       gettext_noop("printf format, [arg], ... - formatted output") },
 { "quit", "q", D_quit, D_QUIT, do_quit,
-       gettext_noop("quit - exit debugger.") },
+       gettext_noop("quit - exit debugger") },
 { "return", "", D_return, D_RETURN, do_return,
-       gettext_noop("return [value] - make selected stack frame return to its 
caller.") },
+       gettext_noop("return [value] - make selected stack frame return to its 
caller") },
 { "run", "r", D_run, D_RUN, do_run,
-       gettext_noop("run - start or restart executing program.") },
+       gettext_noop("run - start or restart executing program") },
 #ifdef HAVE_LIBREADLINE
 { "save", "", D_save, D_SAVE, do_save,
-       gettext_noop("save filename - save commands from the session to file.") 
},
+       gettext_noop("save filename - save commands from the session to file") 
},
 #endif
 { "set", "", D_set, D_SET, do_set_var,
-       gettext_noop("set var = value - assign value to a scalar variable.") },
+       gettext_noop("set var = value - assign value to a scalar variable") },
 { "silent", "", D_silent, D_SILENT, do_commands,
-       gettext_noop("silent - suspends usual message when stopped at a 
breakpoint/watchpoint.") },
+       gettext_noop("silent - suspends usual message when stopped at a 
breakpoint/watchpoint") },
 { "source", "", D_source, D_SOURCE, do_source,
-       gettext_noop("source file - execute commands from file.") },
+       gettext_noop("source file - execute commands from file") },
 { "step", "s", D_step, D_STEP, do_step,
-       gettext_noop("step [COUNT] - step program until it reaches a different 
source line.") },
+       gettext_noop("step [COUNT] - step program until it reaches a different 
source line") },
 { "stepi", "si", D_stepi, D_STEPI, do_stepi,
-       gettext_noop("stepi [COUNT] - step one instruction exactly.") },
+       gettext_noop("stepi [COUNT] - step one instruction exactly") },
 { "tbreak", "t", D_tbreak, D_TBREAK, do_tmp_breakpoint,
-       gettext_noop("tbreak [[filename:]N|function] - set a temporary 
breakpoint.") },
+       gettext_noop("tbreak [[filename:]N|function] - set a temporary 
breakpoint") },
 { "trace", "", D_trace, D_TRACE, do_trace_instruction,
-       gettext_noop("trace on|off - print instruction before executing.") },
+       gettext_noop("trace on|off - print instruction before executing") },
 { "undisplay", "", D_undisplay, D_UNDISPLAY, do_undisplay,
-       gettext_noop("undisplay [N] - remove variable(s) from automatic display 
list.") },
+       gettext_noop("undisplay [N] - remove variable(s) from automatic display 
list") },
 { "until", "u", D_until, D_UNTIL, do_until,
-       gettext_noop("until [[filename:]N|function] - execute until program 
reaches a different line or line N within current frame.") },
+       gettext_noop("until [[filename:]N|function] - execute until program 
reaches a different line or line N within current frame") },
 { "unwatch", "", D_unwatch, D_UNWATCH, do_unwatch,
-       gettext_noop("unwatch [N] - remove variable(s) from watch list.") },
+       gettext_noop("unwatch [N] - remove variable(s) from watch list") },
 { "up",        "", D_up, D_UP, do_up,
-       gettext_noop("up [N] - move N frames up the stack.") },
+       gettext_noop("up [N] - move N frames up the stack") },
 { "watch", "w", D_watch, D_WATCH, do_watch,
-       gettext_noop("watch var - set a watchpoint for a variable.") },
+       gettext_noop("watch var - set a watchpoint for a variable") },
 { "where", "", D_backtrace, D_BACKTRACE, do_backtrace,
-       gettext_noop("where [N] - (same as backtrace) print trace of all or N 
innermost (outermost if N < 0) frames.") },
+       gettext_noop("where [N] - (same as backtrace) print trace of all or N 
innermost (outermost if N < 0) frames") },
 { NULL, NULL, D_illegal, 0, (Func_cmd) 0,
         NULL },
 };
diff --git a/debug.c b/debug.c
index 343d2d0..3dd53e1 100644
--- a/debug.c
+++ b/debug.c
@@ -254,19 +254,19 @@ static int history_size = DEFAULT_HISTSIZE;  /* max # of 
lines in history file *
 
 static const struct dbg_option option_list[] = {
 {"history_size", &history_size, NULL, &set_history_size,
-       gettext_noop("set or show the number of lines to keep in history 
file.") },
+       gettext_noop("set or show the number of lines to keep in history file") 
},
 {"listsize", &list_size, NULL, &set_listsize,
-       gettext_noop("set or show the list command window size.") },
+       gettext_noop("set or show the list command window size") },
 {"outfile", NULL, &output_file, &set_gawk_output,
-       gettext_noop("set or show gawk output file.") },
+       gettext_noop("set or show gawk output file") },
 {"prompt", NULL, &dgawk_prompt, &set_prompt,
-       gettext_noop("set or show debugger prompt."), },
+       gettext_noop("set or show debugger prompt"), },
 {"save_history", &do_save_history, NULL, &set_save_history,
-       gettext_noop("(un)set or show saving of command history 
(value=on|off).") },
+       gettext_noop("(un)set or show saving of command history 
(value=on|off)") },
 {"save_options", &do_save_options, NULL, &set_save_options,
-       gettext_noop("(un)set or show saving of options (value=on|off).") },
+       gettext_noop("(un)set or show saving of options (value=on|off)") },
 {"trace", &do_trace, NULL, &set_trace,
-       gettext_noop("(un)set or show instruction tracing (value=on|off).") },
+       gettext_noop("(un)set or show instruction tracing (value=on|off)") },
 {0, NULL, NULL, NULL, 0},
 };
 
@@ -355,7 +355,7 @@ if (--val) \
 #define CHECK_PROG_RUNNING() \
        do { \
                if (! prog_running) { \
-                       d_error(_("program not running.")); \
+                       d_error(_("program not running")); \
                        return false; \
                } \
        } while (false)
@@ -490,7 +490,7 @@ source_find(char *src)
        int errno_val = 0;
 
        if (src == NULL || *src == '\0') {
-               d_error(_("no current source file."));
+               d_error(_("no current source file"));
                return NULL;
        }
 
@@ -3031,7 +3031,7 @@ do_continue(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
        }
        b = find_breakpoint(stop.break_point);
        if (b == NULL) {
-               d_error(_("invalid breakpoint number %d."), stop.break_point);
+               d_error(_("invalid breakpoint number %d"), stop.break_point);
                return false;
        }
        b->flags |= BP_IGNORE;
@@ -4864,7 +4864,7 @@ unserialize_list(int type)
                        field_cnt++;
                        if (field_cnt == MAX_FIELD)
 #ifdef GAWKDEBUG
-                               fatal("Increase MAX_FIELD and recompile.");
+                               fatal("Increase MAX_FIELD and recompile");
 #else
                                return;
 #endif
diff --git a/gawkapi.c b/gawkapi.c
index 3dd4b4e..3ae837f 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -511,7 +511,7 @@ assign_number(NODE *node, awk_value_t *val)
                val->num_ptr = &node->mpg_i;
                break;
        default:
-               fatal(_("node_to_awk_value: detected invalid numeric flags 
combination `%s'; please file a bug report."), flags2str(node->flags));
+               fatal(_("node_to_awk_value: detected invalid numeric flags 
combination `%s'; please file a bug report"), flags2str(node->flags));
                break;
        }
 #endif
@@ -598,7 +598,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, 
awk_valtype_t wanted)
                                }
                                /* fall through */
                        default:
-                               warning(_("node_to_awk_value detected invalid 
flags combination `%s'; please file a bug report."), flags2str(node->flags));
+                               warning(_("node_to_awk_value detected invalid 
flags combination `%s'; please file a bug report"), flags2str(node->flags));
                                val->val_type = AWK_UNDEFINED;
                                break;
                        }
@@ -632,7 +632,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, 
awk_valtype_t wanted)
                                }
                                /* fall through */
                        default:
-                               warning(_("node_to_awk_value detected invalid 
flags combination `%s'; please file a bug report."), flags2str(node->flags));
+                               warning(_("node_to_awk_value detected invalid 
flags combination `%s'; please file a bug report"), flags2str(node->flags));
                                val->val_type = AWK_UNDEFINED;
                                break;
                        }
@@ -659,7 +659,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, 
awk_valtype_t wanted)
                                }
                                /* fall through */
                        default:
-                               warning(_("node_to_awk_value detected invalid 
flags combination `%s'; please file a bug report."), flags2str(node->flags));
+                               warning(_("node_to_awk_value detected invalid 
flags combination `%s'; please file a bug report"), flags2str(node->flags));
                                val->val_type = AWK_UNDEFINED;
                                break;
                        }
@@ -692,7 +692,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, 
awk_valtype_t wanted)
                                }
                                /* fall through */
                        default:
-                               warning(_("node_to_awk_value detected invalid 
flags combination `%s'; please file a bug report."), flags2str(node->flags));
+                               warning(_("node_to_awk_value detected invalid 
flags combination `%s'; please file a bug report"), flags2str(node->flags));
                                val->val_type = AWK_UNDEFINED;
                                break;
                        }
diff --git a/io.c b/io.c
index 7c69fcf..2478f0c 100644
--- a/io.c
+++ b/io.c
@@ -1166,7 +1166,7 @@ close_one()
                        rp->flag |= RED_USED;
                        errno = 0;
                        if (rp->output.gawk_fclose(rp->output.fp, 
rp->output.opaque) != 0)
-                               warning(_("close of `%s' failed: %s."),
+                               warning(_("close of `%s' failed: %s"),
                                        rp->value, strerror(errno));
                        rp->output.fp = NULL;
                        break;
@@ -1454,13 +1454,13 @@ flush_io()
                                        messagefunc = r_warning;
 
                                if ((rp->flag & RED_PIPE) != 0)
-                                       messagefunc(_("pipe flush of `%s' 
failed: %s."),
+                                       messagefunc(_("pipe flush of `%s' 
failed: %s"),
                                                rp->value, strerror(errno));
                                else if ((rp->flag & RED_TWOWAY) != 0)
-                                       messagefunc(_("co-process flush of pipe 
to `%s' failed: %s."),
+                                       messagefunc(_("co-process flush of pipe 
to `%s' failed: %s"),
                                                rp->value, strerror(errno));
                                else
-                                       messagefunc(_("file flush of `%s' 
failed: %s."),
+                                       messagefunc(_("file flush of `%s' 
failed: %s"),
                                                rp->value, strerror(errno));
                                status++;
                        }
diff --git a/node.c b/node.c
index 24b7ac5..707d106 100644
--- a/node.c
+++ b/node.c
@@ -777,7 +777,7 @@ str2wstr(NODE *n, size_t **ptr)
                        /* Warn the user something's wrong */
                        if (! warned) {
                                warned = true;
-                               warning(_("Invalid multibyte data detected. 
There may be a mismatch between your data and your locale."));
+                               warning(_("Invalid multibyte data detected. 
There may be a mismatch between your data and your locale"));
                        }
 
                        /*
diff --git a/test/ChangeLog b/test/ChangeLog
index 6cc960b..7b1184a 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,7 @@
+2020-08-24         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * mbstr1.ok, mbstr2.ok: Updated after code changes.
+
 2020-08-20         Arnold D. Robbins     <arnold@skeeve.com>
 
        * profile14.ok: Updated. Somehow it was not done right to
diff --git a/test/mbstr1.ok b/test/mbstr1.ok
index 3fd1bf8..73c021b 100644
--- a/test/mbstr1.ok
+++ b/test/mbstr1.ok
@@ -1,3 +1,3 @@
-gawk: mbstr1.awk:2: warning: Invalid multibyte data detected. There may be a 
mismatch between your data and your locale.
+gawk: mbstr1.awk:2: warning: Invalid multibyte data detected. There may be a 
mismatch between your data and your locale
 4
 1
diff --git a/test/mbstr2.ok b/test/mbstr2.ok
index 29ac876..429ea91 100644
--- a/test/mbstr2.ok
+++ b/test/mbstr2.ok
@@ -1,5 +1,5 @@
 2007
-gawk: mbstr2.awk:1: (FILENAME=- FNR=2) warning: Invalid multibyte data 
detected. There may be a mismatch between your data and your locale.
+gawk: mbstr2.awk:1: (FILENAME=- FNR=2) warning: Invalid multibyte data 
detected. There may be a mismatch between your data and your locale
 2007
 2007
 2007

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=e71664615529f419082b373ea7e44c35b0595a97

commit e71664615529f419082b373ea7e44c35b0595a97
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Mon Aug 24 10:20:47 2020 +0300

    Doc update, fix a FIXME.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index f5a3053..cdfd827 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2020-08-24         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawktexi.in (Arithmetic Ops): Update text to fix a FIXME. Document
+       that modulus is POSIX compliant.
+
 2020-08-18         Arnold D. Robbins     <arnold@skeeve.com>
 
        * gawktexi.in (String Functions): Fix a typo in the description
diff --git a/doc/gawk.info b/doc/gawk.info
index ffeebc2..b7675b6 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -8541,6 +8541,10 @@ that 'X % Y' is negative if X is negative.  Thus:
 
      -17 % 8 = -1
 
+This definition is compliant with the POSIX standard, which says that
+the '%' operator produces results equivalent to using the standard C
+'fmod()' function, and that function in turn works as just described.
+
    In other 'awk' implementations, the signedness of the remainder may
 be machine-dependent.
 
@@ -33984,7 +33988,7 @@ Index
 * () (parentheses), in a profile:        Profiling.           (line 146)
 * * (asterisk), * operator, as regexp operator: Regexp Operator Details.
                                                               (line  91)
-* * (asterisk), ** operator:             Arithmetic Ops.      (line  81)
+* * (asterisk), ** operator:             Arithmetic Ops.      (line  85)
 * * (asterisk), *= operator:             Assignment Ops.      (line 129)
 * * (asterisk), **= operator:            Assignment Ops.      (line 129)
 * * (asterisk), ** operator <1>:         Precedence.          (line  48)
@@ -34425,7 +34429,7 @@ Index
 * associative arrays:                    Array Intro.         (line  48)
 * asterisk (*), * operator, as regexp operator: Regexp Operator Details.
                                                               (line  91)
-* asterisk (*), ** operator:             Arithmetic Ops.      (line  81)
+* asterisk (*), ** operator:             Arithmetic Ops.      (line  85)
 * asterisk (*), *= operator:             Assignment Ops.      (line 129)
 * asterisk (*), **= operator:            Assignment Ops.      (line 129)
 * asterisk (*), ** operator <1>:         Precedence.          (line  48)
@@ -36464,7 +36468,7 @@ Index
 * portability, close() function and:     Close Files And Pipes.
                                                               (line  81)
 * portability, new awk vs. old awk:      Strings And Numbers. (line  56)
-* portability, ** operator and:          Arithmetic Ops.      (line  81)
+* portability, ** operator and:          Arithmetic Ops.      (line  85)
 * portability, **= operator and:         Assignment Ops.      (line 144)
 * portability, operators:                Increment Ops.       (line  60)
 * portability, operators, not in POSIX awk: Precedence.       (line  97)
@@ -37564,436 +37568,436 @@ Node: Locale influences conversions364349
 Ref: table-locale-affects367107
 Node: All Operators367725
 Node: Arithmetic Ops368354
-Node: Concatenation370860
-Ref: Concatenation-Footnote-1373707
-Node: Assignment Ops373814
-Ref: table-assign-ops378805
-Node: Increment Ops380118
-Node: Truth Values and Conditions383578
-Node: Truth Values384652
-Node: Typing and Comparison385700
-Node: Variable Typing386520
-Ref: Variable Typing-Footnote-1392983
-Ref: Variable Typing-Footnote-2393055
-Node: Comparison Operators393132
-Ref: table-relational-ops393551
-Node: POSIX String Comparison397046
-Ref: POSIX String Comparison-Footnote-1398741
-Ref: POSIX String Comparison-Footnote-2398880
-Node: Boolean Ops398964
-Ref: Boolean Ops-Footnote-1403446
-Node: Conditional Exp403538
-Node: Function Calls405274
-Node: Precedence409151
-Node: Locales412810
-Node: Expressions Summary414442
-Node: Patterns and Actions417015
-Node: Pattern Overview418135
-Node: Regexp Patterns419812
-Node: Expression Patterns420354
-Node: Ranges424135
-Node: BEGIN/END427243
-Node: Using BEGIN/END428004
-Ref: Using BEGIN/END-Footnote-1430740
-Node: I/O And BEGIN/END430846
-Node: BEGINFILE/ENDFILE433160
-Node: Empty436073
-Node: Using Shell Variables436390
-Node: Action Overview438664
-Node: Statements440989
-Node: If Statement442837
-Node: While Statement444332
-Node: Do Statement446360
-Node: For Statement447508
-Node: Switch Statement450679
-Node: Break Statement453120
-Node: Continue Statement455212
-Node: Next Statement457039
-Node: Nextfile Statement459422
-Node: Exit Statement462074
-Node: Built-in Variables464477
-Node: User-modified465610
-Node: Auto-set473377
-Ref: Auto-set-Footnote-1490184
-Ref: Auto-set-Footnote-2490390
-Node: ARGC and ARGV490446
-Node: Pattern Action Summary494659
-Node: Arrays497089
-Node: Array Basics498418
-Node: Array Intro499262
-Ref: figure-array-elements501237
-Ref: Array Intro-Footnote-1503941
-Node: Reference to Elements504069
-Node: Assigning Elements506533
-Node: Array Example507024
-Node: Scanning an Array508783
-Node: Controlling Scanning511805
-Ref: Controlling Scanning-Footnote-1518261
-Node: Numeric Array Subscripts518577
-Node: Uninitialized Subscripts520761
-Node: Delete522380
-Ref: Delete-Footnote-1525132
-Node: Multidimensional525189
-Node: Multiscanning528284
-Node: Arrays of Arrays529875
-Node: Arrays Summary534643
-Node: Functions536736
-Node: Built-in537774
-Node: Calling Built-in538855
-Node: Numeric Functions540851
-Ref: Numeric Functions-Footnote-1544879
-Ref: Numeric Functions-Footnote-2545527
-Ref: Numeric Functions-Footnote-3545575
-Node: String Functions545847
-Ref: String Functions-Footnote-1569988
-Ref: String Functions-Footnote-2570116
-Ref: String Functions-Footnote-3570364
-Node: Gory Details570451
-Ref: table-sub-escapes572242
-Ref: table-sub-proposed573761
-Ref: table-posix-sub575124
-Ref: table-gensub-escapes576665
-Ref: Gory Details-Footnote-1577488
-Node: I/O Functions577642
-Ref: table-system-return-values584110
-Ref: I/O Functions-Footnote-1586190
-Ref: I/O Functions-Footnote-2586338
-Node: Time Functions586458
-Ref: Time Functions-Footnote-1597129
-Ref: Time Functions-Footnote-2597197
-Ref: Time Functions-Footnote-3597355
-Ref: Time Functions-Footnote-4597466
-Ref: Time Functions-Footnote-5597578
-Ref: Time Functions-Footnote-6597805
-Node: Bitwise Functions598071
-Ref: table-bitwise-ops598665
-Ref: Bitwise Functions-Footnote-1604728
-Ref: Bitwise Functions-Footnote-2604901
-Node: Type Functions605092
-Node: I18N Functions607955
-Node: User-defined609606
-Node: Definition Syntax610418
-Ref: Definition Syntax-Footnote-1616105
-Node: Function Example616176
-Ref: Function Example-Footnote-1619098
-Node: Function Calling619120
-Node: Calling A Function619708
-Node: Variable Scope620666
-Node: Pass By Value/Reference623660
-Node: Function Caveats626304
-Ref: Function Caveats-Footnote-1628351
-Node: Return Statement628471
-Node: Dynamic Typing631450
-Node: Indirect Calls632380
-Ref: Indirect Calls-Footnote-1642632
-Node: Functions Summary642760
-Node: Library Functions645465
-Ref: Library Functions-Footnote-1649072
-Ref: Library Functions-Footnote-2649215
-Node: Library Names649386
-Ref: Library Names-Footnote-1653053
-Ref: Library Names-Footnote-2653276
-Node: General Functions653362
-Node: Strtonum Function654465
-Node: Assert Function657487
-Node: Round Function660813
-Node: Cliff Random Function662353
-Node: Ordinal Functions663369
-Ref: Ordinal Functions-Footnote-1666432
-Ref: Ordinal Functions-Footnote-2666684
-Node: Join Function666894
-Ref: Join Function-Footnote-1668664
-Node: Getlocaltime Function668864
-Node: Readfile Function672606
-Node: Shell Quoting674583
-Node: Data File Management675984
-Node: Filetrans Function676616
-Node: Rewind Function680712
-Node: File Checking682621
-Ref: File Checking-Footnote-1683955
-Node: Empty Files684156
-Node: Ignoring Assigns686135
-Node: Getopt Function687685
-Ref: Getopt Function-Footnote-1702897
-Node: Passwd Functions703097
-Ref: Passwd Functions-Footnote-1711936
-Node: Group Functions712024
-Ref: Group Functions-Footnote-1719922
-Node: Walking Arrays720129
-Node: Library Functions Summary723137
-Node: Library Exercises724543
-Node: Sample Programs725008
-Node: Running Examples725778
-Node: Clones726506
-Node: Cut Program727730
-Node: Egrep Program737659
-Ref: Egrep Program-Footnote-1745171
-Node: Id Program745281
-Node: Split Program748961
-Ref: Split Program-Footnote-1752419
-Node: Tee Program752548
-Node: Uniq Program755338
-Node: Wc Program762959
-Ref: Wc Program-Footnote-1767214
-Node: Miscellaneous Programs767308
-Node: Dupword Program768521
-Node: Alarm Program770551
-Node: Translate Program775406
-Ref: Translate Program-Footnote-1779971
-Node: Labels Program780241
-Ref: Labels Program-Footnote-1783592
-Node: Word Sorting783676
-Node: History Sorting787748
-Node: Extract Program789973
-Node: Simple Sed798027
-Node: Igawk Program801101
-Ref: Igawk Program-Footnote-1815432
-Ref: Igawk Program-Footnote-2815634
-Ref: Igawk Program-Footnote-3815756
-Node: Anagram Program815871
-Node: Signature Program818933
-Node: Programs Summary820180
-Node: Programs Exercises821394
-Ref: Programs Exercises-Footnote-1825523
-Node: Advanced Features825614
-Node: Nondecimal Data827604
-Node: Array Sorting829195
-Node: Controlling Array Traversal829895
-Ref: Controlling Array Traversal-Footnote-1838263
-Node: Array Sorting Functions838381
-Ref: Array Sorting Functions-Footnote-1843472
-Node: Two-way I/O843668
-Ref: Two-way I/O-Footnote-1851389
-Ref: Two-way I/O-Footnote-2851576
-Node: TCP/IP Networking851658
-Node: Profiling854776
-Node: Advanced Features Summary864090
-Node: Internationalization865934
-Node: I18N and L10N867414
-Node: Explaining gettext868101
-Ref: Explaining gettext-Footnote-1873993
-Ref: Explaining gettext-Footnote-2874178
-Node: Programmer i18n874343
-Ref: Programmer i18n-Footnote-1879292
-Node: Translator i18n879341
-Node: String Extraction880135
-Ref: String Extraction-Footnote-1881267
-Node: Printf Ordering881353
-Ref: Printf Ordering-Footnote-1884139
-Node: I18N Portability884203
-Ref: I18N Portability-Footnote-1886659
-Node: I18N Example886722
-Ref: I18N Example-Footnote-1889997
-Ref: I18N Example-Footnote-2890070
-Node: Gawk I18N890179
-Node: I18N Summary890828
-Node: Debugger892169
-Node: Debugging893169
-Node: Debugging Concepts893610
-Node: Debugging Terms895419
-Node: Awk Debugging897994
-Ref: Awk Debugging-Footnote-1898939
-Node: Sample Debugging Session899071
-Node: Debugger Invocation899605
-Node: Finding The Bug900991
-Node: List of Debugger Commands907465
-Node: Breakpoint Control908798
-Node: Debugger Execution Control912492
-Node: Viewing And Changing Data915854
-Node: Execution Stack919395
-Node: Debugger Info921032
-Node: Miscellaneous Debugger Commands925103
-Node: Readline Support930165
-Node: Limitations931061
-Node: Debugging Summary933615
-Node: Namespaces934894
-Node: Global Namespace936005
-Node: Qualified Names937403
-Node: Default Namespace938402
-Node: Changing The Namespace939143
-Node: Naming Rules940757
-Node: Internal Name Management942605
-Node: Namespace Example943647
-Node: Namespace And Features946209
-Node: Namespace Summary947644
-Node: Arbitrary Precision Arithmetic949121
-Node: Computer Arithmetic950608
-Ref: table-numeric-ranges954374
-Ref: table-floating-point-ranges954867
-Ref: Computer Arithmetic-Footnote-1955525
-Node: Math Definitions955582
-Ref: table-ieee-formats958898
-Ref: Math Definitions-Footnote-1959501
-Node: MPFR features959606
-Node: FP Math Caution961324
-Ref: FP Math Caution-Footnote-1962396
-Node: Inexactness of computations962765
-Node: Inexact representation963725
-Node: Comparing FP Values965085
-Node: Errors accumulate966326
-Node: Getting Accuracy967759
-Node: Try To Round970469
-Node: Setting precision971368
-Ref: table-predefined-precision-strings972065
-Node: Setting the rounding mode973895
-Ref: table-gawk-rounding-modes974269
-Ref: Setting the rounding mode-Footnote-1978200
-Node: Arbitrary Precision Integers978379
-Ref: Arbitrary Precision Integers-Footnote-1981554
-Node: Checking for MPFR981703
-Node: POSIX Floating Point Problems983177
-Ref: POSIX Floating Point Problems-Footnote-1987462
-Node: Floating point summary987500
-Node: Dynamic Extensions989690
-Node: Extension Intro991243
-Node: Plugin License992509
-Node: Extension Mechanism Outline993306
-Ref: figure-load-extension993745
-Ref: figure-register-new-function995310
-Ref: figure-call-new-function996402
-Node: Extension API Description998464
-Node: Extension API Functions Introduction1000177
-Ref: table-api-std-headers1002013
-Node: General Data Types1006262
-Ref: General Data Types-Footnote-11014892
-Node: Memory Allocation Functions1015191
-Ref: Memory Allocation Functions-Footnote-11019692
-Node: Constructor Functions1019791
-Node: API Ownership of MPFR and GMP Values1023257
-Node: Registration Functions1024570
-Node: Extension Functions1025270
-Node: Exit Callback Functions1030592
-Node: Extension Version String1031842
-Node: Input Parsers1032505
-Node: Output Wrappers1045226
-Node: Two-way processors1049738
-Node: Printing Messages1052003
-Ref: Printing Messages-Footnote-11053174
-Node: Updating ERRNO1053327
-Node: Requesting Values1054066
-Ref: table-value-types-returned1054803
-Node: Accessing Parameters1055739
-Node: Symbol Table Access1056976
-Node: Symbol table by name1057488
-Ref: Symbol table by name-Footnote-11060512
-Node: Symbol table by cookie1060640
-Ref: Symbol table by cookie-Footnote-11064825
-Node: Cached values1064889
-Ref: Cached values-Footnote-11068425
-Node: Array Manipulation1068578
-Ref: Array Manipulation-Footnote-11069669
-Node: Array Data Types1069706
-Ref: Array Data Types-Footnote-11072364
-Node: Array Functions1072456
-Node: Flattening Arrays1076954
-Node: Creating Arrays1083930
-Node: Redirection API1088697
-Node: Extension API Variables1091530
-Node: Extension Versioning1092241
-Ref: gawk-api-version1092670
-Node: Extension GMP/MPFR Versioning1094401
-Node: Extension API Informational Variables1096029
-Node: Extension API Boilerplate1097102
-Node: Changes from API V11101076
-Node: Finding Extensions1102648
-Node: Extension Example1103207
-Node: Internal File Description1104005
-Node: Internal File Ops1108085
-Ref: Internal File Ops-Footnote-11119435
-Node: Using Internal File Ops1119575
-Ref: Using Internal File Ops-Footnote-11121958
-Node: Extension Samples1122232
-Node: Extension Sample File Functions1123761
-Node: Extension Sample Fnmatch1131410
-Node: Extension Sample Fork1132897
-Node: Extension Sample Inplace1134115
-Node: Extension Sample Ord1137740
-Node: Extension Sample Readdir1138576
-Ref: table-readdir-file-types1139465
-Node: Extension Sample Revout1140532
-Node: Extension Sample Rev2way1141121
-Node: Extension Sample Read write array1141861
-Node: Extension Sample Readfile1143803
-Node: Extension Sample Time1144898
-Node: Extension Sample API Tests1146650
-Node: gawkextlib1147142
-Node: Extension summary1150060
-Node: Extension Exercises1153762
-Node: Language History1155004
-Node: V7/SVR3.11156660
-Node: SVR41158812
-Node: POSIX1160246
-Node: BTL1161627
-Node: POSIX/GNU1162356
-Node: Feature History1168134
-Node: Common Extensions1184453
-Node: Ranges and Locales1185736
-Ref: Ranges and Locales-Footnote-11190352
-Ref: Ranges and Locales-Footnote-21190379
-Ref: Ranges and Locales-Footnote-31190614
-Node: Contributors1190837
-Node: History summary1196834
-Node: Installation1198214
-Node: Gawk Distribution1199158
-Node: Getting1199642
-Node: Extracting1200605
-Node: Distribution contents1202243
-Node: Unix Installation1208723
-Node: Quick Installation1209405
-Node: Shell Startup Files1211819
-Node: Additional Configuration Options1212908
-Node: Configuration Philosophy1215223
-Node: Non-Unix Installation1217592
-Node: PC Installation1218052
-Node: PC Binary Installation1218890
-Node: PC Compiling1219325
-Node: PC Using1220442
-Node: Cygwin1223995
-Node: MSYS1225219
-Node: VMS Installation1225821
-Node: VMS Compilation1226612
-Ref: VMS Compilation-Footnote-11227841
-Node: VMS Dynamic Extensions1227899
-Node: VMS Installation Details1229584
-Node: VMS Running1231837
-Node: VMS GNV1236116
-Node: VMS Old Gawk1236851
-Node: Bugs1237322
-Node: Bug address1237985
-Node: Usenet1240967
-Node: Maintainers1241971
-Node: Other Versions1243156
-Node: Installation summary1250244
-Node: Notes1251453
-Node: Compatibility Mode1252247
-Node: Additions1253029
-Node: Accessing The Source1253954
-Node: Adding Code1255391
-Node: New Ports1261610
-Node: Derived Files1265985
-Ref: Derived Files-Footnote-11271645
-Ref: Derived Files-Footnote-21271680
-Ref: Derived Files-Footnote-31272278
-Node: Future Extensions1272392
-Node: Implementation Limitations1273050
-Node: Extension Design1274260
-Node: Old Extension Problems1275404
-Ref: Old Extension Problems-Footnote-11276922
-Node: Extension New Mechanism Goals1276979
-Ref: Extension New Mechanism Goals-Footnote-11280343
-Node: Extension Other Design Decisions1280532
-Node: Extension Future Growth1282645
-Node: Notes summary1283251
-Node: Basic Concepts1284409
-Node: Basic High Level1285090
-Ref: figure-general-flow1285372
-Ref: figure-process-flow1286057
-Ref: Basic High Level-Footnote-11289358
-Node: Basic Data Typing1289543
-Node: Glossary1292871
-Node: Copying1324756
-Node: GNU Free Documentation License1362299
-Node: Index1387419
+Node: Concatenation371070
+Ref: Concatenation-Footnote-1373917
+Node: Assignment Ops374024
+Ref: table-assign-ops379015
+Node: Increment Ops380328
+Node: Truth Values and Conditions383788
+Node: Truth Values384862
+Node: Typing and Comparison385910
+Node: Variable Typing386730
+Ref: Variable Typing-Footnote-1393193
+Ref: Variable Typing-Footnote-2393265
+Node: Comparison Operators393342
+Ref: table-relational-ops393761
+Node: POSIX String Comparison397256
+Ref: POSIX String Comparison-Footnote-1398951
+Ref: POSIX String Comparison-Footnote-2399090
+Node: Boolean Ops399174
+Ref: Boolean Ops-Footnote-1403656
+Node: Conditional Exp403748
+Node: Function Calls405484
+Node: Precedence409361
+Node: Locales413020
+Node: Expressions Summary414652
+Node: Patterns and Actions417225
+Node: Pattern Overview418345
+Node: Regexp Patterns420022
+Node: Expression Patterns420564
+Node: Ranges424345
+Node: BEGIN/END427453
+Node: Using BEGIN/END428214
+Ref: Using BEGIN/END-Footnote-1430950
+Node: I/O And BEGIN/END431056
+Node: BEGINFILE/ENDFILE433370
+Node: Empty436283
+Node: Using Shell Variables436600
+Node: Action Overview438874
+Node: Statements441199
+Node: If Statement443047
+Node: While Statement444542
+Node: Do Statement446570
+Node: For Statement447718
+Node: Switch Statement450889
+Node: Break Statement453330
+Node: Continue Statement455422
+Node: Next Statement457249
+Node: Nextfile Statement459632
+Node: Exit Statement462284
+Node: Built-in Variables464687
+Node: User-modified465820
+Node: Auto-set473587
+Ref: Auto-set-Footnote-1490394
+Ref: Auto-set-Footnote-2490600
+Node: ARGC and ARGV490656
+Node: Pattern Action Summary494869
+Node: Arrays497299
+Node: Array Basics498628
+Node: Array Intro499472
+Ref: figure-array-elements501447
+Ref: Array Intro-Footnote-1504151
+Node: Reference to Elements504279
+Node: Assigning Elements506743
+Node: Array Example507234
+Node: Scanning an Array508993
+Node: Controlling Scanning512015
+Ref: Controlling Scanning-Footnote-1518471
+Node: Numeric Array Subscripts518787
+Node: Uninitialized Subscripts520971
+Node: Delete522590
+Ref: Delete-Footnote-1525342
+Node: Multidimensional525399
+Node: Multiscanning528494
+Node: Arrays of Arrays530085
+Node: Arrays Summary534853
+Node: Functions536946
+Node: Built-in537984
+Node: Calling Built-in539065
+Node: Numeric Functions541061
+Ref: Numeric Functions-Footnote-1545089
+Ref: Numeric Functions-Footnote-2545737
+Ref: Numeric Functions-Footnote-3545785
+Node: String Functions546057
+Ref: String Functions-Footnote-1570198
+Ref: String Functions-Footnote-2570326
+Ref: String Functions-Footnote-3570574
+Node: Gory Details570661
+Ref: table-sub-escapes572452
+Ref: table-sub-proposed573971
+Ref: table-posix-sub575334
+Ref: table-gensub-escapes576875
+Ref: Gory Details-Footnote-1577698
+Node: I/O Functions577852
+Ref: table-system-return-values584320
+Ref: I/O Functions-Footnote-1586400
+Ref: I/O Functions-Footnote-2586548
+Node: Time Functions586668
+Ref: Time Functions-Footnote-1597339
+Ref: Time Functions-Footnote-2597407
+Ref: Time Functions-Footnote-3597565
+Ref: Time Functions-Footnote-4597676
+Ref: Time Functions-Footnote-5597788
+Ref: Time Functions-Footnote-6598015
+Node: Bitwise Functions598281
+Ref: table-bitwise-ops598875
+Ref: Bitwise Functions-Footnote-1604938
+Ref: Bitwise Functions-Footnote-2605111
+Node: Type Functions605302
+Node: I18N Functions608165
+Node: User-defined609816
+Node: Definition Syntax610628
+Ref: Definition Syntax-Footnote-1616315
+Node: Function Example616386
+Ref: Function Example-Footnote-1619308
+Node: Function Calling619330
+Node: Calling A Function619918
+Node: Variable Scope620876
+Node: Pass By Value/Reference623870
+Node: Function Caveats626514
+Ref: Function Caveats-Footnote-1628561
+Node: Return Statement628681
+Node: Dynamic Typing631660
+Node: Indirect Calls632590
+Ref: Indirect Calls-Footnote-1642842
+Node: Functions Summary642970
+Node: Library Functions645675
+Ref: Library Functions-Footnote-1649282
+Ref: Library Functions-Footnote-2649425
+Node: Library Names649596
+Ref: Library Names-Footnote-1653263
+Ref: Library Names-Footnote-2653486
+Node: General Functions653572
+Node: Strtonum Function654675
+Node: Assert Function657697
+Node: Round Function661023
+Node: Cliff Random Function662563
+Node: Ordinal Functions663579
+Ref: Ordinal Functions-Footnote-1666642
+Ref: Ordinal Functions-Footnote-2666894
+Node: Join Function667104
+Ref: Join Function-Footnote-1668874
+Node: Getlocaltime Function669074
+Node: Readfile Function672816
+Node: Shell Quoting674793
+Node: Data File Management676194
+Node: Filetrans Function676826
+Node: Rewind Function680922
+Node: File Checking682831
+Ref: File Checking-Footnote-1684165
+Node: Empty Files684366
+Node: Ignoring Assigns686345
+Node: Getopt Function687895
+Ref: Getopt Function-Footnote-1703107
+Node: Passwd Functions703307
+Ref: Passwd Functions-Footnote-1712146
+Node: Group Functions712234
+Ref: Group Functions-Footnote-1720132
+Node: Walking Arrays720339
+Node: Library Functions Summary723347
+Node: Library Exercises724753
+Node: Sample Programs725218
+Node: Running Examples725988
+Node: Clones726716
+Node: Cut Program727940
+Node: Egrep Program737869
+Ref: Egrep Program-Footnote-1745381
+Node: Id Program745491
+Node: Split Program749171
+Ref: Split Program-Footnote-1752629
+Node: Tee Program752758
+Node: Uniq Program755548
+Node: Wc Program763169
+Ref: Wc Program-Footnote-1767424
+Node: Miscellaneous Programs767518
+Node: Dupword Program768731
+Node: Alarm Program770761
+Node: Translate Program775616
+Ref: Translate Program-Footnote-1780181
+Node: Labels Program780451
+Ref: Labels Program-Footnote-1783802
+Node: Word Sorting783886
+Node: History Sorting787958
+Node: Extract Program790183
+Node: Simple Sed798237
+Node: Igawk Program801311
+Ref: Igawk Program-Footnote-1815642
+Ref: Igawk Program-Footnote-2815844
+Ref: Igawk Program-Footnote-3815966
+Node: Anagram Program816081
+Node: Signature Program819143
+Node: Programs Summary820390
+Node: Programs Exercises821604
+Ref: Programs Exercises-Footnote-1825733
+Node: Advanced Features825824
+Node: Nondecimal Data827814
+Node: Array Sorting829405
+Node: Controlling Array Traversal830105
+Ref: Controlling Array Traversal-Footnote-1838473
+Node: Array Sorting Functions838591
+Ref: Array Sorting Functions-Footnote-1843682
+Node: Two-way I/O843878
+Ref: Two-way I/O-Footnote-1851599
+Ref: Two-way I/O-Footnote-2851786
+Node: TCP/IP Networking851868
+Node: Profiling854986
+Node: Advanced Features Summary864300
+Node: Internationalization866144
+Node: I18N and L10N867624
+Node: Explaining gettext868311
+Ref: Explaining gettext-Footnote-1874203
+Ref: Explaining gettext-Footnote-2874388
+Node: Programmer i18n874553
+Ref: Programmer i18n-Footnote-1879502
+Node: Translator i18n879551
+Node: String Extraction880345
+Ref: String Extraction-Footnote-1881477
+Node: Printf Ordering881563
+Ref: Printf Ordering-Footnote-1884349
+Node: I18N Portability884413
+Ref: I18N Portability-Footnote-1886869
+Node: I18N Example886932
+Ref: I18N Example-Footnote-1890207
+Ref: I18N Example-Footnote-2890280
+Node: Gawk I18N890389
+Node: I18N Summary891038
+Node: Debugger892379
+Node: Debugging893379
+Node: Debugging Concepts893820
+Node: Debugging Terms895629
+Node: Awk Debugging898204
+Ref: Awk Debugging-Footnote-1899149
+Node: Sample Debugging Session899281
+Node: Debugger Invocation899815
+Node: Finding The Bug901201
+Node: List of Debugger Commands907675
+Node: Breakpoint Control909008
+Node: Debugger Execution Control912702
+Node: Viewing And Changing Data916064
+Node: Execution Stack919605
+Node: Debugger Info921242
+Node: Miscellaneous Debugger Commands925313
+Node: Readline Support930375
+Node: Limitations931271
+Node: Debugging Summary933825
+Node: Namespaces935104
+Node: Global Namespace936215
+Node: Qualified Names937613
+Node: Default Namespace938612
+Node: Changing The Namespace939353
+Node: Naming Rules940967
+Node: Internal Name Management942815
+Node: Namespace Example943857
+Node: Namespace And Features946419
+Node: Namespace Summary947854
+Node: Arbitrary Precision Arithmetic949331
+Node: Computer Arithmetic950818
+Ref: table-numeric-ranges954584
+Ref: table-floating-point-ranges955077
+Ref: Computer Arithmetic-Footnote-1955735
+Node: Math Definitions955792
+Ref: table-ieee-formats959108
+Ref: Math Definitions-Footnote-1959711
+Node: MPFR features959816
+Node: FP Math Caution961534
+Ref: FP Math Caution-Footnote-1962606
+Node: Inexactness of computations962975
+Node: Inexact representation963935
+Node: Comparing FP Values965295
+Node: Errors accumulate966536
+Node: Getting Accuracy967969
+Node: Try To Round970679
+Node: Setting precision971578
+Ref: table-predefined-precision-strings972275
+Node: Setting the rounding mode974105
+Ref: table-gawk-rounding-modes974479
+Ref: Setting the rounding mode-Footnote-1978410
+Node: Arbitrary Precision Integers978589
+Ref: Arbitrary Precision Integers-Footnote-1981764
+Node: Checking for MPFR981913
+Node: POSIX Floating Point Problems983387
+Ref: POSIX Floating Point Problems-Footnote-1987672
+Node: Floating point summary987710
+Node: Dynamic Extensions989900
+Node: Extension Intro991453
+Node: Plugin License992719
+Node: Extension Mechanism Outline993516
+Ref: figure-load-extension993955
+Ref: figure-register-new-function995520
+Ref: figure-call-new-function996612
+Node: Extension API Description998674
+Node: Extension API Functions Introduction1000387
+Ref: table-api-std-headers1002223
+Node: General Data Types1006472
+Ref: General Data Types-Footnote-11015102
+Node: Memory Allocation Functions1015401
+Ref: Memory Allocation Functions-Footnote-11019902
+Node: Constructor Functions1020001
+Node: API Ownership of MPFR and GMP Values1023467
+Node: Registration Functions1024780
+Node: Extension Functions1025480
+Node: Exit Callback Functions1030802
+Node: Extension Version String1032052
+Node: Input Parsers1032715
+Node: Output Wrappers1045436
+Node: Two-way processors1049948
+Node: Printing Messages1052213
+Ref: Printing Messages-Footnote-11053384
+Node: Updating ERRNO1053537
+Node: Requesting Values1054276
+Ref: table-value-types-returned1055013
+Node: Accessing Parameters1055949
+Node: Symbol Table Access1057186
+Node: Symbol table by name1057698
+Ref: Symbol table by name-Footnote-11060722
+Node: Symbol table by cookie1060850
+Ref: Symbol table by cookie-Footnote-11065035
+Node: Cached values1065099
+Ref: Cached values-Footnote-11068635
+Node: Array Manipulation1068788
+Ref: Array Manipulation-Footnote-11069879
+Node: Array Data Types1069916
+Ref: Array Data Types-Footnote-11072574
+Node: Array Functions1072666
+Node: Flattening Arrays1077164
+Node: Creating Arrays1084140
+Node: Redirection API1088907
+Node: Extension API Variables1091740
+Node: Extension Versioning1092451
+Ref: gawk-api-version1092880
+Node: Extension GMP/MPFR Versioning1094611
+Node: Extension API Informational Variables1096239
+Node: Extension API Boilerplate1097312
+Node: Changes from API V11101286
+Node: Finding Extensions1102858
+Node: Extension Example1103417
+Node: Internal File Description1104215
+Node: Internal File Ops1108295
+Ref: Internal File Ops-Footnote-11119645
+Node: Using Internal File Ops1119785
+Ref: Using Internal File Ops-Footnote-11122168
+Node: Extension Samples1122442
+Node: Extension Sample File Functions1123971
+Node: Extension Sample Fnmatch1131620
+Node: Extension Sample Fork1133107
+Node: Extension Sample Inplace1134325
+Node: Extension Sample Ord1137950
+Node: Extension Sample Readdir1138786
+Ref: table-readdir-file-types1139675
+Node: Extension Sample Revout1140742
+Node: Extension Sample Rev2way1141331
+Node: Extension Sample Read write array1142071
+Node: Extension Sample Readfile1144013
+Node: Extension Sample Time1145108
+Node: Extension Sample API Tests1146860
+Node: gawkextlib1147352
+Node: Extension summary1150270
+Node: Extension Exercises1153972
+Node: Language History1155214
+Node: V7/SVR3.11156870
+Node: SVR41159022
+Node: POSIX1160456
+Node: BTL1161837
+Node: POSIX/GNU1162566
+Node: Feature History1168344
+Node: Common Extensions1184663
+Node: Ranges and Locales1185946
+Ref: Ranges and Locales-Footnote-11190562
+Ref: Ranges and Locales-Footnote-21190589
+Ref: Ranges and Locales-Footnote-31190824
+Node: Contributors1191047
+Node: History summary1197044
+Node: Installation1198424
+Node: Gawk Distribution1199368
+Node: Getting1199852
+Node: Extracting1200815
+Node: Distribution contents1202453
+Node: Unix Installation1208933
+Node: Quick Installation1209615
+Node: Shell Startup Files1212029
+Node: Additional Configuration Options1213118
+Node: Configuration Philosophy1215433
+Node: Non-Unix Installation1217802
+Node: PC Installation1218262
+Node: PC Binary Installation1219100
+Node: PC Compiling1219535
+Node: PC Using1220652
+Node: Cygwin1224205
+Node: MSYS1225429
+Node: VMS Installation1226031
+Node: VMS Compilation1226822
+Ref: VMS Compilation-Footnote-11228051
+Node: VMS Dynamic Extensions1228109
+Node: VMS Installation Details1229794
+Node: VMS Running1232047
+Node: VMS GNV1236326
+Node: VMS Old Gawk1237061
+Node: Bugs1237532
+Node: Bug address1238195
+Node: Usenet1241177
+Node: Maintainers1242181
+Node: Other Versions1243366
+Node: Installation summary1250454
+Node: Notes1251663
+Node: Compatibility Mode1252457
+Node: Additions1253239
+Node: Accessing The Source1254164
+Node: Adding Code1255601
+Node: New Ports1261820
+Node: Derived Files1266195
+Ref: Derived Files-Footnote-11271855
+Ref: Derived Files-Footnote-21271890
+Ref: Derived Files-Footnote-31272488
+Node: Future Extensions1272602
+Node: Implementation Limitations1273260
+Node: Extension Design1274470
+Node: Old Extension Problems1275614
+Ref: Old Extension Problems-Footnote-11277132
+Node: Extension New Mechanism Goals1277189
+Ref: Extension New Mechanism Goals-Footnote-11280553
+Node: Extension Other Design Decisions1280742
+Node: Extension Future Growth1282855
+Node: Notes summary1283461
+Node: Basic Concepts1284619
+Node: Basic High Level1285300
+Ref: figure-general-flow1285582
+Ref: figure-process-flow1286267
+Ref: Basic High Level-Footnote-11289568
+Node: Basic Data Typing1289753
+Node: Glossary1293081
+Node: Copying1324966
+Node: GNU Free Documentation License1362509
+Node: Index1387629
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index f9a0d74..e16b8ae 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -12219,9 +12219,14 @@ One possibly undesirable effect of this definition of 
remainder is that
 -17 % 8 = -1
 @end example
 
+@noindent
+This definition is compliant with the POSIX standard, which says that the 
@code{%}
+operator produces results equivalent to using the standard C
+@code{fmod()} function, and that function in turn works as just
+described.
+
 In other @command{awk} implementations, the signedness of the remainder
 may be machine-dependent.
-@c FIXME !!! what does posix say?
 
 @cindex portability @subentry @code{**} operator and
 @cindex @code{*} (asterisk) @subentry @code{**} operator
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 30e527d..0ec9741 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -11644,9 +11644,14 @@ One possibly undesirable effect of this definition of 
remainder is that
 -17 % 8 = -1
 @end example
 
+@noindent
+This definition is compliant with the POSIX standard, which says that the 
@code{%}
+operator produces results equivalent to using the standard C
+@code{fmod()} function, and that function in turn works as just
+described.
+
 In other @command{awk} implementations, the signedness of the remainder
 may be machine-dependent.
-@c FIXME !!! what does posix say?
 
 @cindex portability @subentry @code{**} operator and
 @cindex @code{*} (asterisk) @subentry @code{**} operator

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

Summary of changes:
 ChangeLog       |   7 +
 TODO            |   5 +-
 awkgram.c       |   2 +-
 awkgram.y       |   2 +-
 builtin.c       |   2 +-
 command.c       |  90 +++---
 command.y       |  90 +++---
 debug.c         |  22 +-
 doc/ChangeLog   |   5 +
 doc/gawk.info   | 870 ++++++++++++++++++++++++++++----------------------------
 doc/gawk.texi   |   7 +-
 doc/gawktexi.in |   7 +-
 gawkapi.c       |  10 +-
 io.c            |   8 +-
 node.c          |   2 +-
 test/ChangeLog  |   4 +
 test/mbstr1.ok  |   2 +-
 test/mbstr2.ok  |   2 +-
 18 files changed, 582 insertions(+), 555 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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