automake-patches
[Top][All Lists]
Advanced

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

chomp-and-factor-append-comments.patch


From: Alexandre Duret-Lutz
Subject: chomp-and-factor-append-comments.patch
Date: 27 Nov 2001 21:28:00 +0100
User-agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7

Index: ChangeLog
--- ChangeLog
+++ ChangeLog
@@ -1,1 +1,11 @@
+2001-11-27  Alexandre Duret-Lutz  <address@hidden>
+
+       * automake.in (append_comments): New.  Extracted from
+       read_am_file.  Match '\n' with a regexp, don't use substr (the
+       perlport man page says '\n' is not always one byte wide).
+       (read_am_file):  Use it.  Always chomp $_.
+       (file_contents_internal):  Use append_comments.
+       (macro_define): Don't treat the trailing '\n' with substr, use
+       a regexp or chomp.
+

Index: automake.in
===================================================================
RCS file: /home/adl/CVSROOT/automake-20011127-2014/automake.in,v
retrieving revision 1.1
diff -u -r1.1 automake.in
--- automake.in 27 Nov 2001 19:14:52 -0000 1.1
+++ automake.in 27 Nov 2001 19:58:34 -0000
@@ -5738,11 +5738,10 @@
   # Differentiate the first assignment (including with `+=').
   if ($type eq '+' && defined $var_value{$var}{$cond})
     {
-      if (substr ($var_value{$var}{$cond}, -1) eq "\n")
+      if ($var_value{$var}{$cond} =~ /\n$/o)
        {
          # Insert a backslash before a trailing newline.
-         $var_value{$var}{$cond} =
-           substr ($var_value{$var}{$cond}, 0, -1) . "\\\n";
+         $var_value{$var}{$cond} = chomp ($var_value{$var}{$cond}) . "\\\n";
        }
       elsif ($var_value{$var}{$cond})
        {
@@ -6649,6 +6648,19 @@
 
 ################################################################
 
+# &append_comments ($VARIABLE, $SPACING, $COMMENT)
+# ------------------------------------------------
+# Apped $COMMENT to the other comments for $VARIABLE, using
+# $SPACING as separator.
+sub append_comments ($$$)
+{
+    my ($var, $spacing, $comment) = @_;
+    $var_comment{$var} .= $spacing
+       if (!defined $var_comment{$var} || $var_comment{$var} !~ /\n$/o);
+    $var_comment{$var} .= $comment;
+}
+
+
 # &read_am_file ($AMFILE)
 # -----------------------
 # Read Makefile.am and set up %contents.  Simultaneously copy lines
@@ -6713,8 +6725,9 @@
     {
         my $here = "$amfile:$.";
 
-       $_ .= "\n"
-           unless substr ($_, -1, 1) eq "\n";
+       # Make sure the line is \n-terminated.
+       chomp;
+       $_ .= "\n";
 
        # Don't look at MAINTAINER_MODE_TRUE here.  That shouldn't be
        # used by users.  @MAINT@ is an anachronism now.
@@ -6757,10 +6770,7 @@
 
              if (!/\\$/)
                {
-                 $var_comment{$last_var_name} .= "$spacing"
-                   if (!defined $var_comment{$last_var_name}
-                       || substr ($var_comment{$last_var_name}, -1) ne "\n");
-                 $var_comment{$last_var_name} .= "$comment";
+                 append_comments $last_var_name, $spacing, $comment;
                  $comment = $spacing = '';
                  macro_define ($last_var_name, 0,
                                $last_var_type, $cond,
@@ -6817,10 +6827,7 @@
                # group all comments for a given variable, no matter
                # where defined.
                # Accumulating variables must not be output.
-               $var_comment{$last_var_name} .= "$spacing"
-                 if (!defined $var_comment{$last_var_name}
-                     || substr ($var_comment{$last_var_name}, -1) ne "\n");
-               $var_comment{$last_var_name} .= "$comment";
+               append_comments $last_var_name, $spacing, $comment;
                $comment = $spacing = '';
 
                macro_define ($last_var_name, 0,
@@ -7212,10 +7219,7 @@
              if /\\$/;
 
            # Accumulating variables must not be output.
-           $var_comment{$var} .= "$spacing"
-             if (!defined $var_comment{$var}
-                 || substr ($var_comment{$var}, -1) ne "\n");
-           $var_comment{$var} .= "$comment";
+           append_comments $var, $spacing, $comment;
            macro_define ($var, $is_am, $type, $cond, $val, $file)
              if $cond ne 'FALSE';
            push (@var_list, $var);

-- 
Alexandre Duret-Lutz



reply via email to

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