[[[

Misc. little fixes for contrib/client-side/asvn.

contrib/client-side/asvn:
  * Use 'mktemp' for creating temporary files.
  * No hardcoded paths to common binaries.
  * Check for required UNIX system tools.

]]]

Index: asvn
===================================================================
--- asvn	(revision 710)
+++ asvn	(revision 711)
@@ -1,7 +1,7 @@
 #!/bin/bash
 #-------------------------------------------------------------------------
-#    Author:		Ross Mark (rossm@controllingedge.com.au)
-#    Date:		Tue Mar 11 10:02:57 EST 2003
+#    Author:            Ross Mark (rossm@controllingedge.com.au)
+#    Date:              Tue Mar 11 10:02:57 EST 2003
 #
 #    Copyright (C) 2003-2004 Ross Mark
 #
@@ -15,7 +15,7 @@
 #    Every file and directory has a 'file:permissions' property set and
 #    every directory has a 'dir:devices' and 'dir:symlinks' for
 #    recording the extra information.
-#	
+#       
 #    Run this script instead of svn with the normal svn arguments.
 #
 #
@@ -42,23 +42,54 @@
 # $LastChangedBy$
 # $LastChangedRevision$
 
-SVN=/usr/bin/svn
-ACTION=""
+PROG="`basename $0`"
+VERSION=1.1
+
+
+## default settings
+
+SVN=svn
 DEV_PROP="dir:devices"
 SYM_PROP="dir:symlinks"
 FILE_PROP="file:permissions"
-TMPFILE=/tmp/asvn.tmp.$$
-TMPFILE1=/tmp/asvn.tmp1.$$
-TMPFILE2=/tmp/asvn.tmp2.$$
-PCWD=`/bin/pwd`
 SKIPSVN='\( -name .svn -prune -false \)'
 PRINTDETAILS="-printf \"file='%p' mode=%m user=%u(%U) group=%g(%G)\n\""
 
+
+## sanity check
+
+die () { rc="$1"; shift; echo 1>&2 "$PROG: ERROR: $@"; exit $rc; }
+have_command () { type "$1" >/dev/null; }
+require_command () 
+{ 
+    if have_command "$1"; then
+        return 0 # ok
+    else
+        die 1 "Cannot find required command '$1' - check the PATH environment variable."
+    fi
+}
+
+require_command cmp
+require_command find
+require_command mktemp
+require_command $SVN
+
+
+## internal variables
+
+ACTION=""
+PCWD=`pwd`
+TMPDIR="`mktemp -d -t ${PROG}.XXXXXXXXXX`"
+TMPFILE=${TMPDIR}/tmp
+TMPFILE1=${TMPDIR}/tmp1
+TMPFILE2=${TMPDIR}/tmp2
+
 trap cleanup 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
 
 function cleanup()
 {
-    rm -f $TMPFILE $TMPFILE1 $TMPFILE2
+    rm -f $TMPFILE $TMPFILE1 $TMPFILE2;
+    rmdir $TMPDIR
 }
 
 function basedirname()
@@ -156,7 +187,7 @@
     #
     # If the two list are the same then there is nothing to do.
     #
-    if /usr/bin/cmp $TMPFILE1 $TMPFILE >/dev/null
+    if cmp $TMPFILE1 $TMPFILE >/dev/null
     then
         return
     fi


