m4-commit
[Top][All Lists]
Advanced

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

[SCM] GNU M4 source repository branch, branch-1.6, updated. v1.5.89a-100


From: Eric Blake
Subject: [SCM] GNU M4 source repository branch, branch-1.6, updated. v1.5.89a-100-g9429358
Date: Wed, 18 Feb 2009 21:37:05 +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=9429358695faabee31d0413cee0d2376c7c73048

The branch, branch-1.6 has been updated
       via  9429358695faabee31d0413cee0d2376c7c73048 (commit)
       via  08745f701225284d682c9a68b27cec282e0cd04b (commit)
       via  0cec2254cb5d48cad751bb588cd93c40c006dc27 (commit)
       via  5fd045d1e9904f4397b9add24512c72a9d9d6447 (commit)
      from  16e712b9dbcfcc49a54dd7c010ca1cab075fd79a (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 9429358695faabee31d0413cee0d2376c7c73048
Author: Eric Blake <address@hidden>
Date:   Wed Feb 18 13:36:15 2009 -0700

    Prefer buffer over byte operations.
    
    * src/format.c (expand_format): Use memchr for speed.
    * src/builtin.c (substitute): Likewise.
    (expand_user_macro): Rearrange for readability.
    * src/input.c (consume_buffer): Allow C++ compilation.
    
    Signed-off-by: Eric Blake <address@hidden>
    (cherry picked from commit 45a154e6d70517bf1b837715aae2fe366c9c1116)

commit 08745f701225284d682c9a68b27cec282e0cd04b
Author: Eric Blake <address@hidden>
Date:   Wed Feb 18 11:38:54 2009 -0700

    Speed up esyscmd with buffer reads.
    
    * src/builtin.c (m4_esyscmd): Read blocks directly into obstack,
    rather than repeatedly reading bytes.  Detect read errors.
    
    Signed-off-by: Eric Blake <address@hidden>
    (cherry picked from commit 1974da270a84d8c0cf2b3e3e08ce5292fdb211f3)

commit 0cec2254cb5d48cad751bb588cd93c40c006dc27
Author: Eric Blake <address@hidden>
Date:   Wed Feb 18 12:03:03 2009 -0700

    Avoid risk of stack overflow.
    
    * src/output.c (insert_file): Avoid stack allocation of large
    buffer.
    (freeze_diversions): Avoid spurious semicolon.
    
    Signed-off-by: Eric Blake <address@hidden>
    (cherry picked from commit 01f216c3c98d41db7878b18c93d23e8dc38d8643)

commit 5fd045d1e9904f4397b9add24512c72a9d9d6447
Author: Eric Blake <address@hidden>
Date:   Wed Feb 18 13:36:50 2009 -0700

    Update copyright years.
    
    * src/format.c: Add 2009 to copyright.
    * src/m4.h: Likewise.
    * THANKS: Likewise.  Add name from branch.
    
    Signed-off-by: Eric Blake <address@hidden>

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

Summary of changes:
 ChangeLog     |   22 +++++++++++++++++++++
 THANKS        |    4 ++-
 src/builtin.c |   58 ++++++++++++++++++++++++++++++++++++++++----------------
 src/format.c  |   17 +++++++++------
 src/input.c   |    2 +-
 src/m4.h      |    4 +-
 src/output.c  |   12 ++++------
 7 files changed, 84 insertions(+), 35 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 85f2c5b..376ef68 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2009-02-18  Eric Blake  <address@hidden>
+
+       Prefer buffer over byte operations.
+       * src/format.c (expand_format): Use memchr for speed.
+       * src/builtin.c (substitute): Likewise.
+       (expand_user_macro): Rearrange for readability.
+       * src/input.c (consume_buffer): Allow C++ compilation.
+
+       Speed up esyscmd with buffer reads.
+       * src/builtin.c (m4_esyscmd): Read blocks directly into obstack,
+       rather than repeatedly reading bytes.  Detect read errors.
+
+       Avoid risk of stack overflow.
+       * src/output.c (insert_file): Avoid stack allocation of large
+       buffer.
+       (freeze_diversions): Avoid spurious semicolon.
+
+       Update copyright years.
+       * src/format.c: Add 2009 to copyright.
+       * src/m4.h: Likewise.
+       * THANKS: Likewise.  Add name from branch.
+
 2009-02-17  Eric Blake  <address@hidden>
 
        Reorder token recognition to match other implementations.
diff --git a/THANKS b/THANKS
index c52f07b..2b42fca 100644
--- a/THANKS
+++ b/THANKS
@@ -111,6 +111,7 @@ Steve Williamson    address@hidden
 Steven Augart          address@hidden
 Thomas Klausner                address@hidden
 Thorsten Ohl           address@hidden
+Tom G. Christensen     address@hidden
 Tom McConnell          address@hidden
 Tom Quinn              address@hidden
 Tom Tromey             address@hidden
@@ -126,7 +127,8 @@ Local Variables:
 coding: utf-8
 End:
 
-Copyright (C) 2000, 2006, 2007 Free Software Foundation, Inc.
+Copyright (C) 2000, 2006, 2007, 2008, 2009 Free Software Foundation,
+Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.2 or
diff --git a/src/builtin.c b/src/builtin.c
index 22d156d..0a62f99 100644
--- a/src/builtin.c
+++ b/src/builtin.c
@@ -1177,7 +1177,6 @@ m4_esyscmd (struct obstack *obs, int argc, 
macro_arguments *argv)
   const char *cmd = ARG (1);
   size_t len = ARG_LEN (1);
   FILE *pin;
-  int ch;
 
   if (strlen (cmd) != len)
     m4_warn (0, me, _("argument %s truncated"),
@@ -1200,8 +1199,27 @@ m4_esyscmd (struct obstack *obs, int argc, 
macro_arguments *argv)
     }
   else
     {
-      while ((ch = getc (pin)) != EOF)
-       obstack_1grow (obs, (char) ch);
+      while (1)
+       {
+         size_t avail = obstack_room (obs);
+         if (!avail)
+           {
+             int ch = getc (pin);
+             if (ch == EOF)
+               break;
+             obstack_1grow (obs, ch);
+           }
+         else
+           {
+             size_t len = fread (obstack_next_free (obs), 1, avail, pin);
+             if (len <= 0)
+               break;
+             obstack_blank_fast (obs, len);
+           }
+       }
+      if (ferror (pin))
+       m4_warn (errno, me, _("cannot read pipe to command %s"),
+                quotearg_style (locale_quoting_style, cmd));
       sysval = pclose (pin);
     }
 }
@@ -2172,23 +2190,24 @@ substitute (struct obstack *obs, const call_info *me, 
const char *victim,
            const char *repl, size_t repl_len, struct re_registers *regs)
 {
   int ch;
-
-  while (repl_len--)
+  while (1)
     {
-      ch = *repl++;
-      if (ch != '\\')
+      const char *backslash = (char *) memchr (repl, '\\', repl_len);
+      if (!backslash)
        {
-         obstack_1grow (obs, ch);
-         continue;
+         obstack_grow (obs, repl, repl_len);
+         return;
        }
+      obstack_grow (obs, repl, backslash - repl);
+      repl_len -= backslash - repl + 1;
       if (!repl_len)
        {
          m4_warn (0, me, _("trailing \\ ignored in replacement"));
          return;
        }
-
-      ch = *repl++;
+      repl = backslash + 1;
       repl_len--;
+      ch = *repl++;
       switch (ch)
        {
        case '0':
@@ -2470,15 +2489,22 @@ expand_user_macro (struct obstack *obs, symbol *sym,
   const char *text = SYMBOL_TEXT (sym);
   size_t len = SYMBOL_TEXT_LEN (sym);
   int i;
-  const char *dollar = memchr (text, '$', len);
-
-  while (dollar)
+  while (1)
     {
+      const char *dollar = (char *) memchr (text, '$', len);
+      if (!dollar)
+       {
+         obstack_grow (obs, text, len);
+         return;
+       }
       obstack_grow (obs, text, dollar - text);
       len -= dollar - text;
       text = dollar;
       if (len == 1)
-       break;
+       {
+         obstack_1grow (obs, '$');
+         return;
+       }
       len--;
       switch (*++text)
        {
@@ -2514,7 +2540,5 @@ expand_user_macro (struct obstack *obs, symbol *sym,
          obstack_1grow (obs, '$');
          break;
        }
-      dollar = memchr (text, '$', len);
     }
-  obstack_grow (obs, text, len);
 }
diff --git a/src/format.c b/src/format.c
index 09cffa3..dde3a19 100644
--- a/src/format.c
+++ b/src/format.c
@@ -1,7 +1,7 @@
 /* GNU m4 -- A simple macro processor
 
-   Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2006, 2007, 2008
-   Free Software Foundation, Inc.
+   Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2006, 2007, 2008,
+   2009 Free Software Foundation, Inc.
 
    This file is part of GNU M4.
 
@@ -181,14 +181,17 @@ expand_format (struct obstack *obs, int argc, 
macro_arguments *argv)
   f_len = ARG_LEN (1);
   assert (!f[f_len]); /* Requiring a terminating NUL makes parsing simpler.  */
   memset (ok, 0, sizeof ok);
-  while (f_len--)
+  while (1)
     {
-      c = *fmt++;
-      if (c != '%')
+      const char *percent = (char *) memchr (fmt, '%', f_len);
+      if (!percent)
        {
-         obstack_1grow (obs, c);
-         continue;
+         obstack_grow (obs, fmt, f_len);
+         break;
        }
+      obstack_grow (obs, fmt, percent - fmt);
+      f_len -= percent - fmt + 1;
+      fmt = percent + 1;
 
       if (*fmt == '%')
        {
diff --git a/src/input.c b/src/input.c
index 709ef3e..129a5f2 100644
--- a/src/input.c
+++ b/src/input.c
@@ -930,7 +930,7 @@ consume_buffer (size_t len)
       buf = freadptr (isp->u.u_f.fp, &buf_len);
       assert (buf && len <= buf_len);
       buf_len = 0;
-      while ((p = memchr (buf + buf_len, '\n', len - buf_len)))
+      while ((p = (char *) memchr (buf + buf_len, '\n', len - buf_len)))
        {
          if (p == buf + len - 1)
            start_of_input_line = true;
diff --git a/src/m4.h b/src/m4.h
index b5521ca..5407d10 100644
--- a/src/m4.h
+++ b/src/m4.h
@@ -1,7 +1,7 @@
 /* GNU m4 -- A simple macro processor
 
-   Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005, 2006, 2007,
-   2008 Free Software Foundation, Inc.
+   Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005, 2006,
+   2007, 2008, 2009 Free Software Foundation, Inc.
 
    This file is part of GNU M4.
 
diff --git a/src/output.c b/src/output.c
index 1add1a9..99a9f0a 100644
--- a/src/output.c
+++ b/src/output.c
@@ -1,7 +1,7 @@
 /* GNU m4 -- A simple macro processor
 
    Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005, 2006,
-   2007, 2008 Free Software Foundation, Inc.
+   2007, 2008, 2009 Free Software Foundation, Inc.
 
    This file is part of GNU M4.
 
@@ -835,19 +835,17 @@ make_diversion (int divnum)
 void
 insert_file (FILE *file)
 {
-  char buffer[COPY_BUFFER_SIZE];
+  static char buffer[COPY_BUFFER_SIZE];
   size_t length;
 
   /* Optimize out inserting into a sink.  */
-
   if (!output_diversion)
     return;
 
   /* Insert output by big chunks.  */
-
-  for (;;)
+  while (1)
     {
-      length = fread (buffer, 1, COPY_BUFFER_SIZE, file);
+      length = fread (buffer, 1, sizeof buffer, file);
       if (ferror (file))
        m4_error (EXIT_FAILURE, errno, NULL, _("error reading inserted file"));
       if (length == 0)
@@ -1005,7 +1003,7 @@ freeze_diversions (FILE *file)
   iter = gl_oset_iterator (diversion_table);
   while (gl_oset_iterator_next (&iter, &elt))
     {
-      m4_diversion *diversion = (m4_diversion *) elt;;
+      m4_diversion *diversion = (m4_diversion *) elt;
       if (diversion->size || diversion->used)
        {
          if (diversion->size)


hooks/post-receive
--
GNU M4 source repository




reply via email to

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