]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Use functions for maintainability.
authorBruno Haible <bruno@clisp.org>
Wed, 1 May 2002 00:42:04 +0000 (00:42 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:07:56 +0000 (12:07 +0200)
misc/ChangeLog
misc/gettextize.in

index 9d26b18b03aaebf5969bf10f4c4de879cb61e1fb..a3a074369bf0385b2833c2c1fa4efafc2be0cdaa 100644 (file)
@@ -1,5 +1,8 @@
 2002-04-28  Bruno Haible  <bruno@clisp.org>
 
+       * gettextize.in: Use functions for maintainability.
+       Remove undocumented option --run.
+
        * gettextize.in: Use 'echo' instead of '$echo'.
 
 2002-04-29  Karl Eichwalder  <ke@suse.de>
index 15c97c31242a060dcb29602de00ee84aea13382a..3f1369d7cf36d4dff3074c2c63be3b5c9d34d7e0 100644 (file)
 # further information how to use it consult the GNU gettext manual.
 
 progname=$0
-force=0
-intldir=
-configstatus=0
-origdir=`pwd`
-usage="\
+package=@PACKAGE@
+version=@VERSION@
+
+# func_usage
+# outputs to stdout the --help usage message.
+func_usage ()
+{
+  echo "\
 Usage: gettextize [OPTION]... [package-dir]
       --help           print this help and exit
       --version        print version information and exit
@@ -35,123 +38,293 @@ Usage: gettextize [OPTION]... [package-dir]
       --intl           install libintl in a subdirectory
       --no-changelog   don't update or create ChangeLog files
 Report bugs to <bug-gnu-gettext@gnu.org>."
-package=@PACKAGE@
-version=@VERSION@
-try_ln_s=:
-do_changelog=:
-
-while test $# -gt 0; do
-  case "$1" in
-    -c | --copy | --cop | --co | --c )
-      shift
-      try_ln_s=false ;;
-    -f | --force | --forc | --for | --fo | --f )
-      shift
-      force=1 ;;
-    -r | --run | --ru | --r )
-      shift
-      configstatus=1 ;;
-    --help | --hel | --he | --h )
-      echo "$usage"; exit 0 ;;
-    --intl | --int | --in | --i )
-      shift
-      intldir=yes ;;
-    --no-changelog | --no-changelo | --no-changel | --no-change | --no-chang | --no-chan | --no-cha | --no-ch | --no-c )
-      shift
-      do_changelog=false ;;
-    --version | --versio | --versi | --vers | --ver | --ve | --v )
-      echo "$progname (GNU $package) $version"
-      echo "Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
+}
+
+# func_version
+# outputs to stdout the --version message.
+func_version ()
+{
+  echo "$progname (GNU $package) $version"
+  echo "Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-      echo "Written by" "Ulrich Drepper"
-      exit 0 ;;
-    -- )       # Stop option prcessing
-      shift; break ;;
-    -* )
-      echo "gettextize: unknown option $1"
-      echo "Try \`gettextize --help' for more information."; exit 1 ;;
-    * )
-      break ;;
-  esac
-done
+  echo "Written by" "Ulrich Drepper"
+}
 
-if test $# -gt 1; then
-  echo "$usage"
+# func_fatal_error message
+# outputs to stderr a fatal error message, and terminates the program.
+func_fatal_error ()
+{
+  echo "gettextize: *** $1" 1>&2
+  echo "gettextize: *** Stop." 1>&2
   exit 1
-fi
+}
 
-# Fill in the command line options value.
-if test $# -eq 1; then
-  srcdir=$1
-  if cd $srcdir; then
-    srcdir=`pwd`
-  else
-    echo "gettextize: *** Cannot change directory to '$srcdir'."
-    echo "gettextize: *** Stop."
+# Command-line option processing.
+# Removes the OPTIONS from the arguments. Sets the variables:
+# - force           1 if --force was given, 0 otherwise
+# - intldir         yes if --intl was given, empty otherwise
+# - try_ln_s        false if --copy was given, : otherwise
+# - do_changelog    false if --no-changelog was given, : otherwise
+{
+  force=0
+  intldir=
+  try_ln_s=:
+  do_changelog=:
+
+  while test $# -gt 0; do
+    case "$1" in
+      -c | --copy | --cop | --co | --c )
+        shift
+        try_ln_s=false ;;
+      -f | --force | --forc | --for | --fo | --f )
+        shift
+        force=1 ;;
+      --help | --hel | --he | --h )
+        func_usage; exit 0 ;;
+      --intl | --int | --in | --i )
+        shift
+        intldir=yes ;;
+      --no-changelog | --no-changelo | --no-changel | --no-change | --no-chang | --no-chan | --no-cha | --no-ch | --no-c )
+        shift
+        do_changelog=false ;;
+      --version | --versio | --versi | --vers | --ver | --ve | --v )
+        func_version
+        exit 0 ;;
+      -- )     # Stop option prcessing
+        shift; break ;;
+      -* )
+        echo "gettextize: unknown option $1" 1>&2
+        echo "Try 'gettextize --help' for more information." 1>&2
+        exit 1 ;;
+      * )
+        break ;;
+    esac
+  done
+}
+
+# Command-line argument processing.
+# Analyzes the remaining arguments.
+# Sets the variables
+# - origdir         to the original directory,
+# - srcdir          to the package directory, and cd-s into it.
+{
+  if test $# -gt 1; then
+    func_usage 1>&2
     exit 1
   fi
+  origdir=`pwd`
+  if test $# -eq 1; then
+    srcdir=$1
+    if cd "$srcdir"; then
+      srcdir=`pwd`
+    else
+      func_fatal_error "Cannot change directory to '$srcdir'."
+    fi
+  else
+    srcdir=$origdir
+  fi
+}
+
+# The current directory is now $srcdir.
+
+# Set variable
+# - gettext_dir     directory where the sources are stored.
+prefix="@prefix@"
+gettext_dir="@datadir@/gettext"
+
+# Check integrity of package: A configure.in/ac must be present. Sets variable
+# - configure_in    name of configure.in/ac file.
+test -f configure.in || test -f configure.ac ||
+  func_fatal_error "Missing configure.in or configure.ac, please cd to your package first."
+configure_in=NONE
+if test -f configure.in; then
+  configure_in=configure.in
 else
-  srcdir=$origdir
+  if test -f configure.ac; then
+    configure_in=configure.ac
+  fi
 fi
 
-# The current directory is now $srcdir.
+# Check whether the --force option is needed but has not been specified.
+if test $force -eq 0; then
+  if test -d intl; then
+    func_fatal_error "intl/ subdirectory exists: use option -f if you really want to delete it."
+  fi
+  if test -f po/Makefile.in.in; then
+    func_fatal_error "po/Makefile.in.in exists: use option -f if you really want to delete it."
+  fi
+  if test -f ABOUT-NLS; then
+    func_fatal_error "ABOUT-NLS exists: use option -f if you really want to delete it."
+  fi
+fi
 
-# Directory where the sources are stored.
-prefix=@prefix@
-gettext_dir=@datadir@/gettext
+# For simplicity we change to the gettext source directory.
+cd $gettext_dir ||
+  func_fatal_error "gettext source directory '${gettext_dir}' doesn't exist"
 
-modified_ChangeLog=
+# Variables which keep track what has been modified.
 added_directories=
 removed_directory=
 added_extradist=
 added_acoutput=
 removed_acoutput=" intl/intlh.inst"
+
+# Variable:
+# - please          accumulates instructions for the user.
 please=
 
-test -f configure.in || test -f configure.ac || {
-  echo "gettextize: *** Missing configure.in or configure.ac, please cd to your package first."
-  echo "gettextize: *** Stop."
-  exit 1
+# Variable:
+# - date            current date, for use in ChangeLog entries.
+date=`date +%Y-%m-%d`
+
+# func_copy from to
+# copies a file.
+# 'from' is a relative pathname, relative to the current directory.
+# 'to' is a relative pathname, relative to $srcdir.
+func_copy ()
+{
+  rm -f "$srcdir/$2"
+  echo "Copying file $2"
+  cp "$1" "$srcdir/$2"
 }
-configure_in=NONE
-if test -f configure.in; then
-  configure_in=configure.in
-else
-  if test -f configure.ac; then
-    configure_in=configure.ac
+
+# func_linkorcopy from absfrom to
+# links or copies a file.
+# 'from' is a relative pathname, relative to the current directory.
+# 'absfrom' is the corresponding absolute pathname.
+# 'to' is a relative pathname, relative to $srcdir.
+func_linkorcopy ()
+{
+  rm -f "$srcdir/$3"
+  ($try_ln_s && ln -s "$2" "$srcdir/$3" && echo "Symlinking file $3") 2>/dev/null ||
+  { echo "Copying file $3"; cp "$1" "$srcdir/$3"; }
+}
+
+# func_backup to
+# makes a backup of a file that is about to be overwritten or replaced.
+# 'to' is a relative pathname, relative to $srcdir.
+func_backup ()
+{
+  if test -f "$srcdir/$1"; then
+    rm -f "$srcdir/$1~"
+    cp -p "$srcdir/$1" "$srcdir/$1~"
   fi
-fi
+}
 
-if test -d intl && test $force -eq 0; then
-  echo "gettextize: *** intl/ subdirectory exists: use option -f if you really want to delete it."
-  echo "gettextize: *** Stop."
-  exit 1
-fi
+# func_ChangeLog_init
+# func_ChangeLog_add_entry line
+# func_ChangeLog_finish
+# manage the ChangeLog file, relative to $srcdir.
+func_ChangeLog_init ()
+{
+  modified_ChangeLog=
+}
+func_ChangeLog_add_entry ()
+{
+  if test -z "$modified_ChangeLog"; then
+    echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/ChangeLog.tmp"
+    echo >> "$srcdir/ChangeLog.tmp"
+    modified_ChangeLog=yes
+  fi
+  echo "$1" >> "$srcdir/ChangeLog.tmp"
+}
+func_ChangeLog_finish ()
+{
+  if test -n "$modified_ChangeLog"; then
+    echo >> "$srcdir/ChangeLog.tmp"
+    if test -f "$srcdir/ChangeLog"; then
+      echo "Adding an entry to ChangeLog (backup is in ChangeLog~)"
+      cat "$srcdir/ChangeLog" >> "$srcdir/ChangeLog.tmp"
+      rm -f "$srcdir/ChangeLog~"
+      cp -p "$srcdir/ChangeLog" "$srcdir/ChangeLog~"
+    else
+      echo "Creating ChangeLog"
+    fi
+    cp "$srcdir/ChangeLog.tmp" "$srcdir/ChangeLog"
+    rm -f "$srcdir/ChangeLog.tmp"
+  fi
+}
 
-if test -f po/Makefile.in.in && test $force -eq 0; then
-  echo "gettextize: *** po/Makefile.in.in exists: use option -f if you really want to delete it."
-  echo "gettextize: *** Stop."
-  exit 1
-fi
+# func_poChangeLog_init
+# func_poChangeLog_add_entry line
+# func_poChangeLog_finish
+# manage the po/ChangeLog file, relative to $srcdir.
+func_poChangeLog_init ()
+{
+  modified_poChangeLog=
+}
+func_poChangeLog_add_entry ()
+{
+  if test -z "$modified_poChangeLog"; then
+    echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/po/ChangeLog.tmp"
+    echo >> "$srcdir/po/ChangeLog.tmp"
+    modified_poChangeLog=yes
+  fi
+  echo "$1" >> "$srcdir/po/ChangeLog.tmp"
+}
+func_poChangeLog_finish ()
+{
+  if test -n "$modified_poChangeLog"; then
+    echo >> "$srcdir/po/ChangeLog.tmp"
+    if test -f "$srcdir/po/ChangeLog"; then
+      echo "Adding an entry to po/ChangeLog (backup is in po/ChangeLog~)"
+      cat "$srcdir/po/ChangeLog" >> "$srcdir/po/ChangeLog.tmp"
+      rm -f "$srcdir/po/ChangeLog~"
+      cp -p "$srcdir/po/ChangeLog" "$srcdir/po/ChangeLog~"
+    else
+      echo "Creating po/ChangeLog"
+    fi
+    cp "$srcdir/po/ChangeLog.tmp" "$srcdir/po/ChangeLog"
+    rm -f "$srcdir/po/ChangeLog.tmp"
+  fi
+}
 
-if test -f ABOUT-NLS && test $force -eq 0; then
-  echo "gettextize: *** ABOUT-NLS exists: use option -f if you really want to delete it."
-  echo "gettextize: *** Stop."
-  exit 1
-fi
+# func_m4ChangeLog_init
+# func_m4ChangeLog_add_entry line
+# func_m4ChangeLog_finish
+# manage the $m4dir/ChangeLog file, relative to $srcdir.
+func_m4ChangeLog_init ()
+{
+  modified_m4ChangeLog=
+}
+func_m4ChangeLog_add_entry ()
+{
+  if test -z "$modified_m4ChangeLog"; then
+    echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/$m4dir/ChangeLog.tmp"
+    echo >> "$srcdir/$m4dir/ChangeLog.tmp"
+    modified_m4ChangeLog=yes
+  fi
+  echo "$1" >> "$srcdir/$m4dir/ChangeLog.tmp"
+}
+func_m4ChangeLog_finish ()
+{
+  if test -n "$modified_m4ChangeLog"; then
+    echo >> "$srcdir/$m4dir/ChangeLog.tmp"
+    if test -f "$srcdir/$m4dir/ChangeLog"; then
+      echo "Adding an entry to $m4dir/ChangeLog (backup is in $m4dir/ChangeLog~)"
+      cat "$srcdir/$m4dir/ChangeLog" >> "$srcdir/$m4dir/ChangeLog.tmp"
+      rm -f "$srcdir/$m4dir/ChangeLog~"
+      cp -p "$srcdir/$m4dir/ChangeLog" "$srcdir/$m4dir/ChangeLog~"
+    else
+      echo "Creating $m4dir/ChangeLog"
+    fi
+    cp "$srcdir/$m4dir/ChangeLog.tmp" "$srcdir/$m4dir/ChangeLog"
+    rm -f "$srcdir/$m4dir/ChangeLog.tmp"
+  fi
+}
 
-if test ! -f intl/Makefile.in && test -n "$intldir"; then
+if test ! -f "$srcdir/intl/Makefile.in" && test -n "$intldir"; then
   added_acoutput="$added_acoutput intl/Makefile"
 fi
-if test -f intl/Makefile.in && test -z "$intldir"; then
+if test -f "$srcdir/intl/Makefile.in" && test -z "$intldir"; then
   removed_acoutput="$removed_acoutput intl/Makefile"
 fi
-if test -d intl; then
+if test -d "$srcdir/intl"; then
   # Remove everything inside intl except for RCS and CVS subdirs and invisible
   # files.
   echo "Wiping out intl/ subdirectory"
-  (cd intl &&
+  (cd "$srcdir/intl" &&
    for f in *; do
      if test CVS != "$f" && test RCS != "$f"; then
        rm -rf "$f"
@@ -163,54 +336,35 @@ if test -d intl; then
 else
   if test -n "$intldir"; then
     echo "Creating intl/ subdirectory"
-    mkdir intl || {
-      echo "gettextize: *** failed to create intl/ subdirectory"
-      echo "gettextize: *** Stop."
-      exit 1;
-    }
+    mkdir "$srcdir/intl" || func_fatal_error "failed to create intl/ subdirectory"
     added_directories="$added_directories intl"
   fi
 fi
 
-test -d po || {
-  echo "Creating po/ subdirectory"
-  mkdir po || {
-    echo "gettextize: *** failed to create po/ subdirectory"
-    echo "gettextize: *** Stop."
-    exit 1
-  }
-}
+$do_changelog && func_ChangeLog_init
 
-# For simplicity we changed to the gettext source directory.
-cd $gettext_dir || {
-  echo "gettextize: *** gettext source directory '${gettext_dir}' doesn't exist"
-  echo "gettextize: *** Stop."
-  exit 1
+test -d "$srcdir/po" || {
+  echo "Creating po/ subdirectory"
+  mkdir "$srcdir/po" || func_fatal_error "failed to create po/ subdirectory"
 }
 
-DATE=`date +%Y-%m-%d`
-
 # Now copy all files.  Take care for the destination directories.
 for file in *; do
   case $file in
     ABOUT-NLS)
-      rm -f $srcdir/$file
-      ($try_ln_s && ln -s $gettext_dir/$file $srcdir/$file && echo "Symlinking file $file") 2>/dev/null ||
-      { echo "Copying file $file"; cp $file $srcdir/$file; }
+      func_linkorcopy $file "$gettext_dir/$file" $file
       ;;
     config.rpath | mkinstalldirs)
-      auxdir=`cat $srcdir/$configure_in | grep '^AC_CONFIG_AUX_DIR' | sed -n -e 's/AC_CONFIG_AUX_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
+      auxdir=`cat "$srcdir/$configure_in" | grep '^AC_CONFIG_AUX_DIR' | sed -n -e 's/AC_CONFIG_AUX_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
       if test -n "$auxdir"; then
         auxdir="$auxdir/"
       fi
-      if test -f $srcdir/$auxdir$file; then
+      if test -f "$srcdir/$auxdir$file"; then
         :
       else
         added_extradist="$added_extradist $auxdir$file"
       fi
-      rm -f $srcdir/$auxdir$file
-      ($try_ln_s && ln -s $gettext_dir/$file $srcdir/$auxdir$file && echo "Symlinking file $auxdir$file") 2>/dev/null ||
-      { echo "Copying file $auxdir$file"; cp $file $srcdir/$auxdir$file; }
+      func_linkorcopy $file "$gettext_dir/$file" "$auxdir$file"
       ;;
   esac
 done
@@ -220,14 +374,12 @@ if test -n "$intldir"; then
   cd intl
   for file in *; do
     if test $file != COPYING.LIB-2.0 && test $file != COPYING.LIB-2.1; then
-      rm -f $srcdir/intl/$file
       if test $file != plural.c; then
-        ($try_ln_s && ln -s $gettext_dir/intl/$file $srcdir/intl/$file && echo "Symlinking file intl/$file") 2>/dev/null ||
-        { echo "Copying file intl/$file"; cp $file $srcdir/intl/$file; }
+        func_linkorcopy $file "$gettext_dir/intl/$file" intl/$file
       else
         # plural.c is a generated file; it must be copied and touched.
-        echo "Copying file intl/$file"; cp $file $srcdir/intl/$file
-        (sleep 2; touch $srcdir/intl/$file) &
+        func_copy $file intl/$file
+        (sleep 2; touch "$srcdir/intl/$file") &
        fi
     fi
   done
@@ -241,36 +393,26 @@ to look for an external libintl.
 fi
 
 # Copy files to po/ subdirectory.
+$do_changelog && func_poChangeLog_init
 cd po
-modified_poChangeLog=
 for file in Makefile.in.in; do
   same=no
-  if test -f $srcdir/po/$file; then
-    if cmp -s $file $srcdir/po/$file; then
+  if test -f "$srcdir/po/$file"; then
+    if cmp -s $file "$srcdir/po/$file"; then
       same=yes
     fi
   else
     added_acoutput="$added_acoutput po/Makefile.in"
   fi
   if $do_changelog && test $same = no; then
-    if test -z "$modified_poChangeLog"; then
-      echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/po/ChangeLog.tmp
-      echo >> $srcdir/po/ChangeLog.tmp
-      modified_poChangeLog=yes
-    fi
-    if test -f $srcdir/po/$file; then
-      echo "   * $file: Upgrade to gettext-${version}." >> $srcdir/po/ChangeLog.tmp
+    if test -f "$srcdir/po/$file"; then
+      func_poChangeLog_add_entry "     * $file: Upgrade to gettext-${version}."
     else
-      echo "   * $file: New file, from gettext-${version}." >> $srcdir/po/ChangeLog.tmp
+      func_poChangeLog_add_entry "     * $file: New file, from gettext-${version}."
     fi
   fi
-  if test -f $srcdir/po/$file; then
-    rm -f $srcdir/po/$file~
-    cp -p $srcdir/po/$file $srcdir/po/$file~
-  fi
-  rm -f $srcdir/po/$file
-  ($try_ln_s && ln -s $gettext_dir/po/$file $srcdir/po/$file && echo "Symlinking file po/$file") 2>/dev/null ||
-  { echo "Copying file po/$file"; cp $file $srcdir/po/$file; }
+  func_backup po/$file
+  func_linkorcopy $file "$gettext_dir/po/$file" po/$file
 done
 for file in *; do
   case $file in
@@ -278,10 +420,8 @@ for file in *; do
       # Already handled above.
       ;;
     Makevars)
-      rm -f $srcdir/po/$file.template
-      ($try_ln_s && ln -s $gettext_dir/po/$file $srcdir/po/$file.template && echo "Symlinking file po/$file.template") 2>/dev/null ||
-      { echo "Copying file po/$file.template"; cp $file $srcdir/po/$file.template; }
-      if test -f $srcdir/po/$file; then
+      func_linkorcopy $file "$gettext_dir/po/$file" po/$file.template
+      if test -f "$srcdir/po/$file"; then
         please="$please
 Please update po/$file so that it defines all the variables mentioned
 in po/$file.template.
@@ -296,69 +436,34 @@ You can then remove po/$file.template.
       ;;
     *)
       same=no
-      if test -f $srcdir/po/$file; then
-        if cmp -s $file $srcdir/po/$file; then
+      if test -f "$srcdir/po/$file"; then
+        if cmp -s $file "$srcdir/po/$file"; then
           same=yes
         fi
       fi
       if $do_changelog && test $same = no; then
-        if test -z "$modified_poChangeLog"; then
-          echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/po/ChangeLog.tmp
-          echo >> $srcdir/po/ChangeLog.tmp
-          modified_poChangeLog=yes
-        fi
-        if test -f $srcdir/po/$file; then
-          echo "       * $file: Upgrade to gettext-${version}." >> $srcdir/po/ChangeLog.tmp
+        if test -f "$srcdir/po/$file"; then
+          func_poChangeLog_add_entry " * $file: Upgrade to gettext-${version}."
         else
-          echo "       * $file: New file, from gettext-${version}." >> $srcdir/po/ChangeLog.tmp
+          func_poChangeLog_add_entry " * $file: New file, from gettext-${version}."
         fi
       fi
-      if test -f $srcdir/po/$file; then
-        rm -f $srcdir/po/$file~
-        cp -p $srcdir/po/$file $srcdir/po/$file~
-      fi
-      rm -f $srcdir/po/$file
-      ($try_ln_s && ln -s $gettext_dir/po/$file $srcdir/po/$file && echo "Symlinking file po/$file") 2>/dev/null ||
-      { echo "Copying file po/$file"; cp $file $srcdir/po/$file; }
+      func_backup po/$file
+      func_linkorcopy $file $gettext_dir/po/$file po/$file
       ;;
   esac
 done
-if test -f $srcdir/po/cat-id-tbl.c; then
+if test -f "$srcdir/po/cat-id-tbl.c"; then
   echo "Removing po/cat-id-tbl.c"
-  rm -f $srcdir/po/cat-id-tbl.c
-  if $do_changelog; then
-    if test -z "$modified_poChangeLog"; then
-      echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/po/ChangeLog.tmp
-      echo >> $srcdir/po/ChangeLog.tmp
-      modified_poChangeLog=yes
-    fi
-    echo "     * cat-id-tbl.c: Remove file." >> $srcdir/po/ChangeLog.tmp
-  fi
+  rm -f "$srcdir/po/cat-id-tbl.c"
+  $do_changelog && func_poChangeLog_add_entry "        * cat-id-tbl.c: Remove file."
 fi
-if test -f $srcdir/po/stamp-cat-id; then
+if test -f "$srcdir/po/stamp-cat-id"; then
   echo "Removing po/stamp-cat-id"
-  rm -f $srcdir/po/stamp-cat-id
-  if $do_changelog; then
-    if test -z "$modified_poChangeLog"; then
-      echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/po/ChangeLog.tmp
-      echo >> $srcdir/po/ChangeLog.tmp
-      modified_poChangeLog=yes
-    fi
-    echo "     * stamp-cat-id: Remove file." >> $srcdir/po/ChangeLog.tmp
-  fi
-fi
-if $do_changelog && test -n "$modified_poChangeLog"; then
-  echo >> $srcdir/po/ChangeLog.tmp
-  if test -f $srcdir/po/ChangeLog; then
-    echo "Adding an entry to po/ChangeLog (backup is in po/ChangeLog~)"
-    cat $srcdir/po/ChangeLog >> $srcdir/po/ChangeLog.tmp
-    cp -p $srcdir/po/ChangeLog $srcdir/po/ChangeLog~
-  else
-    echo "Creating po/ChangeLog"
-  fi
-  cp $srcdir/po/ChangeLog.tmp $srcdir/po/ChangeLog
-  rm -f $srcdir/po/ChangeLog.tmp
+  rm -f "$srcdir/po/stamp-cat-id"
+  $do_changelog && func_poChangeLog_add_entry "        * stamp-cat-id: Remove file."
 fi
+$do_changelog && func_poChangeLog_finish
 
 m4filelist='  codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 lcmessage.m4
   lib-ld.m4 lib-link.m4 lib-prefix.m4 progtest.m4'
@@ -371,10 +476,11 @@ m4filelist='  codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 lcmessage.m
 # version of gettext.m4 et al. (because then the configure and the po/Makefile.in.in
 # don't fit together). It is therefore important that the package carries the
 # right versions of gettext.m4 et al. with it.
-if test -f $srcdir/Makefile.am; then
+if test -f "$srcdir/Makefile.am"; then
   # A package using automake.
+
   # Extract the macro directory name from Makefile.am.
-  aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[     ]*=' $srcdir/Makefile.am | sed -e 's/^ACLOCAL_AMFLAGS[  ]*=\(.*\)$/\1/'`
+  aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[     ]*=' "$srcdir/Makefile.am" | sed -e 's/^ACLOCAL_AMFLAGS[        ]*=\(.*\)$/\1/'`
   m4dir=m4
   m4dir_is_next=
   for arg in $aclocal_amflags; do
@@ -389,8 +495,9 @@ if test -f $srcdir/Makefile.am; then
       fi
     fi
   done
+
   # Update the *.m4 files and the corresponding Makefile.am.
-  modified_m4ChangeLog=
+  $do_changelog && func_m4ChangeLog_init
   added_m4files=
   if test -d "$srcdir/$m4dir"; then
     :
@@ -402,158 +509,135 @@ if test -f $srcdir/Makefile.am; then
   for file in $m4filelist; do
     same=no
     if test -f "$srcdir/$m4dir/$file"; then
-      if cmp -s @datadir@/aclocal/$file $srcdir/$m4dir/$file; then
+      if cmp -s "@datadir@/aclocal/$file" "$srcdir/$m4dir/$file"; then
         same=yes
       fi
     else
       added_m4files="$added_m4files $file"
     fi
     if $do_changelog && test $same = no; then
-      if test -z "$modified_m4ChangeLog"; then
-        echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/$m4dir/ChangeLog.tmp
-        echo >> $srcdir/$m4dir/ChangeLog.tmp
-        modified_m4ChangeLog=yes
-      fi
       if test -f "$srcdir/$m4dir/$file"; then
-        echo " * $file: Upgrade to gettext-${version}." >> $srcdir/$m4dir/ChangeLog.tmp
+        func_m4ChangeLog_add_entry "   * $file: Upgrade to gettext-${version}."
       else
-        echo " * $file: New file, from gettext-${version}." >> $srcdir/$m4dir/ChangeLog.tmp
+        func_m4ChangeLog_add_entry "   * $file: New file, from gettext-${version}."
       fi
     fi
-    if test -f "$srcdir/$m4dir/$file"; then
-      rm -f $srcdir/$m4dir/$file~
-      cp -p $srcdir/$m4dir/$file $srcdir/$m4dir/$file~
-    fi
-    rm -f $srcdir/$m4dir/$file
-    ($try_ln_s && ln -s @datadir@/aclocal/$file $srcdir/$m4dir/$file && echo "Symlinking file $m4dir/$file") 2>/dev/null ||
-    { echo "Copying file $m4dir/$file"; cp @datadir@/aclocal/$file $srcdir/$m4dir/$file; }
+    func_backup "$m4dir/$file"
+    func_linkorcopy "@datadir@/aclocal/$file" "@datadir@/aclocal/$file" "$m4dir/$file"
   done
   if test -n "$added_m4files"; then
-    if test -f $srcdir/$m4dir/Makefile.am; then
+    if test -f "$srcdir/$m4dir/Makefile.am"; then
       echo "Updating EXTRA_DIST in $m4dir/Makefile.am (backup is in $m4dir/Makefile.am~)"
-      rm -f $srcdir/$m4dir/Makefile.am~
-      cp -p $srcdir/$m4dir/Makefile.am $srcdir/$m4dir/Makefile.am~
-      rm -f $srcdir/$m4dir/Makefile.am
-      if grep '^EXTRA_DIST[    ]*=' $srcdir/$m4dir/Makefile.am~ > /dev/null; then
-        sed -e "s%^\(EXTRA_DIST[       ]*=\)%\\1$added_m4files %" < $srcdir/$m4dir/Makefile.am~ > $srcdir/$m4dir/Makefile.am
-        $do_changelog && echo "        * Makefile.am (EXTRA_DIST): Add the new files." >> $srcdir/$m4dir/ChangeLog.tmp
+      func_backup "$m4dir/Makefile.am"
+      rm -f "$srcdir/$m4dir/Makefile.am"
+      if grep '^EXTRA_DIST[    ]*=' "$srcdir/$m4dir/Makefile.am~" > /dev/null; then
+        sed -e "s%^\(EXTRA_DIST[       ]*=\)%\\1$added_m4files %" < "$srcdir/$m4dir/Makefile.am~" > "$srcdir/$m4dir/Makefile.am"
+        $do_changelog && func_m4ChangeLog_add_entry "  * Makefile.am (EXTRA_DIST): Add the new files."
       else
-        (cat $srcdir/$m4dir/Makefile.am~; echo; echo "EXTRA_DIST =$added_m4files") > $srcdir/$m4dir/Makefile.am
-        $do_changelog && echo "        * Makefile.am (EXTRA_DIST): New variable." >> $srcdir/$m4dir/ChangeLog.tmp
+        (cat "$srcdir/$m4dir/Makefile.am~"; echo; echo "EXTRA_DIST =$added_m4files") > "$srcdir/$m4dir/Makefile.am"
+        $do_changelog && func_m4ChangeLog_add_entry "  * Makefile.am (EXTRA_DIST): New variable."
       fi
     else
       echo "Creating $m4dir/Makefile.am"
-      echo "EXTRA_DIST =$added_m4files" > $srcdir/$m4dir/Makefile.am
-      $do_changelog && echo "  * Makefile.am: New file." >> $srcdir/$m4dir/ChangeLog.tmp
+      echo "EXTRA_DIST =$added_m4files" > "$srcdir/$m4dir/Makefile.am"
+      $do_changelog && func_m4ChangeLog_add_entry "    * Makefile.am: New file."
       added_acoutput="$added_acoutput $m4dir/Makefile"
     fi
   fi
-  if $do_changelog && test -n "$modified_m4ChangeLog"; then
-    echo >> $srcdir/$m4dir/ChangeLog.tmp
-    if test -f $srcdir/$m4dir/ChangeLog; then
-      echo "Adding an entry to $m4dir/ChangeLog (backup is in $m4dir/ChangeLog~)"
-      cat $srcdir/$m4dir/ChangeLog >> $srcdir/$m4dir/ChangeLog.tmp
-      cp -p $srcdir/$m4dir/ChangeLog $srcdir/$m4dir/ChangeLog~
-    else
-      echo "Creating $m4dir/ChangeLog"
-    fi
-    cp $srcdir/$m4dir/ChangeLog.tmp $srcdir/$m4dir/ChangeLog
-    rm -f $srcdir/$m4dir/ChangeLog.tmp
-  fi
+  $do_changelog && func_m4ChangeLog_finish
   # Also create $m4dir/Makefile.in from $m4dir/Makefile.am, because automake
   # doesn't do it by itself.
   case "$added_acoutput" in
     *" $m4dir/Makefile")
-      (cd $srcdir && automake $m4dir/Makefile) 2>/dev/null ||
+      (cd "$srcdir" && automake "$m4dir/Makefile") 2>/dev/null ||
       please="$please
 Please run 'automake $m4dir/Makefile' to create $m4dir/Makefile.in
 "
       ;;
   esac
+
   # Update the top-level Makefile.am.
-  if test -n "$added_directories" || test -n "$removed_directory" || test -z "$m4dir_is_next" || test -n "$added_extradist"; then
-    if $do_changelog; then
-      echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/ChangeLog.tmp
-      echo >> $srcdir/ChangeLog.tmp
-      modified_ChangeLog=yes
-    fi
-    echo "Updating Makefile.am (backup is in Makefile.am~)"
-    rm -f $srcdir/Makefile.am~
-    cp -p $srcdir/Makefile.am $srcdir/Makefile.am~
-    rm -f $srcdir/Makefile.am
-    first="* Makefile.am "
-    if test -n "$added_directories"; then
-      if grep '^SUBDIRS[       ]*=' $srcdir/Makefile.am~ > /dev/null; then
-        sed -e "s%^\(SUBDIRS[  ]*=\)%\\1$added_directories %" < $srcdir/Makefile.am~ > $srcdir/Makefile.am~1
-        $do_changelog && echo "        $first(SUBDIRS): Add "`echo $added_directories | sed -e 's/ /, /g'`'.' >> $srcdir/ChangeLog.tmp
-      else
-        (cat $srcdir/Makefile.am~; echo; echo "SUBDIRS =$added_directories") > $srcdir/Makefile.am~1
-        $do_changelog && echo "        $first(SUBDIRS): New variable." >> $srcdir/ChangeLog.tmp
-      fi
-      first=
+  modified_Makefile_am=
+  # func_modify_Makefile_am changelog_comment
+  # assumes a modified copy of $srcdir/Makefile.am in $srcdir/Makefile.am.tmp
+  # and replaces the original Makefile.am file with the modified one if
+  # the two files differ. Then it removes the modified copy.
+  func_modify_Makefile_am ()
+  {
+    if cmp -s "$srcdir/Makefile.am" "$srcdir/Makefile.am.tmp"; then
+      :
     else
-      cp $srcdir/Makefile.am~ $srcdir/Makefile.am~1
-    fi
-    if test -n "$removed_directory"; then
-      sed -e '/^SUBDIRS[       ]*=/ {
-          :a
-          s%\([        ]\)'"$removed_directory"'[      ]%\1%
-          s%[  ]'"$removed_directory"'$%%
-          tb
-          :b
-          s%\\$%\\%
-          tc
-          bd
-          :c
-          n
-          ba
-        :d
-      }' < $srcdir/Makefile.am~1 > $srcdir/Makefile.am~2
-      if cmp -s $srcdir/Makefile.am~1 $srcdir/Makefile.am~2; then
-        :
-      else
-        $do_changelog && echo "        $first(SUBDIRS): Remove $removed_directory." >> $srcdir/ChangeLog.tmp
+      if test -z "$modified_Makefile_am"; then
+        echo "Updating Makefile.am (backup is in Makefile.am~)"
+        func_backup Makefile.am
+      fi
+      rm -f "$srcdir/Makefile.am"
+      cp "$srcdir/Makefile.am.tmp" "$srcdir/Makefile.am"
+      if $do_changelog; then
+        if test -z "$modified_Makefile_am"; then
+          func_ChangeLog_add_entry "   * Makefile.am $1"
+        else
+          func_ChangeLog_add_entry "   $1"
+        fi
       fi
-      first=
+      modified_Makefile_am=yes
+    fi
+    rm -f "$srcdir/Makefile.am.tmp"
+  }
+
+  if test -n "$added_directories"; then
+    if grep '^SUBDIRS[         ]*=' "$srcdir/Makefile.am" > /dev/null; then
+      sed -e "s%^\(SUBDIRS[    ]*=\)%\\1$added_directories %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
+      func_modify_Makefile_am "(SUBDIRS): Add "`echo $added_directories | sed -e 's/ /, /g'`'.'
     else
-      cp $srcdir/Makefile.am~1 $srcdir/Makefile.am~2
+      (cat "$srcdir/Makefile.am"; echo; echo "SUBDIRS =$added_directories") > "$srcdir/Makefile.am.tmp"
+      func_modify_Makefile_am "(SUBDIRS): New variable."
     fi
-    if test -z "$m4dir_is_next"; then
-      if grep '^ACLOCAL_AMFLAGS[       ]*=' $srcdir/Makefile.am~ > /dev/null; then
-        sed -e "s%^\(ACLOCAL_AMFLAGS[  ]*=\)%\\1 -I $m4dir %" < $srcdir/Makefile.am~2 > $srcdir/Makefile.am~3
-        $do_changelog && echo "        $first(ACLOCAL_AMFLAGS): Add -I $m4dir." >> $srcdir/ChangeLog.tmp
-      else
-        (cat $srcdir/Makefile.am~2; echo; echo "ACLOCAL_AMFLAGS = -I $m4dir") > $srcdir/Makefile.am~3
-        $do_changelog && echo "        $first(ACLOCAL_AMFLAGS): New variable." >> $srcdir/ChangeLog.tmp
-      fi
-      # Also update Makefile.in and, if existent, Makefile. Otherwise they
-      # would take into account the new flags only after a few rounds of
-      # "./configure", "make", "touch configure.in", "make distclean".
-      for file in $srcdir/Makefile.in $srcdir/Makefile; do
-        if test -f $file; then
-          rm -f $file~
-          cp -p $file $file~
-          rm -f $file
-          sed -e "s%(ACLOCAL)%(ACLOCAL) -I $m4dir%" < $file~ > $file
-        fi
-      done
-      first=
+  fi
+  if test -n "$removed_directory"; then
+    sed -e '/^SUBDIRS[         ]*=/ {
+        :a
+        s%\([  ]\)'"$removed_directory"'[      ]%\1%
+        s%[    ]'"$removed_directory"'$%%
+        tb
+        :b
+        s%\\$%\\%
+        tc
+        bd
+        :c
+        n
+        ba
+      :d
+    }' < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
+    func_modify_Makefile_am "(SUBDIRS): Remove $removed_directory."
+  fi
+  if test -z "$m4dir_is_next"; then
+    if grep '^ACLOCAL_AMFLAGS[         ]*=' "$srcdir/Makefile.am" > /dev/null; then
+      sed -e "s%^\(ACLOCAL_AMFLAGS[    ]*=\)%\\1 -I $m4dir %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
+      func_modify_Makefile_am "(ACLOCAL_AMFLAGS): Add -I $m4dir."
     else
-      cp $srcdir/Makefile.am~2 $srcdir/Makefile.am~3
+      (cat "$srcdir/Makefile.am"; echo; echo "ACLOCAL_AMFLAGS = -I $m4dir") > "$srcdir/Makefile.am.tmp"
+      func_modify_Makefile_am "(ACLOCAL_AMFLAGS): New variable."
     fi
-    if test -n "$added_extradist"; then
-      if grep '^EXTRA_DIST[    ]*=' $srcdir/Makefile.am~ > /dev/null; then
-        sed -e "s%^\(EXTRA_DIST[       ]*=\)%\\1$added_extradist %" < $srcdir/Makefile.am~3 > $srcdir/Makefile.am
-        $do_changelog && echo "        $first(EXTRA_DIST): Add$added_extradist." >> $srcdir/ChangeLog.tmp
-      else
-        (cat $srcdir/Makefile.am~3; echo; echo "EXTRA_DIST =$added_extradist") > $srcdir/Makefile.am
-        $do_changelog && echo "        $first(EXTRA_DIST): New variable." >> $srcdir/ChangeLog.tmp
+    # Also update Makefile.in and, if existent, Makefile. Otherwise they
+    # would take into account the new flags only after a few rounds of
+    # "./configure", "make", "touch configure.in", "make distclean".
+    for file in Makefile.in Makefile; do
+      if test -f "$srcdir/$file"; then
+        func_backup $file
+        rm -f "$srcdir/$file"
+        sed -e "s%(ACLOCAL)%(ACLOCAL) -I $m4dir%" < "$srcdir/$file~" > "$srcdir/$file"
       fi
-      first=
+    done
+  fi
+  if test -n "$added_extradist"; then
+    if grep '^EXTRA_DIST[      ]*=' "$srcdir/Makefile.am" > /dev/null; then
+      sed -e "s%^\(EXTRA_DIST[         ]*=\)%\\1$added_extradist %" < "$srcdir/Makefile.am" > "$srcdir/Makefile.am.tmp"
+      func_modify_Makefile_am "(EXTRA_DIST): Add$added_extradist."
     else
-      cp $srcdir/Makefile.am~3 $srcdir/Makefile.am
+      (cat "$srcdir/Makefile.am"; echo; echo "EXTRA_DIST =$added_extradist") > "$srcdir/Makefile.am.tmp"
+      func_modify_Makefile_am "(EXTRA_DIST): New variable."
     fi
-    rm -f $srcdir/Makefile.am~1 $srcdir/Makefile.am~2 $srcdir/Makefile.am~3
   fi
   please="$please
 Please run 'aclocal -I $m4dir' to regenerate the aclocal.m4 file.
@@ -567,39 +651,43 @@ $m4filelist
 from the @datadir@/aclocal directory to your aclocal.m4 file.
 "
 fi
+
 modified_configure_in=
-if test -n "$added_acoutput"; then
-  if grep '^AC_CONFIG_FILES(' $srcdir/$configure_in > /dev/null; then
-    echo "Updating $configure_in (backup is in $configure_in~)"
-    rm -f $srcdir/$configure_in~
-    cp -p $srcdir/$configure_in $srcdir/$configure_in~
-    rm -f $srcdir/$configure_in
-    sed -e "s%^\\(AC_CONFIG_FILES([^])\\,]*\\)%\\1$added_acoutput %" < $srcdir/$configure_in~ > $srcdir/$configure_in
+# func_modify_configure_in changelog_comment
+# assumes a modified copy of $srcdir/$configure_in in $srcdir/$configure_in.tmp
+# and replaces the original configure.in/ac file with the modified one if
+# the two files differ. Then it removes the modified copy.
+func_modify_configure_in ()
+{
+  if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
+    :
+  else
+    if test -z "$modified_configure_in"; then
+      echo "Updating $configure_in (backup is in $configure_in~)"
+      func_backup $configure_in
+    fi
+    rm -f "$srcdir/$configure_in"
+    cp "$srcdir/$configure_in.tmp" "$srcdir/$configure_in"
     if $do_changelog; then
-      if test -z "$modified_ChangeLog"; then
-        echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/ChangeLog.tmp
-        echo >> $srcdir/ChangeLog.tmp
-        modified_ChangeLog=yes
+      if test -z "$modified_configure_in"; then
+        func_ChangeLog_add_entry "     * $configure_in $1"
+      else
+        func_ChangeLog_add_entry "     $1"
       fi
-      echo "   * $configure_in (AC_CONFIG_FILES): Add "`echo $added_acoutput | sed -e 's/ /, /g'`'.' >> $srcdir/ChangeLog.tmp
     fi
     modified_configure_in=yes
+  fi
+  rm -f "$srcdir/$configure_in.tmp"
+}
+
+if test -n "$added_acoutput"; then
+  if grep '^AC_CONFIG_FILES(' "$srcdir/$configure_in" > /dev/null; then
+    sed -e "s%^\\(AC_CONFIG_FILES([^])\\,]*\\)%\\1$added_acoutput %" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+    func_modify_configure_in "(AC_CONFIG_FILES): Add "`echo $added_acoutput | sed -e 's/ /, /g'`'.'
   else
-    if grep '^AC_OUTPUT(' $srcdir/$configure_in > /dev/null; then
-      echo "Updating $configure_in (backup is in $configure_in~)"
-      rm -f $srcdir/$configure_in~
-      cp -p $srcdir/$configure_in $srcdir/$configure_in~
-      rm -f $srcdir/$configure_in
-      sed -e "s%^\\(AC_OUTPUT([^])\\,]*\\)%\\1$added_acoutput %" < $srcdir/$configure_in~ > $srcdir/$configure_in
-      if $do_changelog; then
-        if test -z "$modified_ChangeLog"; then
-          echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/ChangeLog.tmp
-          echo >> $srcdir/ChangeLog.tmp
-          modified_ChangeLog=yes
-        fi
-        echo " * $configure_in (AC_OUTPUT): Add "`echo $added_acoutput | sed -e 's/ /, /g'`'.' >> $srcdir/ChangeLog.tmp
-      fi
-      modified_configure_in=yes
+    if grep '^AC_OUTPUT(' "$srcdir/$configure_in" > /dev/null; then
+      sed -e "s%^\\(AC_OUTPUT([^])\\,]*\\)%\\1$added_acoutput %" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+      func_modify_configure_in "(AC_OUTPUT): Add "`echo $added_acoutput | sed -e 's/ /, /g'`'.'
     else
       please="$please
 Please add$added_acoutput to the AC_OUTPUT or AC_CONFIG_FILES invocation in the $configure_in file.
@@ -628,10 +716,10 @@ if test -n "$removed_acoutput"; then
         ba
       :d
     }'
-    sed -e '/^AC_CONFIG_FILES(/'"$sedprog" < $srcdir/$configure_in > $srcdir/$configure_in.tmp
-    if cmp -s $srcdir/$configure_in $srcdir/$configure_in.tmp; then
-      sed -e '/^AC_OUTPUT(/'"$sedprog" < $srcdir/$configure_in > $srcdir/$configure_in.tmp
-      if cmp -s $srcdir/$configure_in $srcdir/$configure_in.tmp; then
+    sed -e '/^AC_CONFIG_FILES(/'"$sedprog" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+    if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
+      sed -e '/^AC_OUTPUT(/'"$sedprog" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+      if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
         :
       else
         tag=AC_OUTPUT
@@ -640,27 +728,9 @@ if test -n "$removed_acoutput"; then
       tag=AC_CONFIG_FILES
     fi
     if test -n "$tag"; then
-      if test -z "$modified_configure_in"; then
-        echo "Updating $configure_in (backup is in $configure_in~)"
-        rm -f $srcdir/$configure_in~
-        cp -p $srcdir/$configure_in $srcdir/$configure_in~
-      fi
-      rm -f $srcdir/$configure_in
-      cp $srcdir/$configure_in.tmp $srcdir/$configure_in
-      if $do_changelog; then
-        if test -z "$modified_ChangeLog"; then
-          echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/ChangeLog.tmp
-          echo >> $srcdir/ChangeLog.tmp
-          modified_ChangeLog=yes
-        fi
-        if test -z "$modified_configure_in"; then
-          echo "       * $configure_in ($tag): Remove $file." >> $srcdir/ChangeLog.tmp
-        else
-          echo "       ($tag): Remove $file." >> $srcdir/ChangeLog.tmp
-        fi
-      fi
-      modified_configure_in=yes
+      func_modify_configure_in "($tag): Remove $file."
     else
+      rm -f "$srcdir/$configure_in.tmp"
       if test "$file" != intl/intlh.inst; then
         please="$please
 Please remove $file from the AC_OUTPUT or AC_CONFIG_FILES invocation
@@ -668,77 +738,17 @@ in the $configure_in file.
 "
       fi
     fi
-    rm -f $srcdir/$configure_in.tmp
   done
 fi
-sed -e 's%sed -e "/POTFILES =/r po/POTFILES" po/Makefile\.in > po/Makefile *;* *%%' < $srcdir/$configure_in > $srcdir/$configure_in.tmp
-if cmp -s $srcdir/$configure_in $srcdir/$configure_in.tmp; then
-  :
-else
-  if test -z "$modified_configure_in"; then
-    echo "Updating $configure_in (backup is in $configure_in~)"
-    rm -f $srcdir/$configure_in~
-    cp -p $srcdir/$configure_in $srcdir/$configure_in~
-  fi
-  rm -f $srcdir/$configure_in
-  cp $srcdir/$configure_in.tmp $srcdir/$configure_in
-  if $do_changelog; then
-    if test -z "$modified_ChangeLog"; then
-      echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/ChangeLog.tmp
-      echo >> $srcdir/ChangeLog.tmp
-      modified_ChangeLog=yes
-    fi
-    if test -z "$modified_configure_in"; then
-      echo "   * $configure_in (AC_OUTPUT): Remove command that created po/Makefile." >> $srcdir/ChangeLog.tmp
-    else
-      echo "   (AC_OUTPUT): Remove command that created po/Makefile." >> $srcdir/ChangeLog.tmp
-    fi
-  fi
-  modified_configure_in=yes
-fi
-rm -f $srcdir/$configure_in.tmp
-sed -e '/^\(dnl \|\)AC_LINK_FILES(\$nls_cv_header_libgt, \$nls_cv_header_intl)$/d' < $srcdir/$configure_in > $srcdir/$configure_in.tmp
-if cmp -s $srcdir/$configure_in $srcdir/$configure_in.tmp; then
-  :
-else
-  if test -z "$modified_configure_in"; then
-    echo "Updating $configure_in (backup is in $configure_in~)"
-    rm -f $srcdir/$configure_in~
-    cp -p $srcdir/$configure_in $srcdir/$configure_in~
-  fi
-  rm -f $srcdir/$configure_in
-  cp $srcdir/$configure_in.tmp $srcdir/$configure_in
-  if $do_changelog; then
-    if test -z "$modified_ChangeLog"; then
-      echo "$DATE  gettextize  <bug-gnu-gettext@gnu.org>" > $srcdir/ChangeLog.tmp
-      echo >> $srcdir/ChangeLog.tmp
-      modified_ChangeLog=yes
-    fi
-    if test -z "$modified_configure_in"; then
-      echo "   * $configure_in (AC_LINK_FILES): Remove invocation." >> $srcdir/ChangeLog.tmp
-    else
-      echo "   (AC_LINK_FILES): Remove invocation." >> $srcdir/ChangeLog.tmp
-    fi
-  fi
-  modified_configure_in=yes
-fi
-rm -f $srcdir/$configure_in.tmp
-if $do_changelog && test -n "$modified_ChangeLog"; then
-  echo >> $srcdir/ChangeLog.tmp
-  if test -f $srcdir/ChangeLog; then
-    echo "Adding an entry to ChangeLog (backup is in ChangeLog~)"
-    cat $srcdir/ChangeLog >> $srcdir/ChangeLog.tmp
-    cp -p $srcdir/ChangeLog $srcdir/ChangeLog~
-  else
-    echo "Creating ChangeLog"
-  fi
-  cp $srcdir/ChangeLog.tmp $srcdir/ChangeLog
-  rm -f $srcdir/ChangeLog.tmp
-fi
+sed -e 's%sed -e "/POTFILES =/r po/POTFILES" po/Makefile\.in > po/Makefile *;* *%%' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+func_modify_configure_in "(AC_OUTPUT): Remove command that created po/Makefile."
+sed -e '/^\(dnl \|\)AC_LINK_FILES(\$nls_cv_header_libgt, \$nls_cv_header_intl)$/d' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+func_modify_configure_in "(AC_LINK_FILES): Remove invocation."
+$do_changelog && func_ChangeLog_finish
 
 # Recommend replacement for deprecated Makefile variables.
-use_libtool=`cat $srcdir/$configure_in | grep '^A[CM]_PROG_LIBTOOL'`
-for file in `(cd $srcdir; find . -name Makefile.am -print; find . -name Makefile.in -print) | sed -e 's,^\./,,'`; do
+use_libtool=`cat "$srcdir/$configure_in" | grep '^A[CM]_PROG_LIBTOOL'`
+for file in `(cd "$srcdir"; find . -name Makefile.am -print; find . -name Makefile.in -print) | sed -e 's,^\./,,'`; do
   if test -f "$srcdir/$file"; then
     if test `echo "$file" | sed -e 's,^.*/,,'` = Makefile.in && grep automake "$srcdir/$file" >/dev/null 2>&1; then
       continue;
@@ -794,7 +804,7 @@ Please change $file to use the constant string \"po\" instead of
 done
 
 # Recommend replacement for deprecated configure variables.
-if grep '\$nls_cv_header_' $srcdir/$configure_in >/dev/null 2>&1; then
+if grep '\$nls_cv_header_' "$srcdir/$configure_in" >/dev/null 2>&1; then
   please="$please
 Please stop using \$nls_cv_header_intl or \$nls_cv_header_libgt in the
 $configure_in file. Both will go away. Use <libintl.h> or \"gettext.h\" instead.