m4-commit
[Top][All Lists]
Advanced

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

[SCM] GNU M4 source repository branch, master, updated. cvs-readonly-21-


From: Eric Blake
Subject: [SCM] GNU M4 source repository branch, master, updated. cvs-readonly-21-g5d2ce0f
Date: Wed, 28 Nov 2007 03:09:00 +0000

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 "GNU M4 source repository".

http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=5d2ce0f461d5d77cf098fefddaa2ac9c15a95a4b

The branch, master has been updated
       via  5d2ce0f461d5d77cf098fefddaa2ac9c15a95a4b (commit)
      from  14b2ffbb82eb22cd36b1703a5501ee87ea51c45c (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 -----------------------------------------------------------------
commit 5d2ce0f461d5d77cf098fefddaa2ac9c15a95a4b
Author: Eric Blake <address@hidden>
Date:   Tue Nov 27 10:15:48 2007 -0700

    Stage 2: use accessors, not direct reference, into argv.
    
    * m4/m4private.h (m4_arg_argc): New fast accessor.
    * m4/m4module.h (m4_arg_argc, m4_arg_symbol, m4_is_arg_text)
    (m4_is_arg_func, m4_arg_text, m4_arg_len, m4_arg_func): New
    prototypes.
    (m4_builtin_func, M4BUILTIN, M4BUILTIN_HANDLER, m4_dump_args)
    (m4_macro_call): Make argc unsigned.
    (M4ARG): Use new accessors.
    * modules/m4.c (define, pushdef): Likewise.
    (undefine, popdef, ifelse, m4_dump_symbols, defn, undivert)
    (traceon, traceoff): Make argc unsigned.
    * modules/m4.h (m4_dump_symbols_func): Likewise.
    * modules/evalparse.c (m4_evaluate): Likewise.
    * modules/gnu.c (builtin, indir): Use new accessors.
    (changesyntax): Make argc unsigned.
    * modules/perl.c (perleval): Likewise.
    * m4/utility.c (m4_dump_args): Use new accessors.
    * m4/macro.c (trace_pre): Likewise.
    (m4_arg_symbol, m4_arg_argc, m4_is_arg_text, m4_is_arg_func)
    (m4_arg_text, m4_arg_len, m4_arg_func): New functions.
    (expand_macro, trace_pre, trace_post, m4_macro_call): Update argc
    usage.
    
    Signed-off-by: Eric Blake <address@hidden>

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

Summary of changes:
 ChangeLog           |   25 +++++++++++
 m4/m4module.h       |   30 ++++++++-----
 m4/m4private.h      |   28 ++++++++----
 m4/macro.c          |  119 +++++++++++++++++++++++++++++++++++++++++++--------
 m4/utility.c        |    7 ++-
 modules/evalparse.c |    3 +-
 modules/gnu.c       |   31 +++++++------
 modules/m4.c        |   31 +++++++------
 modules/m4.h        |    2 +-
 modules/perl.c      |   10 ++--
 10 files changed, 208 insertions(+), 78 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2fbe4ee..7cdf53b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2007-11-27  Eric Blake  <address@hidden>
+
+       Stage 2: use accessors, not direct reference, into argv.
+       * m4/m4private.h (m4_arg_argc): New fast accessor.
+       * m4/m4module.h (m4_arg_argc, m4_arg_symbol, m4_is_arg_text)
+       (m4_is_arg_func, m4_arg_text, m4_arg_len, m4_arg_func): New
+       prototypes.
+       (m4_builtin_func, M4BUILTIN, M4BUILTIN_HANDLER, m4_dump_args)
+       (m4_macro_call): Make argc unsigned.
+       (M4ARG): Use new accessors.
+       * modules/m4.c (define, pushdef): Likewise.
+       (undefine, popdef, ifelse, m4_dump_symbols, defn, undivert)
+       (traceon, traceoff): Make argc unsigned.
+       * modules/m4.h (m4_dump_symbols_func): Likewise.
+       * modules/evalparse.c (m4_evaluate): Likewise.
+       * modules/gnu.c (builtin, indir): Use new accessors.
+       (changesyntax): Make argc unsigned.
+       * modules/perl.c (perleval): Likewise.
+       * m4/utility.c (m4_dump_args): Use new accessors.
+       * m4/macro.c (trace_pre): Likewise.
+       (m4_arg_symbol, m4_arg_argc, m4_is_arg_text, m4_is_arg_func)
+       (m4_arg_text, m4_arg_len, m4_arg_func): New functions.
+       (expand_macro, trace_pre, trace_post, m4_macro_call): Update argc
+       usage.
+
 2007-11-24  Eric Blake  <address@hidden>
 
        Stage 1: convert m4_symbol_value** into new object.
diff --git a/m4/m4module.h b/m4/m4module.h
index 3f60cba..b0e9405 100644
--- a/m4/m4module.h
+++ b/m4/m4module.h
@@ -41,7 +41,8 @@ typedef struct m4_macro_args  m4_macro_args;
 
 typedef struct obstack         m4_obstack;
 
-typedef void   m4_builtin_func  (m4 *, m4_obstack *, int, m4_macro_args *);
+typedef void   m4_builtin_func  (m4 *, m4_obstack *, unsigned int,
+                                m4_macro_args *);
 
 /* The value of m4_builtin flags is built from these:  */
 enum {
@@ -97,11 +98,11 @@ struct m4_macro_args
 
 #define M4BUILTIN(name)                                                        
\
   static void CONC (builtin_, name)                                    \
-   (m4 *context, m4_obstack *obs, int argc, m4_macro_args *argv);
+   (m4 *context, m4_obstack *obs, unsigned int argc, m4_macro_args *argv);
 
 #define M4BUILTIN_HANDLER(name)                                                
\
   static void CONC (builtin_, name)                                    \
-   (m4 *context, m4_obstack *obs, int argc, m4_macro_args *argv)
+   (m4 *context, m4_obstack *obs, unsigned int argc, m4_macro_args *argv)
 
 #define M4INIT_HANDLER(name)                                           \
   void CONC (name, CONC (_LTX_, m4_init_module))                       \
@@ -119,14 +120,14 @@ struct m4_macro_args
   CONC (S, _func) *S = (CONC (S, _func) *)                             \
        m4_module_import (context, STR (M), STR (S), obs)
 
-#define M4ARG(i)                                                       \
-  ((i) == 0 ? argv->argv0                                              \
-   : argv->argc > (i) ? m4_get_symbol_value_text (argv->array[(i) - 1]) : "")
+/* Grab the text contents of argument I, or abort if the argument is
+   not text.  Assumes that `m4_macro_args *argv' is in scope.  */
+#define M4ARG(i) m4_arg_text (argv, i)
 
 extern bool    m4_bad_argc        (m4 *, int, const char *,
                                    unsigned int, unsigned int, bool);
 extern bool    m4_numeric_arg     (m4 *, const char *, const char *, int *);
-extern void    m4_dump_args       (m4 *, m4_obstack *, int,
+extern void    m4_dump_args       (m4 *, m4_obstack *, unsigned int,
                                    m4_macro_args *, const char *, bool);
 extern bool    m4_parse_truth_arg (m4 *, const char *, const char *, bool);
 
@@ -306,10 +307,17 @@ extern const m4_builtin   *m4_builtin_find_by_func 
(m4_module *,
 
 /* --- MACRO MANAGEMENT --- */
 
-extern void       m4_macro_expand_input (m4 *);
-extern void       m4_macro_call         (m4 *, m4_symbol_value *,
-                                         m4_obstack *, int, m4_macro_args *);
-
+extern void    m4_macro_expand_input   (m4 *);
+extern void    m4_macro_call           (m4 *, m4_symbol_value *,
+                                        m4_obstack *, unsigned int,
+                                        m4_macro_args *);
+extern unsigned int m4_arg_argc                (m4_macro_args *);
+extern m4_symbol_value *m4_arg_symbol  (m4_macro_args *, unsigned int);
+extern bool    m4_is_arg_text          (m4_macro_args *, unsigned int);
+extern bool    m4_is_arg_func          (m4_macro_args *, unsigned int);
+extern const char *m4_arg_text         (m4_macro_args *, unsigned int);
+extern size_t  m4_arg_len              (m4_macro_args *, unsigned int);
+extern m4_builtin_func *m4_arg_func    (m4_macro_args *, unsigned int);
 
 
 /* --- RUNTIME DEBUGGING --- */
diff --git a/m4/m4private.h b/m4/m4private.h
index 63a9bc4..10d82c9 100644
--- a/m4/m4private.h
+++ b/m4/m4private.h
@@ -346,24 +346,32 @@ struct m4_syntax_table {
 #endif
 
 
+/* --- MACRO MANAGEMENT --- */
+
 /* Various different token types.  */
 typedef enum {
-  M4_TOKEN_EOF,                        /* end of file */
-  M4_TOKEN_NONE,               /* discardable token */
-  M4_TOKEN_STRING,             /* a quoted string */
-  M4_TOKEN_SPACE,              /* whitespace */
-  M4_TOKEN_WORD,               /* an identifier */
-  M4_TOKEN_OPEN,               /* argument list start */
-  M4_TOKEN_COMMA,              /* argument separator */
-  M4_TOKEN_CLOSE,              /* argument list end */
-  M4_TOKEN_SIMPLE,             /* a single character */
-  M4_TOKEN_MACDEF              /* a macro's definition (see "defn") */
+  M4_TOKEN_EOF,                /* End of file, M4_SYMBOL_VOID.  */
+  M4_TOKEN_NONE,       /* Discardable token, M4_SYMBOL_VOID.  */
+  M4_TOKEN_STRING,     /* Quoted string or comment, M4_SYMBOL_TEXT or
+                          M4_SYMBOL_COMP.  */
+  M4_TOKEN_SPACE,      /* Whitespace, M4_SYMBOL_TEXT.  */
+  M4_TOKEN_WORD,       /* An identifier, M4_SYMBOL_TEXT.  */
+  M4_TOKEN_OPEN,       /* Argument list start, M4_SYMBOL_TEXT.  */
+  M4_TOKEN_COMMA,      /* Argument separator, M4_SYMBOL_TEXT.  */
+  M4_TOKEN_CLOSE,      /* Argument list end, M4_SYMBOL_TEXT.  */
+  M4_TOKEN_SIMPLE,     /* Single character, M4_SYMBOL_TEXT.  */
+  M4_TOKEN_MACDEF      /* Macro's definition (see "defn"), M4_SYMBOL_FUNC.  */
 } m4__token_type;
 
 extern m4__token_type  m4__next_token (m4 *, m4_symbol_value *, int *,
                                        const char *);
 extern bool            m4__next_token_is_open (m4 *);
 
+/* Fast macro versions of macro argv accessor functions,
+   that also have an identically named function exported in m4module.h.  */
+#ifdef NDEBUG
+# define m4_arg_argc(A)                (A)->argc
+#endif /* NDEBUG */
 
 
 /* --- PATH MANAGEMENT --- */
diff --git a/m4/macro.c b/m4/macro.c
index c4ba1af..449f160 100644
--- a/m4/macro.c
+++ b/m4/macro.c
@@ -42,9 +42,8 @@ static void    process_macro   (m4 *, m4_symbol_value *, 
m4_obstack *, int,
 
 static void    trace_prepre     (m4 *, const char *, size_t,
                                  m4_symbol_value *);
-static void    trace_pre        (m4 *, const char *, size_t, int,
-                                 m4_macro_args *);
-static void    trace_post       (m4 *, const char *, size_t, int,
+static void    trace_pre        (m4 *, const char *, size_t, m4_macro_args *);
+static void    trace_post       (m4 *, const char *, size_t,
                                  m4_macro_args *, m4_input_block *, bool);
 
 static void    trace_format     (m4 *, const char *, ...)
@@ -250,7 +249,6 @@ expand_macro (m4 *context, const char *name, m4_symbol 
*symbol)
   unsigned int argc_size;      /* Size of argc_stack on entry.  */
   unsigned int argv_size;      /* Size of argv_stack on entry.  */
   m4_macro_args *argv;
-  int argc;
   m4_obstack *expansion;
   m4_input_block *expanded;
   bool traced;
@@ -300,7 +298,6 @@ recursion limit of %zu exceeded, use -L<N> to change it"),
 
   argv = collect_arguments (context, name, symbol, &argv_stack, argv_size,
                            &argc_stack);
-  argc = argv->argc;
   /* Calling collect_arguments invalidated name, but we copied it as
      argv[0].  */
   name = argv->argv0;
@@ -311,15 +308,14 @@ recursion limit of %zu exceeded, use -L<N> to change it"),
   m4_set_current_line (context, loc_open_line);
 
   if (traced)
-    trace_pre (context, name, my_call_id, argc, argv);
+    trace_pre (context, name, my_call_id, argv);
 
   expansion = m4_push_string_init (context);
-  m4_macro_call (context, value, expansion, argc, argv);
+  m4_macro_call (context, value, expansion, argv->argc, argv);
   expanded = m4_push_string_finish ();
 
   if (traced)
-    trace_post (context, name, my_call_id, argc, argv, expanded,
-               trace_expansion);
+    trace_post (context, name, my_call_id, argv, expanded, trace_expansion);
 
   m4_set_current_file (context, loc_close_file);
   m4_set_current_line (context, loc_close_line);
@@ -344,7 +340,7 @@ recursion limit of %zu exceeded, use -L<N> to change it"),
    Return the object describing all of the macro arguments.  */
 static m4_macro_args *
 collect_arguments (m4 *context, const char *name, m4_symbol *symbol,
-                  m4_obstack *argptr, unsigned argv_base,
+                  m4_obstack *argptr, unsigned int argv_base,
                   m4_obstack *arguments)
 {
   m4_symbol_value token;
@@ -398,7 +394,7 @@ collect_arguments (m4 *context, const char *name, m4_symbol 
*symbol,
    the obstack EXPANSION.  Macro tracing is also handled here.  */
 void
 m4_macro_call (m4 *context, m4_symbol_value *value, m4_obstack *expansion,
-              int argc, m4_macro_args *argv)
+              unsigned int argc, m4_macro_args *argv)
 {
   if (m4_bad_argc (context, argc, argv->argv0,
                   VALUE_MIN_ARGS (value), VALUE_MAX_ARGS (value),
@@ -653,15 +649,15 @@ trace_prepre (m4 *context, const char *name, size_t id, 
m4_symbol_value *value)
 /* Format the parts of a trace line, that can be made before the macro is
    actually expanded.  Used from expand_macro ().  */
 static void
-trace_pre (m4 *context, const char *name, size_t id,
-          int argc, m4_macro_args *argv)
+trace_pre (m4 *context, const char *name, size_t id, m4_macro_args *argv)
 {
-  int i;
+  unsigned int i;
+  unsigned int argc = m4_arg_argc (argv);
 
   trace_header (context, id);
   trace_format (context, "%s", name);
 
-  if ((argc > 1) && m4_is_debug_bit (context, M4_DEBUG_TRACE_ARGS))
+  if (1 < argc && m4_is_debug_bit (context, M4_DEBUG_TRACE_ARGS))
     {
       bool quote = m4_is_debug_bit (context, M4_DEBUG_TRACE_QUOTE);
       const char *lquote = m4_get_syntax_lquote (M4SYNTAX);
@@ -675,8 +671,9 @@ trace_pre (m4 *context, const char *name, size_t id,
          if (i != 1)
            trace_format (context, ", ");
 
-         m4_symbol_value_print (argv->array[i - 1], &context->trace_messages,
-                                quote, lquote, rquote, arg_length, module);
+         m4_symbol_value_print (m4_arg_symbol (argv, i),
+                                &context->trace_messages, quote, lquote,
+                                rquote, arg_length, module);
        }
       trace_format (context, ")");
     }
@@ -686,7 +683,7 @@ trace_pre (m4 *context, const char *name, size_t id,
    expand_macro ().  */
 static void
 trace_post (m4 *context, const char *name, size_t id,
-           int argc, m4_macro_args *argv, m4_input_block *expanded,
+           m4_macro_args *argv, m4_input_block *expanded,
            bool trace_expansion)
 {
   if (trace_expansion)
@@ -697,3 +694,89 @@ trace_post (m4 *context, const char *name, size_t id,
 
   trace_flush (context);
 }
+
+
+/* Accessors into m4_macro_args.  */
+
+/* Given ARGV, return the symbol value at the specified INDEX, which
+   must be non-zero and less than argc.  */
+m4_symbol_value *
+m4_arg_symbol (m4_macro_args *argv, unsigned int index)
+{
+  assert (index && index < argv->argc);
+  return argv->array[index - 1];
+}
+
+/* Given ARGV, return true if argument INDEX is text.  Index 0 is
+   always text, as are indices beyond argc.  */
+bool
+m4_is_arg_text (m4_macro_args *argv, unsigned int index)
+{
+  if (index == 0 || argv->argc <= index)
+    return true;
+  return m4_is_symbol_value_text (m4_arg_symbol (argv, index));
+}
+
+/* Given ARGV, return true if argument INDEX is a builtin function.
+   Only non-zero indices less than argc can return true.  */
+bool
+m4_is_arg_func (m4_macro_args *argv, unsigned int index)
+{
+  if (index == 0 || argv->argc <= index)
+    return false;
+  return m4_is_symbol_value_func (m4_arg_symbol (argv, index));
+}
+
+/* Given ARGV, return the text at argument INDEX, or NULL if the
+   argument is not text.  Index 0 is always text, and indices beyond
+   argc return the empty string.  */
+const char *
+m4_arg_text (m4_macro_args *argv, unsigned int index)
+{
+  if (index == 0)
+    return argv->argv0;
+  if (argv->argc <= index)
+    return "";
+  if (!m4_is_symbol_value_text (argv->array[index - 1]))
+    return NULL;
+  return m4_get_symbol_value_text (argv->array[index - 1]);
+}
+
+/* Given ARGV, return the length of argument INDEX, or SIZE_MAX if the
+   argument is not text.  Indices beyond argc return 0.  */
+size_t
+m4_arg_len (m4_macro_args *argv, unsigned int index)
+{
+  /* TODO - update m4_macro_args to cache this.  */
+  if (index == 0)
+    return strlen (argv->argv0);
+  if (argv->argc <= index)
+    return 0;
+  if (!m4_is_symbol_value_text (argv->array[index - 1]))
+    return SIZE_MAX;
+  return strlen (m4_get_symbol_value_text (argv->array[index - 1]));
+}
+
+/* Given ARGV, return the builtin function referenced by argument
+   INDEX, or NULL if it is not a builtin.  Index 0, and indices beyond
+   argc, return NULL.  */
+m4_builtin_func *
+m4_arg_func (m4_macro_args *argv, unsigned int index)
+{
+  if (index == 0 || argv->argc <= index
+      || !m4_is_symbol_value_func (argv->array[index - 1]))
+    return NULL;
+  return m4_get_symbol_value_func (argv->array[index - 1]);
+}
+
+/* Define these last, so that earlier uses can benefit from the macros
+   in m4private.h.  */
+
+/* Given ARGV, return one greater than the number of arguments it
+   describes.  */
+#undef m4_arg_argc
+unsigned int
+m4_arg_argc (m4_macro_args *argv)
+{
+  return argv->argc;
+}
diff --git a/m4/utility.c b/m4/utility.c
index 851da31..53d2a18 100644
--- a/m4/utility.c
+++ b/m4/utility.c
@@ -99,14 +99,15 @@ m4_numeric_arg (m4 *context, const char *caller, const char 
*arg, int *valuep)
    index START, separated by SEP, and quoted by the current quotes, if
    QUOTED is true.  */
 void
-m4_dump_args (m4 *context, m4_obstack *obs, int start,
+m4_dump_args (m4 *context, m4_obstack *obs, unsigned int start,
              m4_macro_args *argv, const char *sep, bool quoted)
 {
-  int i;
+  unsigned int i;
   size_t len = strlen (sep);
   bool need_sep = false;
+  unsigned int argc = m4_arg_argc (argv);
 
-  for (i = start; i < argv->argc; i++)
+  for (i = start; i < argc; i++)
     {
       if (need_sep)
        obstack_grow (obs, sep, len);
diff --git a/modules/evalparse.c b/modules/evalparse.c
index 31e1e4b..e21a081 100644
--- a/modules/evalparse.c
+++ b/modules/evalparse.c
@@ -885,7 +885,8 @@ simple_term (m4 *context, eval_token et, number *v1)
 
 /* Main entry point, called from "eval" and "mpeval" builtins.  */
 void
-m4_evaluate (m4 *context, m4_obstack *obs, int argc, m4_macro_args *argv)
+m4_evaluate (m4 *context, m4_obstack *obs, unsigned int argc,
+             m4_macro_args *argv)
 {
   const char * me      = M4ARG (0);
   const char * str     = M4ARG (1);
diff --git a/modules/gnu.c b/modules/gnu.c
index 6fd6623..70c7cf6 100644
--- a/modules/gnu.c
+++ b/modules/gnu.c
@@ -409,14 +409,14 @@ M4BUILTIN_HANDLER (builtin)
   const char *name;
   m4_symbol_value *value;
 
-  if (!m4_is_symbol_value_text (argv->array[1 - 1]))
+  if (!m4_is_arg_text (argv, 1))
     {
-      if (m4_is_symbol_value_func (argv->array[1 - 1])
-         && m4_get_symbol_value_func (argv->array[1 - 1]) == builtin_builtin)
+      assert (m4_is_arg_func (argv, 1));
+      if (m4_arg_func (argv, 1) == builtin_builtin)
        {
          if (m4_bad_argc (context, argc, me, 2, 2, false))
            return;
-         if (!m4_is_symbol_value_text (argv->array[2 - 1]))
+         if (!m4_is_arg_text (argv, 2))
            {
              m4_warn (context, 0, me, _("invalid macro name ignored"));
              return;
@@ -447,8 +447,9 @@ M4BUILTIN_HANDLER (builtin)
                            bp->min_args, bp->max_args,
                            (bp->flags & M4_BUILTIN_SIDE_EFFECT) != 0))
            {
-             int i;
-             /* TODO - make use of $@ reference */
+             unsigned int i;
+             /* TODO - make use of $@ reference.  */
+             /* TODO - add accessor that performs this construction.  */
              m4_macro_args *new_argv;
              new_argv = xmalloc (offsetof (m4_macro_args, array)
                                  + ((argc - 2) * sizeof (m4_symbol_value *)));
@@ -460,8 +461,9 @@ M4BUILTIN_HANDLER (builtin)
                      (argc - 2) * sizeof (m4_symbol_value *));
              if ((bp->flags & M4_BUILTIN_GROKS_MACRO) == 0)
                for (i = 2; i < argc; i++)
-                 if (!m4_is_symbol_value_text (argv->array[i - 1]))
-                   m4_set_symbol_value_text (new_argv->array[i - 2], "");
+                 if (!m4_is_arg_text (argv, i))
+                   m4_set_symbol_value_text (m4_arg_symbol (new_argv, i - 1),
+                                             "");
              bp->func (context, obs, argc - 1, new_argv);
              free (new_argv);
            }
@@ -512,7 +514,7 @@ M4BUILTIN_HANDLER (changesyntax)
 
   if (m4_expand_ranges)
     {
-      int i;
+      unsigned int i;
       for (i = 1; i < argc; i++)
        {
          const char *spec = M4ARG (i);
@@ -679,7 +681,7 @@ M4BUILTIN_HANDLER (format)
 M4BUILTIN_HANDLER (indir)
 {
   const char *me = M4ARG (0);
-  if (!m4_is_symbol_value_text (argv->array[1 - 1]))
+  if (!m4_is_arg_text (argv, 1))
     m4_warn (context, 0, me, _("invalid macro name ignored"));
   else
     {
@@ -690,8 +692,9 @@ M4BUILTIN_HANDLER (indir)
        m4_warn (context, 0, me, _("undefined macro `%s'"), name);
       else
        {
-         int i;
-         /* TODO - make use of $@ reference */
+         unsigned int i;
+         /* TODO - make use of $@ reference.  */
+         /* TODO - add accessor that performs this construction.  */
          m4_macro_args *new_argv;
          new_argv = xmalloc (offsetof (m4_macro_args, array)
                              + ((argc - 2) * sizeof (m4_symbol_value *)));
@@ -703,8 +706,8 @@ M4BUILTIN_HANDLER (indir)
                  (argc - 2) * sizeof (m4_symbol_value *));
          if (!m4_symbol_groks_macro (symbol))
            for (i = 2; i < argc; i++)
-             if (!m4_is_symbol_value_text (argv->array[i - 1]))
-               m4_set_symbol_value_text (new_argv->array[i - 2], "");
+             if (!m4_is_arg_text (argv, i))
+               m4_set_symbol_value_text (m4_arg_symbol (new_argv, i - 1), "");
          m4_macro_call (context, m4_get_symbol_value (symbol), obs,
                         argc - 1, new_argv);
          free (new_argv);
diff --git a/modules/m4.c b/modules/m4.c
index 7c0d8ed..37497e6 100644
--- a/modules/m4.c
+++ b/modules/m4.c
@@ -49,8 +49,9 @@
 
 extern void m4_set_sysval    (int value);
 extern void m4_sysval_flush  (m4 *context, bool report);
-extern void m4_dump_symbols  (m4 *context, m4_dump_symbol_data *data, int argc,
-                             m4_macro_args *argv, bool complain);
+extern void m4_dump_symbols  (m4 *context, m4_dump_symbol_data *data,
+                             unsigned int argc, m4_macro_args *argv,
+                             bool complain);
 extern const char *m4_expand_ranges (const char *s, m4_obstack *obs);
 extern void m4_make_temp     (m4 *context, m4_obstack *obs, const char *macro,
                              const char *name, bool dir);
@@ -160,14 +161,14 @@ M4INIT_HANDLER (m4)
 
 M4BUILTIN_HANDLER (define)
 {
-  if (m4_is_symbol_value_text (argv->array[1 - 1]))
+  if (m4_is_arg_text (argv, 1))
     {
       m4_symbol_value *value = m4_symbol_value_create ();
 
       if (argc == 2)
        m4_set_symbol_value_text (value, xstrdup (""));
       else
-       m4_symbol_value_copy (value, argv->array[2 - 1]);
+       m4_symbol_value_copy (value, m4_arg_symbol (argv, 2));
 
       m4_symbol_define (M4SYMTAB, M4ARG (1), value);
     }
@@ -177,7 +178,7 @@ M4BUILTIN_HANDLER (define)
 
 M4BUILTIN_HANDLER (undefine)
 {
-  int i;
+  unsigned int i;
   for (i = 1; i < argc; i++)
     {
       const char *name = M4ARG (i);
@@ -191,14 +192,14 @@ M4BUILTIN_HANDLER (undefine)
 
 M4BUILTIN_HANDLER (pushdef)
 {
-  if (m4_is_symbol_value_text (argv->array[1 - 1]))
+  if (m4_is_arg_text (argv, 1))
     {
       m4_symbol_value *value = m4_symbol_value_create ();
 
       if (argc == 2)
        m4_set_symbol_value_text (value, xstrdup (""));
       else
-       m4_symbol_value_copy (value, argv->array[2 - 1]);
+       m4_symbol_value_copy (value, m4_arg_symbol (argv, 2));
 
       m4_symbol_pushdef (M4SYMTAB, M4ARG (1), value);
     }
@@ -208,7 +209,7 @@ M4BUILTIN_HANDLER (pushdef)
 
 M4BUILTIN_HANDLER (popdef)
 {
-  int i;
+  unsigned int i;
   for (i = 1; i < argc; i++)
     {
       const char *name = M4ARG (i);
@@ -248,7 +249,7 @@ M4BUILTIN_HANDLER (ifelse)
 {
   const char *me = M4ARG (0);
   const char *result;
-  int index;
+  unsigned int index;
 
   /* The valid ranges of argc for ifelse is discontinuous, we cannot
      rely on the regular mechanisms.  */
@@ -327,7 +328,7 @@ dump_symbol_CB (m4_symbol_table *ignored, const char *name, 
m4_symbol *symbol,
 /* If there are no arguments, build a sorted list of all defined
    symbols, otherwise, only the specified symbols.  */
 void
-m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, int argc,
+m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, unsigned int argc,
                 m4_macro_args *argv, bool complain)
 {
   assert (obstack_object_size (data->obs) == 0);
@@ -337,7 +338,7 @@ m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, 
int argc,
     m4_symtab_apply (M4SYMTAB, false, dump_symbol_CB, data);
   else
     {
-      int i;
+      unsigned int i;
       m4_symbol *symbol;
 
       for (i = 1; i < argc; i++)
@@ -396,7 +397,7 @@ M4BUILTIN_HANDLER (dumpdef)
 M4BUILTIN_HANDLER (defn)
 {
   const char *me = M4ARG (0);
-  int i;
+  unsigned int i;
 
   for (i = 1; i < argc; i++)
     {
@@ -602,7 +603,7 @@ M4BUILTIN_HANDLER (divnum)
 
 M4BUILTIN_HANDLER (undivert)
 {
-  int i = 0;
+  unsigned int i = 0;
   const char *me = M4ARG (0);
 
   if (argc == 1)
@@ -874,7 +875,7 @@ M4BUILTIN_HANDLER (m4wrap)
 
 M4BUILTIN_HANDLER (traceon)
 {
-  int i;
+  unsigned int i;
 
   if (argc == 1)
     m4_set_debug_level_opt (context, (m4_get_debug_level_opt (context)
@@ -887,7 +888,7 @@ M4BUILTIN_HANDLER (traceon)
 /* Disable tracing of all specified macros, or all, if none is specified.  */
 M4BUILTIN_HANDLER (traceoff)
 {
-  int i;
+  unsigned int i;
 
   if (argc == 1)
     m4_set_debug_level_opt (context, (m4_get_debug_level_opt (context)
diff --git a/modules/m4.h b/modules/m4.h
index 4214aed..4783d0a 100644
--- a/modules/m4.h
+++ b/modules/m4.h
@@ -39,7 +39,7 @@ typedef struct
 typedef void m4_sysval_flush_func (m4 *context, bool report);
 typedef void m4_set_sysval_func (int value);
 typedef void m4_dump_symbols_func (m4 *context, m4_dump_symbol_data *data,
-                                  int argc, m4_macro_args *argv,
+                                  unsigned int argc, m4_macro_args *argv,
                                   bool complain);
 typedef const char *m4_expand_ranges_func (const char *s, m4_obstack *obs);
 typedef void m4_make_temp_func (m4 *context, m4_obstack *obs,
diff --git a/modules/perl.c b/modules/perl.c
index 9c28b0a..58161b1 100644
--- a/modules/perl.c
+++ b/modules/perl.c
@@ -41,14 +41,14 @@
   BUILTIN (perleval,   false,  false,  false,  0,      -1  )   \
 
 
-#define BUILTIN(handler, macros, blind, side, min, max)  M4BUILTIN(handler)
+#define BUILTIN(handler, macros, blind, side, min, max)  M4BUILTIN (handler)
   builtin_functions
 #undef BUILTIN
 
 m4_builtin m4_builtin_table[] =
 {
 #define BUILTIN(handler, macros, blind, side, min, max)        \
-  { CONC(builtin_, handler), STR(handler),             \
+  { CONC (builtin_, handler), STR (handler),           \
     ((macros ? M4_BUILTIN_GROKS_MACRO : 0)             \
      | (blind ? M4_BUILTIN_BLIND : 0)                  \
      | (side ? M4_BUILTIN_SIDE_EFFECT : 0)),           \
@@ -114,15 +114,15 @@ M4FINISH_HANDLER (perl)
 M4BUILTIN_HANDLER (perleval)
 {
   SV *val;
-  int i;
+  unsigned int i;
 
   for (i = 1; i < argc; i++)
     {
       if (i > 1)
        obstack_1grow (obs, ',');
 
-      val = perl_eval_pv(M4ARG(i), true);
+      val = perl_eval_pv (M4ARG (i), true);
 
-      m4_shipout_string(context, obs, SvPV(val,PL_na), 0, false);
+      m4_shipout_string (context, obs, SvPV (val, PL_na), 0, false);
     }
 }


hooks/post-receive
--
GNU M4 source repository




reply via email to

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