Updating top-level files for automake
Phil Edwards
phil@jaj.com
Sun Jul 20 07:49:00 GMT 2003
As part of the autotools transition, libstdc++ will be going to automake
1.7, for its features and bugfixes. However, trying to configure using
this version results in problems, because toplevel's 'missing' is too old.
I updated missing, install-sh, and mkinstalldirs to the versions which
aclocal/automake would install in a new project. There do not appear
to be any backward incompatabilities, so directories which have not yet
converted to newer autoconfs, and/or are not using automake at all, should
have no difficulties.
Nevertheless, please look these diffs over. I'll continue to use them in
my local tree as I wrestle with autoconf. I tend to think of these files
like config.{guess,sub}, where they can simply be updated as needed.
It's been pointed out to me that there is a typo in the new version of
the 'missing' script:
WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them.
You can get \`$1Help2man' as part of \`Autoconf' from any GNU
-------------------------^^^^^^^^^^^
This should be $1 only, not $1Help2man. We can fix that locally if
we want...?
Index: install-sh
===================================================================
RCS file: /home/pme/Repositories/GCC/gcc/install-sh,v
retrieving revision 1.4
diff -c -r1.4 install-sh
*** install-sh 25 Jan 2002 23:42:28 -0000 1.4
--- install-sh 10 Jul 2003 23:24:04 -0000
***************
*** 1,19 ****
#!/bin/sh
#
# install - install a program, script, or datafile
- # This comes from X11R5 (mit/util/scripts/install.sh).
#
! # Copyright 1991 by the Massachusetts Institute of Technology
#
! # Permission to use, copy, modify, distribute, and sell this software and its
! # documentation for any purpose is hereby granted without fee, provided that
! # the above copyright notice appear in all copies and that both that
! # copyright notice and this permission notice appear in supporting
! # documentation, and that the name of M.I.T. not be used in advertising or
! # publicity pertaining to distribution of the software without specific,
! # written prior permission. M.I.T. makes no representations about the
! # suitability of this software for any purpose. It is provided "as is"
! # without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
--- 1,37 ----
#!/bin/sh
#
# install - install a program, script, or datafile
#
! # This originates from X11R5 (mit/util/scripts/install.sh), which was
! # later released in X11R6 (xc/config/util/install.sh) with the
! # following copyright and license.
#
! # Copyright (C) 1994 X Consortium
! #
! # Permission is hereby granted, free of charge, to any person obtaining a copy
! # of this software and associated documentation files (the "Software"), to
! # deal in the Software without restriction, including without limitation the
! # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
! # sell copies of the Software, and to permit persons to whom the Software is
! # furnished to do so, subject to the following conditions:
! #
! # The above copyright notice and this permission notice shall be included in
! # all copies or substantial portions of the Software.
! #
! # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
! # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
! # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
! # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
! # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
! # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
! #
! # Except as contained in this notice, the name of the X Consortium shall not
! # be used in advertising or otherwise to promote the sale, use or other deal-
! # ings in this Software without prior written authorization from the X Consor-
! # tium.
! #
! #
! # FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
***************
*** 56,62 ****
while [ x"$1" != x ]; do
case $1 in
! -c) instcmd="$cpprog"
shift
continue;;
--- 74,80 ----
while [ x"$1" != x ]; do
case $1 in
! -c) instcmd=$cpprog
shift
continue;;
***************
*** 79,85 ****
shift
continue;;
! -s) stripcmd="$stripprog"
shift
continue;;
--- 97,103 ----
shift
continue;;
! -s) stripcmd=$stripprog
shift
continue;;
***************
*** 106,233 ****
if [ x"$src" = x ]
then
! echo "install: no input file specified"
exit 1
else
! true
fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
!
! if [ -d $dst ]; then
instcmd=:
chmodcmd=""
else
! instcmd=mkdir
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
! # might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
! if [ -f $src -o -d $src ]
then
! true
else
! echo "install: $src does not exist"
exit 1
fi
!
if [ x"$dst" = x ]
then
! echo "install: no destination specified"
exit 1
else
! true
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
! if [ -d $dst ]
then
! dst="$dst"/`basename $src`
else
! true
fi
fi
## this sed command emulates the dirname command
! dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
! defaultIFS='
! '
! IFS="${IFS-${defaultIFS}}"
! oIFS="${IFS}"
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
! set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
! IFS="${oIFS}"
pathcomp=''
while [ $# -ne 0 ] ; do
! pathcomp="${pathcomp}${1}"
shift
! if [ ! -d "${pathcomp}" ] ;
then
! $mkdirprog "${pathcomp}"
else
! true
fi
! pathcomp="${pathcomp}/"
done
fi
if [ x"$dir_arg" != x ]
then
! $doit $instcmd $dst &&
! if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
! if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
! if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
! if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
else
# If we're going to rename the final executable, determine the name now.
! if [ x"$transformarg" = x ]
then
! dstfile=`basename $dst`
else
! dstfile=`basename $dst $transformbasename |
sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
! if [ x"$dstfile" = x ]
then
! dstfile=`basename $dst`
else
! true
fi
! # Make a temp file name in the proper directory.
! dsttmp=$dstdir/_inst.$$_
! # Move or copy the file name to the temp name
! $doit $instcmd $src $dsttmp &&
! trap "rm -f ${dsttmp}" 0 &&
# and set any options; do chmod last to preserve setuid bits
--- 124,255 ----
if [ x"$src" = x ]
then
! echo "$0: no input file specified" >&2
exit 1
else
! :
fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
!
! if [ -d "$dst" ]; then
instcmd=:
chmodcmd=""
else
! instcmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
! # might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
! if [ -f "$src" ] || [ -d "$src" ]
then
! :
else
! echo "$0: $src does not exist" >&2
exit 1
fi
!
if [ x"$dst" = x ]
then
! echo "$0: no destination specified" >&2
exit 1
else
! :
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
! if [ -d "$dst" ]
then
! dst=$dst/`basename "$src"`
else
! :
fi
fi
## this sed command emulates the dirname command
! dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
! defaultIFS='
! '
! IFS="${IFS-$defaultIFS}"
! oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
! set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
! IFS=$oIFS
pathcomp=''
while [ $# -ne 0 ] ; do
! pathcomp=$pathcomp$1
shift
! if [ ! -d "$pathcomp" ] ;
then
! $mkdirprog "$pathcomp"
else
! :
fi
! pathcomp=$pathcomp/
done
fi
if [ x"$dir_arg" != x ]
then
! $doit $instcmd "$dst" &&
! if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
! if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
! if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
! if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
else
# If we're going to rename the final executable, determine the name now.
! if [ x"$transformarg" = x ]
then
! dstfile=`basename "$dst"`
else
! dstfile=`basename "$dst" $transformbasename |
sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
! if [ x"$dstfile" = x ]
then
! dstfile=`basename "$dst"`
else
! :
fi
! # Make a couple of temp file names in the proper directory.
! dsttmp=$dstdir/#inst.$$#
! rmtmp=$dstdir/#rm.$$#
! # Trap to clean up temp files at exit.
! trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
! trap '(exit $?); exit' 1 2 13 15
!
! # Move or copy the file name to the temp name
! $doit $instcmd "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits
***************
*** 235,251 ****
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
! if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
! if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
! if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
! if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
# Now rename the file to the real destination.
! $doit $rmcmd -f $dstdir/$dstfile &&
! $doit $mvcmd $dsttmp $dstdir/$dstfile
fi &&
! exit 0
--- 257,294 ----
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
! if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
! if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
! if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
! if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
!
! # Now remove or move aside any old file at destination location. We try this
! # two ways since rm can't unlink itself on some systems and the destination
! # file might be busy for other reasons. In this case, the final cleanup
! # might fail but the new file should still install successfully.
!
! {
! if [ -f "$dstdir/$dstfile" ]
! then
! $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
! $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
! {
! echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
! (exit 1); exit
! }
! else
! :
! fi
! } &&
# Now rename the file to the real destination.
! $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
fi &&
+ # The final little trick to "correctly" pass the exit status to the exit trap.
! {
! (exit 0); exit
! }
Index: missing
===================================================================
RCS file: /home/pme/Repositories/GCC/gcc/missing,v
retrieving revision 1.4
diff -c -r1.4 missing
*** missing 22 Jul 2000 08:08:22 -0000 1.4
--- missing 10 Jul 2003 23:24:04 -0000
***************
*** 1,7 ****
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
! # Copyright (C) 1996, 1997 Free Software Foundation, Inc.
! # Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
--- 1,7 ----
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
! # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
! # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
***************
*** 18,28 ****
--- 18,54 ----
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
+ # As a special exception to the GNU General Public License, if you
+ # distribute this file as part of a program that contains a
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
+ run=:
+
+ # In the cases where this matters, `missing' is being run in the
+ # srcdir already.
+ if test -f configure.ac; then
+ configure_ac=configure.ac
+ else
+ configure_ac=configure.in
+ fi
+
+ case "$1" in
+ --run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ ;;
+ esac
+
+ # If it does not exist, or fails to run (possibly an outdated version),
+ # try to emulate it.
case "$1" in
-h|--h|--he|--hel|--help)
***************
*** 35,40 ****
--- 61,67 ----
Options:
-h, --help display this help and exit
-v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
***************
*** 43,55 ****
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
! echo "missing - GNU libit 0.0"
;;
-*)
--- 70,84 ----
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
! echo "missing 0.4 - GNU automake"
;;
-*)
***************
*** 58,88 ****
exit 1
;;
! aclocal)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
! you modified \`acinclude.m4' or \`configure.in'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
! you modified \`configure.in'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
! you modified \`acconfig.h' or \`configure.in'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
! files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
--- 87,132 ----
exit 1
;;
! aclocal*)
! if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
! # We have it, but it failed.
! exit 1
! fi
!
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
! you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
! you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
! you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
! files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
***************
*** 95,104 ****
touch $touch_files
;;
! automake)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
! you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
--- 139,153 ----
touch $touch_files
;;
! automake*)
! if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
! # We have it, but it failed.
! exit 1
! fi
!
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
! you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
***************
*** 106,111 ****
--- 155,188 ----
while read f; do touch "$f"; done
;;
+ autom4te)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+ WARNING: \`$1' is needed, and you do not seem to have it handy on your
+ system. You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1Help2man' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
***************
*** 159,165 ****
--- 236,272 ----
fi
;;
+ help2man)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+ WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+ fi
+ if [ -f "$file" ]; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
makeinfo)
+ if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+ # We have makeinfo, but it failed.
+ exit 1
+ fi
+
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
***************
*** 175,180 ****
--- 282,326 ----
touch $file
;;
+ tar)
+ shift
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ fi
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case "$firstarg" in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case "$firstarg" in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+ WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and you do not seem to have it handy on your
Index: mkinstalldirs
===================================================================
RCS file: /home/pme/Repositories/GCC/gcc/mkinstalldirs,v
retrieving revision 1.2
diff -c -r1.2 mkinstalldirs
*** mkinstalldirs 3 Apr 1998 16:22:05 -0000 1.2
--- mkinstalldirs 10 Jul 2003 23:24:04 -0000
***************
*** 2,36 ****
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
- # Last modified: 1994-03-25
# Public domain
errstatus=0
! for file in ${1+"$@"} ; do
! set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
! shift
!
! pathcomp=
! for d in ${1+"$@"} ; do
! pathcomp="$pathcomp$d"
! case "$pathcomp" in
! -* ) pathcomp=./$pathcomp ;;
! esac
!
! if test ! -d "$pathcomp"; then
! echo "mkdir $pathcomp" 1>&2
! mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
! fi
!
! if test ! -d "$pathcomp"; then
! errstatus=$lasterr
! fi
! pathcomp="$pathcomp/"
! done
done
exit $errstatus
# mkinstalldirs ends here
--- 2,111 ----
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain
errstatus=0
+ dirmode=""
! usage="\
! Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
! # process command line arguments
! while test $# -gt 0 ; do
! case $1 in
! -h | --help | --h*) # -h for help
! echo "$usage" 1>&2
! exit 0
! ;;
! -m) # -m PERM arg
! shift
! test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
! dirmode=$1
! shift
! ;;
! --) # stop option processing
! shift
! break
! ;;
! -*) # unknown option
! echo "$usage" 1>&2
! exit 1
! ;;
! *) # first non-opt arg
! break
! ;;
! esac
! done
!
! for file
! do
! if test -d "$file"; then
! shift
! else
! break
! fi
! done
!
! case $# in
! 0) exit 0 ;;
! esac
!
! case $dirmode in
! '')
! if mkdir -p -- . 2>/dev/null; then
! echo "mkdir -p -- $*"
! exec mkdir -p -- "$@"
! fi
! ;;
! *)
! if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
! echo "mkdir -m $dirmode -p -- $*"
! exec mkdir -m "$dirmode" -p -- "$@"
! fi
! ;;
! esac
!
! for file
! do
! set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
! shift
!
! pathcomp=
! for d
! do
! pathcomp="$pathcomp$d"
! case $pathcomp in
! -*) pathcomp=./$pathcomp ;;
! esac
!
! if test ! -d "$pathcomp"; then
! echo "mkdir $pathcomp"
!
! mkdir "$pathcomp" || lasterr=$?
!
! if test ! -d "$pathcomp"; then
! errstatus=$lasterr
! else
! if test ! -z "$dirmode"; then
! echo "chmod $dirmode $pathcomp"
! lasterr=""
! chmod "$dirmode" "$pathcomp" || lasterr=$?
!
! if test ! -z "$lasterr"; then
! errstatus=$lasterr
! fi
! fi
! fi
! fi
!
! pathcomp="$pathcomp/"
! done
done
exit $errstatus
+ # Local Variables:
+ # mode: shell-script
+ # sh-indentation: 2
+ # End:
# mkinstalldirs ends here
More information about the Gcc-patches
mailing list