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-4197-gd562eb4


From: Arnold Robbins
Subject: [SCM] gawk branch, gawk-5.1-stable, updated. gawk-4.1.0-4197-gd562eb4
Date: Fri, 8 Jan 2021 04:05:52 -0500 (EST)

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  d562eb482f3180dcd59a332edc91027ea3844d90 (commit)
      from  b4dc5fb3dc57f7fc7eaba39c5814b8bae9403b77 (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=d562eb482f3180dcd59a332edc91027ea3844d90

commit d562eb482f3180dcd59a332edc91027ea3844d90
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Fri Jan 8 11:05:32 2021 +0200

    Improve use of types throughout.

diff --git a/ChangeLog b/ChangeLog
index 0a8316f..60fe777 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,59 @@
+2021-01-08         Arnold D. Robbins     <arnold@skeeve.com>
+
+       General tightening up use of const and types. Thanks to
+       the C++ porting experiment.
+
+       * array.c (null_array): Separate out multiple assignment of zero.
+       * awk.h: Add <math.h> here and pull it out of individual files.
+       (CONVFMT): Make const char *.
+       (quote): Make const char *.
+       (defpath): Make const char *.
+       (deflibpath): Make const char *.
+       (envsep): Make const char *.
+       (DO_FLAG_NONE): New zero enum value.
+       (getblock): Add a cast to the ty argument.
+       (make_regnode): First argument is now NODETYPE.
+       (gawk_name): Returns const char *.
+       * awkgram.y: Include argument types in read_func pointer.
+       (make_regnode): First argument is now NODETYPE.
+       * builtin.c (do_typeof): Use const char *.
+       (format_nan_inf): Move declaration of val to top of function.
+       * cmd.h (dbg_prompt, commands_prompt, eval_prompt, dgawk_prompt):
+       Make const char *.
+       (struct cmd_token): Use const char *. Rename `class' to `lex_class'.
+       * command.y (lex_class): Update all uses.
+       (find_command): Use const char *.
+       * debug.c (dbg_prompt, commands_prompt, eval_prompt, dgawk_prompt,
+       output_file): Make const char *.
+       (struct dbg_option): Use const char *.
+       (do_info): Use const char *. Cast stop.command to enum argtype.
+       (do_finish): Cast stop.command to enum argtype.
+       (do_return, do_until): Ditto.
+       (print_instruction, set_gawk_output, set_prompt): Add casts to
+       some function parameters.
+       * eval.c (update_ERRNO_int): Use const char *.
+       * gawk.api.c (valtype2str): Return const char *.
+       (api_get_argument): Use awk_true instead of true in return statements.
+       (awk_value_to_node): Move declaration of tval to top of function.
+       (api_release): Cast a_cookie to NODE *.
+       * gawkapi.h (struct awk_input): Include argument types in
+       read_func pointer.
+       * interpret.h (r_interpret): Add cast to argument in call to
+       do_getline_redir.
+       * io.c (read_with_timeout): Change second param to void * from char *.
+       (redirect_string): Add casts to function call parameters.
+       (path_info): Use const char *.
+       (init_awkpath): Ditto.
+       * main.c (CONVFMT, locale_dir): Now const char *.
+       (do_flags): Init to DO_FLAG_NONE instead of zero.
+       * mfpr.c (get_rnd_mode): Add cast to return value.
+       (set_round_mode): Add cast to assignment of rndm.
+       (do_mpfr_func): Include argument types in type of second parameter.
+       * node.c (r_make_number): Remove declaration of strtod.
+       * profile.c (pp_push): Add cast in assignment to n->type. Use
+       const char * for `pre' at Op_func_call.
+       * re.c (check_bracket_exp): Add cast to return from memchr.
+
 2021-01-07         Arnold D. Robbins     <arnold@skeeve.com>
 
        * builtin.c (format_tree): Generalize handling of invalid
diff --git a/array.c b/array.c
index 60d1862..29c0975 100644
--- a/array.c
+++ b/array.c
@@ -111,7 +111,8 @@ null_array(NODE *symbol)
        symbol->type = Node_var_array;
        symbol->array_funcs = & null_array_func;
        symbol->buckets = NULL;
-       symbol->table_size = symbol->array_size = 0;
+       symbol->table_size = 0;
+       symbol->array_size = 0;
        symbol->array_capacity = 0;
        symbol->flags = 0;
 
diff --git a/awk.h b/awk.h
index 23b1564..71facfa 100644
--- a/awk.h
+++ b/awk.h
@@ -52,6 +52,7 @@
 #include <limits.h>
 #include <ctype.h>
 #include <setjmp.h>
+#include <math.h>
 
 #include "gettext.h"
 #define _(msgid)  gettext(msgid)
@@ -1105,7 +1106,7 @@ extern int OFSlen;
 extern char *ORS;
 extern int ORSlen;
 extern char *OFMT;
-extern char *CONVFMT;
+extern const char *CONVFMT;
 extern int CONVFMTidx;
 extern int OFMTidx;
 #ifdef HAVE_MPFR
@@ -1146,6 +1147,7 @@ extern bool do_itrace;    /* separate so can poke from a 
debugger */
 extern SRCFILE *srcfiles; /* source files */
 
 extern enum do_flag_values {
+       DO_FLAG_NONE       = 0x00000,
        DO_LINT_INVALID    = 0x00001,   /* only warn about invalid */
        DO_LINT_EXTENSIONS = 0x00002,   /* warn about gawk extensions */
        DO_LINT_ALL        = 0x00004,   /* warn about all things */
@@ -1214,10 +1216,10 @@ extern bool do_ieee_fmt;        /* emulate IEEE 754 
floating-point format */
 extern const char *myname;
 extern const char def_strftime_format[];
 
-extern char quote;
-extern char *defpath;
-extern char *deflibpath;
-extern char envsep;
+extern const char quote;
+extern const char *defpath;
+extern const char *deflibpath;
+extern const char envsep;
 
 extern char casetable[];       /* for case-independent regexp matching */
 
@@ -1338,7 +1340,7 @@ DEREF(NODE *r)
 
 extern void *r_getblock(int id);
 extern void r_freeblock(void *, int id);
-#define getblock(p, id, ty)    (void) (p = r_getblock(id))
+#define getblock(p, id, ty)    (void) (p = (ty) r_getblock(id))
 #define freeblock(p, id)       (void) (r_freeblock(p, id))
 
 #else /* MEMDEBUG */
@@ -1449,7 +1451,7 @@ extern bool is_alpha(int c);
 extern bool is_alnum(int c);
 extern bool is_letter(int c);
 extern bool is_identchar(int c);
-extern NODE *make_regnode(int type, NODE *exp);
+extern NODE *make_regnode(NODETYPE type, NODE *exp);
 extern bool validate_qualified_name(char *token);
 /* builtin.c */
 extern double double_to_int(double d);
@@ -1584,7 +1586,7 @@ extern void print_ext_versions(void);
 extern void free_api_string_copies(void);
 
 /* gawkmisc.c */
-extern char *gawk_name(const char *filespec);
+extern const char *gawk_name(const char *filespec);
 extern void os_arg_fixup(int *argcp, char ***argvp);
 extern int os_devopen(const char *name, int flag);
 extern void os_close_on_exec(int fd, const char *name, const char *what, const 
char *dir);
diff --git a/awkgram.c b/awkgram.c
index 747c75e..9c2700a 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -5592,7 +5592,7 @@ get_src_buf()
         * avoids problems with some ancient systems where
         * the types of arguments to read() aren't up to date.
         */
-       static ssize_t (*readfunc)() = 0;
+       static ssize_t (*readfunc)(int, void *, size_t) = NULL;
 
        if (readfunc == NULL) {
                char *cp = getenv("AWKREADFUNC");
@@ -5603,7 +5603,7 @@ get_src_buf()
                         * cast is to remove warnings on systems with
                         * different return types for read.
                         */
-                       readfunc = ( ssize_t(*)() ) read;
+                       readfunc = ( ssize_t(*)(int, void *, size_t) ) read;
                else
                        readfunc = read_one_line;
        }
@@ -7763,7 +7763,7 @@ variable(int location, char *name, NODETYPE type)
 /* make_regnode --- make a regular expression node */
 
 NODE *
-make_regnode(int type, NODE *exp)
+make_regnode(NODETYPE type, NODE *exp)
 {
        NODE *n;
 
diff --git a/awkgram.y b/awkgram.y
index 72d7931..0495f23 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -3090,7 +3090,7 @@ get_src_buf()
         * avoids problems with some ancient systems where
         * the types of arguments to read() aren't up to date.
         */
-       static ssize_t (*readfunc)() = 0;
+       static ssize_t (*readfunc)(int, void *, size_t) = NULL;
 
        if (readfunc == NULL) {
                char *cp = getenv("AWKREADFUNC");
@@ -3101,7 +3101,7 @@ get_src_buf()
                         * cast is to remove warnings on systems with
                         * different return types for read.
                         */
-                       readfunc = ( ssize_t(*)() ) read;
+                       readfunc = ( ssize_t(*)(int, void *, size_t) ) read;
                else
                        readfunc = read_one_line;
        }
@@ -5261,7 +5261,7 @@ variable(int location, char *name, NODETYPE type)
 /* make_regnode --- make a regular expression node */
 
 NODE *
-make_regnode(int type, NODE *exp)
+make_regnode(NODETYPE type, NODE *exp)
 {
        NODE *n;
 
diff --git a/builtin.c b/builtin.c
index 0d7439c..fc5dc31 100644
--- a/builtin.c
+++ b/builtin.c
@@ -29,7 +29,6 @@
 #if defined(HAVE_FCNTL_H)
 #include <fcntl.h>
 #endif
-#include <math.h>
 #include "random.h"
 #include "floatmagic.h"
 
@@ -4053,7 +4052,7 @@ NODE *
 do_typeof(int nargs)
 {
        NODE *arg;
-       char *res = NULL;
+       const char *res = NULL;
        bool deref = true;
        NODE *dbg;
 
@@ -4265,6 +4264,7 @@ char *
 format_nan_inf(NODE *n, char format)
 {
        static char buf[100];
+       double val = n->numbr;
 
 #ifdef HAVE_MPFR
        if (is_mpg_integer(n))
@@ -4284,7 +4284,6 @@ format_nan_inf(NODE *n, char format)
        /* else
                fallthrough */
 #endif
-       double val = n->numbr;
 
        if (isnan(val)) {
                strcpy(buf, signbit(val) != 0 ? "-nan" : "+nan");
diff --git a/cmd.h b/cmd.h
index 375ea08..df6035f 100644
--- a/cmd.h
+++ b/cmd.h
@@ -43,10 +43,10 @@ extern bool output_is_tty;
 extern int input_fd;
 extern bool input_from_tty;
 extern FILE *out_fp;
-extern char *dbg_prompt;
-extern char *commands_prompt;
-extern char *eval_prompt;
-extern char *dgawk_prompt;
+extern const char *dbg_prompt;
+extern const char *commands_prompt;
+extern const char *eval_prompt;
+extern const char *dgawk_prompt;
 
 enum argtype {
        D_illegal,
@@ -148,9 +148,9 @@ typedef int (*Func_cmd)(CMDARG *, int);
 
 struct cmdtoken {
        const char *name;
-       char *abbrvn;   /* abbreviation */
+       const char *abbrvn;     /* abbreviation */
        enum argtype type;
-       int class;
+       int lex_class;
        Func_cmd cf_ptr;
        const char *help_txt;
 };
diff --git a/command.c b/command.c
index ba5a0e5..d5bcd2a 100644
--- a/command.c
+++ b/command.c
@@ -1703,7 +1703,7 @@ yyreduce:
   case 34: /* command: frame_cmd opt_integer  */
 #line 288 "command.y"
           {
-               if (cmdtab[cmd_idx].class == D_FRAME
+               if (cmdtab[cmd_idx].lex_class == D_FRAME
                                && yyvsp[0] != NULL && yyvsp[0]->a_int < 0)
                        yyerror(_("invalid frame number: %d"), yyvsp[0]->a_int);
          }
@@ -2817,7 +2817,7 @@ again:
                                add_history(h->line);
 #endif
                        cmd_idx = repeat_idx;
-                       return cmdtab[cmd_idx].class;   /* repeat last command 
*/
+                       return cmdtab[cmd_idx].lex_class;       /* repeat last 
command */
                }
                repeat_idx = -1;
        }
@@ -2877,7 +2877,7 @@ again:
                                arg->a_string = estrdup(lexptr_begin, lexend - 
lexptr_begin);
                                append_cmdarg(arg);
                        }
-                       return cmdtab[cmd_idx].class;
+                       return cmdtab[cmd_idx].lex_class;
                } else {
                        yyerror(_("unknown command - `%.*s', try help"), 
toklen, tokstart);
                        return '\n';
@@ -3138,7 +3138,7 @@ concat_args(CMDARG *arg, int count)
 static int
 find_command(const char *token, size_t toklen)
 {
-       char *name, *abrv;
+       const char *name, *abrv;
        int i, k;
        bool try_exact = true;
        int abrv_match = -1;
diff --git a/command.y b/command.y
index 3936207..8282cf6 100644
--- a/command.y
+++ b/command.y
@@ -286,7 +286,7 @@ command
        | control_cmd opt_plus_integer
        | frame_cmd opt_integer
          {
-               if (cmdtab[cmd_idx].class == D_FRAME
+               if (cmdtab[cmd_idx].lex_class == D_FRAME
                                && $2 != NULL && $2->a_int < 0)
                        yyerror(_("invalid frame number: %d"), $2->a_int);
          }
@@ -1096,7 +1096,7 @@ again:
                                add_history(h->line);
 #endif
                        cmd_idx = repeat_idx;
-                       return cmdtab[cmd_idx].class;   /* repeat last command 
*/
+                       return cmdtab[cmd_idx].lex_class;       /* repeat last 
command */
                }
                repeat_idx = -1;
        }
@@ -1156,7 +1156,7 @@ again:
                                arg->a_string = estrdup(lexptr_begin, lexend - 
lexptr_begin);
                                append_cmdarg(arg);
                        }
-                       return cmdtab[cmd_idx].class;
+                       return cmdtab[cmd_idx].lex_class;
                } else {
                        yyerror(_("unknown command - `%.*s', try help"), 
toklen, tokstart);
                        return '\n';
@@ -1417,7 +1417,7 @@ concat_args(CMDARG *arg, int count)
 static int
 find_command(const char *token, size_t toklen)
 {
-       char *name, *abrv;
+       const char *name, *abrv;
        int i, k;
        bool try_exact = true;
        int abrv_match = -1;
diff --git a/debug.c b/debug.c
index 3dd53e1..4fe83fd 100644
--- a/debug.c
+++ b/debug.c
@@ -54,9 +54,9 @@ static char *linebuf = NULL;  /* used to print a single line 
of source */
 static size_t linebuf_len;
 
 FILE *out_fp;
-char *dbg_prompt;
-char *commands_prompt = "> ";  /* breakpoint or watchpoint commands list */
-char *eval_prompt = "@> ";     /* awk statement(s) */
+const char *dbg_prompt;
+const char *commands_prompt = "> ";    /* breakpoint or watchpoint commands 
list */
+const char *eval_prompt = "@> ";       /* awk statement(s) */
 
 bool input_from_tty = false;
 int input_fd;
@@ -219,7 +219,7 @@ static char line_sep;
 struct dbg_option {
        const char *name;
        int *num_val;
-       char **str_val;
+       const char **str_val;
        void (*assign)(const char *);
        const char *help_txt;
 };
@@ -244,8 +244,8 @@ static const char *history_file = DEFAULT_HISTFILE;
 
 /* debugger option related variables */
 
-static char *output_file = "/dev/stdout";  /* gawk output redirection */
-char *dgawk_prompt = NULL;                 /* initialized in interpret */
+static const char *output_file = "/dev/stdout";  /* gawk output redirection */
+const char *dgawk_prompt = NULL;                 /* initialized in interpret */
 static int list_size = DEFAULT_LISTSIZE;   /* # of lines that 'list' prints */
 static int do_trace = false;
 static int do_save_history = true;
@@ -766,7 +766,7 @@ do_info(CMDARG *arg, int cmd ATTRIBUTE_UNUSED)
 
                        gprintf(out_fp, _("Number  Disp  Enabled  
Location\n\n"));
                        for (b = breakpoints.prev; b != &breakpoints; b = 
b->prev) {
-                               char *disp = "keep";
+                               const char *disp = "keep";
                                if ((b->flags & BP_ENABLE_ONCE) != 0)
                                        disp = "dis";
                                else if ((b->flags & BP_TEMP) != 0)
@@ -3051,7 +3051,7 @@ next_step(CMDARG *arg, int cmd)
                stop.repeat_count = arg->a_int;
        else
                stop.repeat_count = 1;
-       stop.command = cmd;
+       stop.command = (enum argtype) cmd;
        return true;
 }
 
@@ -3231,7 +3231,7 @@ do_finish(CMDARG *arg ATTRIBUTE_UNUSED, int cmd)
        fprintf(out_fp, _("Run until return from "));
        print_numbered_frame(cur_frame);
        stop.check_func = check_finish;
-       stop.command = cmd;
+       stop.command = (enum argtype) cmd;
        stop.print_ret = true;
        return true;
 }
@@ -3279,7 +3279,7 @@ do_return(CMDARG *arg, int cmd)
        assert(stop.fcall_count >= 0);
        stop.pc = (func->code_ptr + 1)->lasti;
        assert(stop.pc->opcode == Op_K_return);
-       stop.command = cmd;
+       stop.command = (enum argtype) cmd;
 
        stop.check_func = check_return;
 
@@ -3342,7 +3342,7 @@ do_until(CMDARG *arg, int cmd)
                stop.sourceline = sourceline;
                stop.fcall_count = fcall_count - cur_frame;
                stop.check_func = check_until;
-               stop.command = cmd;
+               stop.command = (enum argtype) cmd;
                return true;
        }
 
@@ -3381,7 +3381,7 @@ func:
                                stop.pc = ip;
                                stop.fcall_count = fcall_count - cur_frame;
                                stop.check_func = check_until;
-                               stop.command = cmd;
+                               stop.command = (enum argtype) cmd;
                                return true;
                        }
                }
@@ -3402,7 +3402,7 @@ func:
                        stop.pc = ip;
                        stop.fcall_count = fcall_count - cur_frame;
                        stop.check_func = check_until;
-                       stop.command = cmd;
+                       stop.command = (enum argtype) cmd;
                        return true;
                }
                if (ip == (rp + 1)->lasti)
@@ -3873,7 +3873,7 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, 
FILE *fp, int in_dump)
        case Op_var_assign:
                print_func(fp, "[set_%s()]", get_spec_varname(pc->assign_var));
                if (pc->assign_ctxt != 0)
-                       print_func(fp, " [assign_ctxt = %s]", 
opcode2str(pc->assign_ctxt));
+                       print_func(fp, " [assign_ctxt = %s]", 
opcode2str((OPCODE) pc->assign_ctxt));
                print_func(fp, "\n");
                break;
 
@@ -5284,7 +5284,7 @@ set_gawk_output(const char *file)
        if (output_fp != stdout) {
                if (output_fp != stderr) {
                        fclose(output_fp);
-                       efree(output_file);
+                       efree((void*) output_file);
                }
                output_fp = stdout;
                output_is_tty = os_isatty(fileno(stdout));
@@ -5355,7 +5355,7 @@ set_gawk_output(const char *file)
 static void
 set_prompt(const char *value)
 {
-       efree(dgawk_prompt);
+       efree((void *) dgawk_prompt);
        dgawk_prompt = estrdup(value, strlen(value));
        dbg_prompt = dgawk_prompt;
 }
diff --git a/eval.c b/eval.c
index 558c021..ea83b28 100644
--- a/eval.c
+++ b/eval.c
@@ -1009,7 +1009,7 @@ set_TEXTDOMAIN()
 void
 update_ERRNO_int(int errcode)
 {
-       char *cp;
+       const char *cp;
 
        update_PROCINFO_num("errno", errcode);
        if (errcode) {
diff --git a/floatcomp.c b/floatcomp.c
index 7317fa7..e2df8c5 100644
--- a/floatcomp.c
+++ b/floatcomp.c
@@ -25,7 +25,6 @@
  */
 
 #include "awk.h"
-#include <math.h>
 
 #ifdef HAVE_UINTMAX_T
 
diff --git a/gawkapi.c b/gawkapi.c
index c85427b..b764c56 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -31,7 +31,7 @@ extern INSTRUCTION *main_beginfile;
 extern int currule;
 
 static awk_bool_t node_to_awk_value(NODE *node, awk_value_t *result, 
awk_valtype_t wanted);
-static char *valtype2str(awk_valtype_t type);
+static const char *valtype2str(awk_valtype_t type);
 static NODE *ns_lookup(const char *name_space, const char *name, char 
**full_name);
 
 /*
@@ -71,7 +71,7 @@ api_get_argument(awk_ext_id_t id, size_t count,
        /* if type is undefined */
        if (arg->type == Node_var_new) {
                if (wanted == AWK_UNDEFINED)
-                       return true;
+                       return awk_true;
                else if (wanted == AWK_ARRAY) {
                        goto array;
                } else {
@@ -82,7 +82,7 @@ api_get_argument(awk_ext_id_t id, size_t count,
        /* at this point, we have real type */
        if (arg->type == Node_var_array || arg->type == Node_array_ref) {
                if (wanted != AWK_ARRAY && wanted != AWK_UNDEFINED)
-                       return false;
+                       return awk_false;
                goto array;
        } else
                goto scalar;
@@ -148,6 +148,7 @@ awk_value_to_node(const awk_value_t *retval)
 {
        NODE *ext_ret_val = NULL;
        NODE *v;
+       int tval = 0;
 
        if (retval == NULL)
                fatal(_("awk_value_to_node: received null retval"));
@@ -169,7 +170,7 @@ awk_value_to_node(const awk_value_t *retval)
                        if (! do_mpfr)
                                fatal(_("awk_value_to_node: not in MPFR mode"));
                        ext_ret_val = make_number_node(MPFN);
-                       int tval = mpfr_set(ext_ret_val->mpg_numbr, (mpfr_ptr) 
retval->num_ptr, ROUND_MODE);
+                       tval = mpfr_set(ext_ret_val->mpg_numbr, (mpfr_ptr) 
retval->num_ptr, ROUND_MODE);
                        IEEE_FMT(ext_ret_val->mpg_numbr, tval);
 #else
                        fatal(_("awk_value_to_node: MPFR not supported"));
@@ -1228,7 +1229,7 @@ api_release_flattened_array(awk_ext_id_t id,
                awk_array_t a_cookie,
                awk_flat_array_t *data)
 {
-       NODE *array = a_cookie;
+       NODE *array = (NODE *) a_cookie;
        NODE **list;
        size_t i, j, k;
 
@@ -1559,13 +1560,13 @@ print_ext_versions(void)
 
 /* valtype2str --- return a printable representation of a value type */
 
-static char *
+static const char *
 valtype2str(awk_valtype_t type)
 {
        static char buf[100];
 
        // Important: keep in same order as in gawkapi.h!
-       static char *values[] = {
+       static const char *values[] = {
                "AWK_UNDEFINED",
                "AWK_NUMBER",
                "AWK_STRING",
diff --git a/gawkapi.h b/gawkapi.h
index c0d9062..4cbfc67 100644
--- a/gawkapi.h
+++ b/gawkapi.h
@@ -190,7 +190,7 @@ typedef struct awk_input {
         * No argument prototype on read_func to allow for older systems
         * whose headers are not up to date.
         */
-       ssize_t (*read_func)();
+       ssize_t (*read_func)(int, void *, size_t);
 
        /*
         * The close_func is called to allow the parser to free private data.
diff --git a/interpret.h b/interpret.h
index fedf525..56427ba 100644
--- a/interpret.h
+++ b/interpret.h
@@ -1250,7 +1250,7 @@ match_re:
                        JUMPTO(ni);
 
                case Op_K_getline_redir:
-                       r = do_getline_redir(pc->into_var, pc->redir_type);
+                       r = do_getline_redir(pc->into_var, (enum redirval) 
pc->redir_type);
                        PUSH(r);
                        break;
 
diff --git a/io.c b/io.c
index 0af8ab1..c2bf5d0 100644
--- a/io.c
+++ b/io.c
@@ -310,7 +310,7 @@ static bool inetfile(const char *str, size_t len, struct 
inet_socket_info *isn);
 
 static NODE *in_PROCINFO(const char *pidx1, const char *pidx2, NODE 
**full_idx);
 static long get_read_timeout(IOBUF *iop);
-static ssize_t read_with_timeout(int fd, char *buf, size_t size);
+static ssize_t read_with_timeout(int fd, void *buf, size_t size);
 
 static bool read_can_timeout = false;
 static long read_timeout;
@@ -896,7 +896,8 @@ redirect_string(const char *str, size_t explen, bool 
not_string,
                if (strlen(rp->value) == explen
                    && memcmp(rp->value, str, explen) == 0) {
                        if (do_lint) {
-                               check_duplicated_redirections(rp->value, 
explen, rp->flag, tflag);
+                               check_duplicated_redirections(rp->value, explen,
+                                               (redirect_flags_t) rp->flag, 
(redirect_flags_t) tflag);
                        }
 
                        if (((rp->flag & ~(RED_NOBUF|RED_EOF|RED_PTY)) == tflag
@@ -920,7 +921,7 @@ redirect_string(const char *str, size_t explen, bool 
not_string,
                newstr[explen] = '\0';
                str = newstr;
                rp->value = newstr;
-               rp->flag = tflag;
+               rp->flag =  (redirect_flags_t) tflag;
                init_output_wrapper(& rp->output);
                rp->output.name = str;
                rp->iop = NULL;
@@ -2957,8 +2958,8 @@ do_getline(int into_variable, IOBUF *iop)
 
 typedef struct {
        const char *envname;
-       char **dfltp;           /* pointer to address of default path */
-       char **awkpath;         /* array containing library search paths */
+       const char **dfltp;     /* pointer to address of default path */
+       const char **awkpath;   /* array containing library search paths */
        int max_pathlen;        /* length of the longest item in awkpath */
 } path_info;
 
@@ -2977,8 +2978,9 @@ static path_info pi_awklibpath = {
 static void
 init_awkpath(path_info *pi)
 {
-       char *path;
-       char *start, *end, *p;
+       const char *path;
+       const char *start, *end;
+       char *p;
        int len, i;
        int max_path;           /* (# of allocated paths)-1 */
 
@@ -2987,12 +2989,12 @@ init_awkpath(path_info *pi)
                path = pi->dfltp[0];
 
        /* count number of separators */
-       for (max_path = 0, p = path; *p; p++)
+       for (max_path = 0, p = (char *) path; *p; p++)
                if (*p == envsep)
                        max_path++;
 
        // +3 --> 2 for null entries at front and end of path, 1 for NULL end 
of list
-       ezalloc(pi->awkpath, char **, (max_path + 3) * sizeof(char *), 
"init_awkpath");
+       ezalloc(pi->awkpath, const char **, (max_path + 3) * sizeof(char *), 
"init_awkpath");
 
        start = path;
        i = 0;
@@ -4399,7 +4401,7 @@ get_read_timeout(IOBUF *iop)
  */
 
 static ssize_t
-read_with_timeout(int fd, char *buf, size_t size)
+read_with_timeout(int fd, void *buf, size_t size)
 {
 #if ! defined(VMS)
        fd_set readfds;
diff --git a/main.c b/main.c
index 7c35139..3fd091e 100644
--- a/main.c
+++ b/main.c
@@ -96,7 +96,7 @@ char *TEXTDOMAIN;
  *     set_CONVFMT -> fmt_index -> force_string: gets NULL CONVFMT
  * Fun, fun, fun, fun.
  */
-char *CONVFMT = "%.6g";
+const char *CONVFMT = "%.6g";
 
 NODE *Nnull_string;            /* The global null string */
 
@@ -145,14 +145,14 @@ static void parse_args(int argc, char **argv);
 static void set_locale_stuff(void);
 static bool stopped_early = false;
 
-enum do_flag_values do_flags = 0;
+enum do_flag_values do_flags = DO_FLAG_NONE;
 bool do_itrace = false;                        /* provide simple instruction 
trace */
 bool do_optimize = true;               /* apply default optimizations */
 static int do_nostalgia = false;       /* provide a blast from the past */
 static int do_binary = false;          /* hands off my data! */
 static int do_version = false;         /* print version info */
 static const char *locale = "";                /* default value to setlocale */
-static char *locale_dir = LOCALEDIR;   /* default locale dir */
+static const char *locale_dir = LOCALEDIR;     /* default locale dir */
 
 int use_lc_numeric = false;    /* obey locale for decimal point */
 
diff --git a/mpfr.c b/mpfr.c
index f1a460a..cf53bbd 100644
--- a/mpfr.c
+++ b/mpfr.c
@@ -639,7 +639,7 @@ get_rnd_mode(const char rmode)
        default:
                break;
        }
-       return -1;
+       return (mpfr_rnd_t) -1;
 }
 
 /*
@@ -651,7 +651,7 @@ void
 set_ROUNDMODE()
 {
        if (do_mpfr) {
-               mpfr_rnd_t rndm = -1;
+               mpfr_rnd_t rndm = (mpfr_rnd_t) -1;
                NODE *n;
                n = force_string(ROUNDMODE_node->var_value);
                if (n->stlen == 1)
@@ -748,7 +748,7 @@ do_mpfr_atan2(int nargs)
 
 static inline NODE *
 do_mpfr_func(const char *name,
-               int (*mpfr_func)(),     /* putting argument types just gets the 
compiler confused */
+               int (*mpfr_func)(mpfr_ptr, mpfr_srcptr, mpfr_rnd_t),
                int nargs)
 {
        NODE *t1, *res;
diff --git a/node.c b/node.c
index e5ecff1..0e7be20 100644
--- a/node.c
+++ b/node.c
@@ -25,7 +25,6 @@
  */
 
 #include "awk.h"
-#include "math.h"
 #include "floatmagic.h"        /* definition of isnan */
 
 static NODE *r_make_number(double x);
@@ -61,7 +60,6 @@ r_force_number(NODE *n)
        char *cpend;
        char save;
        char *ptr;
-       extern double strtod();
 
        if ((n->flags & NUMCUR) != 0)
                return n;
diff --git a/pc/ChangeLog b/pc/ChangeLog
index af2d2e6..22870c9 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,11 @@
+2021-01-08         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawkmisc.pc (quote): Make const char *.
+       (defpath): Make const char *.
+       (deflibpath): Make const char *.
+       (envsep): Make const char *.
+       (gawk_name): Now returns const char *.
+
 2021-01-07         Arnold D. Robbins     <arnold@skeeve.com>
 
        * Makefile.tst: Rebuilt.
diff --git a/pc/gawkmisc.pc b/pc/gawkmisc.pc
index 5f44280..4e58b0a 100644
--- a/pc/gawkmisc.pc
+++ b/pc/gawkmisc.pc
@@ -22,19 +22,19 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA
  */
 
-char quote = '\'';
-char envsep = ';';
+const char quote = '\'';
+const char envsep = ';';
 
 # ifdef DEFPATH
-char *defpath = DEFPATH;
+const char *defpath = DEFPATH;
 # else
-char *defpath = ".;c:\\lib\\awk;c:\\gnu\\lib\\awk";
+const char *defpath = ".;c:\\lib\\awk;c:\\gnu\\lib\\awk";
 # endif
 /* the Makefile should define DEFLIBPATH */
-char *deflibpath = DEFLIBPATH;
+const char *deflibpath = DEFLIBPATH;
 
 #ifdef __EMX__
-#include<io.h>
+#include <io.h>
 
 static int _os2_is_abs_path(const char *dirname);
 static char* _os2_unixroot(const char *path);
@@ -61,7 +61,7 @@ static const char* _os2_unixroot_path(const char *path);
 
 /* gawk_name --- pull out the "gawk" part from how the OS called us */
 
-char *
+const char *
 gawk_name(filespec)
 const char *filespec;
 {
diff --git a/posix/ChangeLog b/posix/ChangeLog
index 2ae8093..05f92ab 100644
--- a/posix/ChangeLog
+++ b/posix/ChangeLog
@@ -1,3 +1,11 @@
+2021-01-08         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawkmisc.c (quote): Make const char *.
+       (defpath): Make const char *.
+       (deflibpath): Make const char *.
+       (envsep): Make const char *.
+       (gawk_name): Now returns const char *.
+
 2020-04-14         Arnold D. Robbins     <arnold@skeeve.com>
 
        * 5.1.0: Release tar ball made.
diff --git a/posix/gawkmisc.c b/posix/gawkmisc.c
index 16cfeb0..d2e33f4 100644
--- a/posix/gawkmisc.c
+++ b/posix/gawkmisc.c
@@ -24,10 +24,10 @@
 #include <io.h>
 #endif
 
-char quote = '\'';
-char *defpath = DEFPATH;
-char *deflibpath = DEFLIBPATH;
-char envsep = ':';
+const char quote = '\'';
+const char *defpath = DEFPATH;
+const char *deflibpath = DEFLIBPATH;
+const char envsep = ':';
 
 #ifndef INVALID_HANDLE
 /* FIXME: is this value for INVALID_HANDLE correct? */
@@ -36,10 +36,10 @@ char envsep = ':';
 
 /* gawk_name --- pull out the "gawk" part from how the OS called us */
 
-char *
+const char *
 gawk_name(const char *filespec)
 {
-       char *p;
+       const char *p;
 
        /* "path/name" -> "name" */
        p = strrchr(filespec, '/');
diff --git a/profile.c b/profile.c
index 44e171f..e4fd88d 100644
--- a/profile.c
+++ b/profile.c
@@ -179,7 +179,7 @@ pp_push(int type, char *s, int flag, INSTRUCTION *comment)
        n->pp_str = s;
        n->pp_len = strlen(s);
        n->flags = flag;
-       n->type = type;
+       n->type = (NODETYPE) type;
        n->pp_next = pp_stack;
        n->pp_comment = comment;
        pp_stack = n;
@@ -781,7 +781,7 @@ cleanup:
                case Op_indirect_func_call:
                case Op_func_call:
                {
-                       char *pre;
+                       const char *pre;
                        int pcount;
                        bool malloced = false;
                        char *fname = adjust_namespace(pc->func_name, & 
malloced);
diff --git a/re.c b/re.c
index 093d35e..ee3a30a 100644
--- a/re.c
+++ b/re.c
@@ -613,7 +613,7 @@ check_bracket_exp(char *s, size_t length)
        sp = s;
 
 again:
-       sp = sp2 = memchr(sp, '[', (end - sp));
+       sp = sp2 = (char *) memchr(sp, '[', (end - sp));
        if (sp == NULL)
                goto done;
 
diff --git a/support/ChangeLog b/support/ChangeLog
index 174c65c..7d23411 100644
--- a/support/ChangeLog
+++ b/support/ChangeLog
@@ -1,3 +1,7 @@
+2021-01-08         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * random.h (initstate, setstate, srandom): Add declarations.
+
 2020-11-06         Arnold D. Robbins     <arnold@skeeve.com>
 
        * dfa.h, regex_internal.c, regex_internal.h: Synced from GNULIB.
diff --git a/support/random.h b/support/random.h
index 84b3141..a76a3ad 100644
--- a/support/random.h
+++ b/support/random.h
@@ -40,4 +40,7 @@ typedef          long gawk_int32_t;
 #define uint32_t gawk_uint32_t
 #define int32_t  gawk_int32_t
 
-extern long random (void);
+extern char *initstate(unsigned long seed, char *state, long n);
+extern char *setstate(char *state);
+extern long random(void);
+extern void srandom(unsigned long seed);
diff --git a/vms/ChangeLog b/vms/ChangeLog
index 39b2115..7d80c4b 100644
--- a/vms/ChangeLog
+++ b/vms/ChangeLog
@@ -1,3 +1,11 @@
+2021-01-08         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawkmisc.vms (quote): Make const char *.
+       (defpath): Make const char *.
+       (deflibpath): Make const char *.
+       (envsep): Make const char *.
+       (gawk_name): Now returns const char *.
+
 2020-04-14         Arnold D. Robbins     <arnold@skeeve.com>
 
        * 5.1.0: Release tar ball made.
diff --git a/vms/gawkmisc.vms b/vms/gawkmisc.vms
index 725cf66..ff5805b 100644
--- a/vms/gawkmisc.vms
+++ b/vms/gawkmisc.vms
@@ -79,10 +79,10 @@ int   SYS$TRNLNM(
         const unsigned char * acmode,
         const struct item_list_3 * item_list);
 
-char quote = '\'';
-char *defpath = DEFPATH;
-char *deflibpath = DEFLIBPATH;
-char envsep  = ',';
+const char quote = '\'';
+const char *defpath = DEFPATH;
+const char *deflibpath = DEFLIBPATH;
+const char envsep  = ',';
 #define VMS_NAME_LEN 255
 static char vms_name[VMS_NAME_LEN+1];
 
@@ -132,7 +132,7 @@ static int sys_trnlnm
  * passed exec() argv[0] and handle both cases.
  */
 
-char *
+const char *
 gawk_name(filespec)
 const char *filespec;
 {

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

Summary of changes:
 ChangeLog         | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 array.c           |  3 ++-
 awk.h             | 18 ++++++++++--------
 awkgram.c         |  6 +++---
 awkgram.y         |  6 +++---
 builtin.c         |  5 ++---
 cmd.h             | 12 ++++++------
 command.c         |  8 ++++----
 command.y         |  8 ++++----
 debug.c           | 32 +++++++++++++++----------------
 eval.c            |  2 +-
 floatcomp.c       |  1 -
 gawkapi.c         | 15 ++++++++-------
 gawkapi.h         |  2 +-
 interpret.h       |  2 +-
 io.c              | 22 ++++++++++++----------
 main.c            |  6 +++---
 mpfr.c            |  6 +++---
 node.c            |  2 --
 pc/ChangeLog      |  8 ++++++++
 pc/gawkmisc.pc    | 14 +++++++-------
 posix/ChangeLog   |  8 ++++++++
 posix/gawkmisc.c  | 12 ++++++------
 profile.c         |  4 ++--
 re.c              |  2 +-
 support/ChangeLog |  4 ++++
 support/random.h  |  5 ++++-
 vms/ChangeLog     |  8 ++++++++
 vms/gawkmisc.vms  | 10 +++++-----
 29 files changed, 188 insertions(+), 99 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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