diff --git a/Ada95/make-tar.sh b/Ada95/make-tar.sh
index f3d0a64..083812d 100755
--- a/Ada95/make-tar.sh
+++ b/Ada95/make-tar.sh
@@ -1,7 +1,8 @@
 #!/bin/sh
-# $Id: make-tar.sh,v 1.15 2015/05/16 17:12:37 tom Exp $
+# $Id: make-tar.sh,v 1.23 2022/11/05 20:29:41 tom Exp $
 ##############################################################################
-# Copyright (c) 2010-2013,2015 Free Software Foundation, Inc.                #
+# Copyright 2019-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2010-2015,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -36,14 +37,19 @@
 
 TARGET=`pwd`
 
-: ${ROOTNAME:=ncurses-Ada95}
-: ${PKG_NAME:=AdaCurses}
-: ${DESTDIR:=$TARGET}
-: ${TMPDIR:=/tmp}
+: "${ROOTNAME:=ncurses-Ada95}"
+: "${PKG_NAME:=AdaCurses}"
+: "${DESTDIR:=$TARGET}"
+: "${TMPDIR:=/tmp}"
+
+# make timestamps of generated files predictable
+same_timestamp() {
+	touch -r ../NEWS "$1"
+}
 
 grep_assign() {
-	grep_assign=`egrep "^$2\>" "$1" | sed -e "s/^$2[ 	]*=[ 	]*//" -e 's/"//g'`
-	eval $2=\"$grep_assign\"
+	grep_assign=`grep -E "^$2\>" "$1" | sed -e "s/^$2[ 	]*=[ 	]*//" -e 's/"//g'`
+	eval "$2"=\""$grep_assign"\"
 }
 
 grep_patchdate() {
@@ -58,29 +64,35 @@
 	sed \
 		-e "s/\\<MAJOR\\>/$NCURSES_MAJOR/g" \
 		-e "s/\\<MINOR\\>/$NCURSES_MINOR/g" \
-		-e "s/\\<YYYYMMDD\\>/$NCURSES_PATCH/g" $1 >$1.new
-	chmod u+w $1
-	mv $1.new $1
+		-e "s/\\<YYYYMMDD\\>/$NCURSES_PATCH/g" "$1" >"$1.new"
+	chmod u+w "$1"
+	mv "$1.new" "$1"
+	same_timestamp "$1"
 }
 
 make_changelog() {
-	test -f $1 && chmod u+w $1
-	cat >$1 <<EOF
-`echo $PKG_NAME|tr '[A-Z]' '[a-z]'` ($NCURSES_MAJOR.$NCURSES_MINOR+$NCURSES_PATCH) unstable; urgency=low
+	[ -f "$1" ] && chmod u+w "$1"
+	cat >"$1" <<EOF
+`echo $PKG_NAME|tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` ($NCURSES_MAJOR.$NCURSES_MINOR+$NCURSES_PATCH) unstable; urgency=low
 
   * snapshot of ncurses subpackage for $PKG_NAME.
 
- -- `head -n 1 $HOME/.signature`  `date -R`
+ -- `head -n 1 "$HOME"/.signature`  `date -R`
 EOF
+	same_timestamp "$1"
 }
 
 # This can be run from either the subdirectory, or from the top-level
 # source directory.  We will put the tar file in the original directory.
-test -d ./Ada95 && cd ./Ada95
+if [ -d ./Ada95 ]
+then
+	cd ./Ada95 || exit
+fi
 SOURCE=`cd ..;pwd`
 
 BUILD=$TMPDIR/make-tar$$
-trap "cd /; rm -rf $BUILD; exit 0" 0 1 2 5 15
+trap "cd /; rm -rf $BUILD; exit 1" 1 2 3 15
+trap "cd /; rm -rf $BUILD" 0
 
 umask 077
 if ! ( mkdir $BUILD )
@@ -91,46 +103,49 @@
 umask 022
 mkdir $BUILD/$ROOTNAME
 
-cp -p -r * $BUILD/$ROOTNAME/ || exit
+cp -p -r ./* $BUILD/$ROOTNAME/ || exit
 
 # Add the config.* utility scripts from the top-level directory.
 for i in . ..
 do
-	for j in config.guess config.sub install-sh tar-copy.sh
+	for j in COPYING config.guess config.sub install-sh tar-copy.sh
 	do
-		test -f $i/$j && cp -p $i/$j $BUILD/$ROOTNAME/
+		[ -f $i/$j ] && cp -p $i/$j $BUILD/$ROOTNAME/
 	done
 done
 
 # Make rpm and dpkg scripts for test-builds
 grep_patchdate
-for spec in $BUILD/$ROOTNAME/package/*.spec
+for spec in "$BUILD/$ROOTNAME"/package/*.spec
 do
-	edit_specfile $spec
+	edit_specfile "$spec"
 done
-for spec in $BUILD/$ROOTNAME/package/debian*
+for spec in "$BUILD/$ROOTNAME"/package/debian*
 do
-	make_changelog $spec/changelog
+	make_changelog "$spec"/changelog
 done
 
 cp -p ../man/MKada_config.in $BUILD/$ROOTNAME/doc/
-if test -z "$NO_HTML_DOCS"
+if [ -z "$NO_HTML_DOCS" ]
 then
 	# Add the ada documentation.
 	cd ../doc/html || exit
 
 	cp -p -r Ada* $BUILD/$ROOTNAME/doc/
 	cp -p -r ada $BUILD/$ROOTNAME/doc/
+
+	cd ../../Ada95 || exit
 fi
 
-cp -p $SOURCE/NEWS $BUILD/$ROOTNAME
+cp -p "$SOURCE/NEWS" $BUILD/$ROOTNAME
 
 # cleanup empty directories (an artifact of ncurses source archives)
 
-touch $BUILD/$ROOTNAME/MANIFEST 
-( cd $BUILD/$ROOTNAME && find . -type f -print |$SOURCE/misc/csort >MANIFEST )
+touch $BUILD/$ROOTNAME/MANIFEST
+( cd $BUILD/$ROOTNAME && find . -type f -print | "$SOURCE/misc/csort" >MANIFEST )
+same_timestamp $BUILD/$ROOTNAME/MANIFEST
 
-cd $BUILD || exit 
+cd $BUILD || exit
 
 # Remove build-artifacts.
 find . -name RCS -exec rm -rf {} \;
@@ -147,8 +162,11 @@
 # Make the files writable...
 chmod -R u+w .
 
-tar cf - $ROOTNAME | gzip >$DESTDIR/$ROOTNAME.tar.gz
-cd $DESTDIR
+# Cleanup timestamps
+[ -n "$TOUCH_DIRS" ] && "$TOUCH_DIRS" "$ROOTNAME"
+
+tar cf - $TAR_OPTIONS $ROOTNAME | gzip >"$DESTDIR/$ROOTNAME.tar.gz"
+cd "$DESTDIR" || exit
 
 pwd
 ls -l $ROOTNAME.tar.gz
