changeset 9865:8cd0d41a9b6d

Allow VPATH usage of vc-list-files. * build-aux/vc-list-files (scriptversion): Add timestamp. (options): Add --help, --version, -C. (CVS): Support installed cvsu. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Thu, 03 Apr 2008 08:45:00 -0600
parents 980dca32ad8b
children 3de5cdb73cbc
files ChangeLog build-aux/vc-list-files
diffstat 2 files changed, 61 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-04-03  Eric Blake  <ebb9@byu.net>
+
+	Allow VPATH usage of vc-list-files.
+	* build-aux/vc-list-files (scriptversion): Add timestamp.
+	(options): Add --help, --version, -C.
+	(CVS): Support installed cvsu.
+
 2008-04-02  Bruno Haible  <bruno@clisp.org>
 
 	Avoid some "statement with no effect" warnings from gcc.
--- a/build-aux/vc-list-files
+++ b/build-aux/vc-list-files
@@ -1,6 +1,9 @@
 #!/bin/sh
 # List version-controlled file names.
 
+# Print a version string.
+scriptversion=2008-04-03.14
+
 # Copyright (C) 2006-2008 Free Software Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -20,38 +23,80 @@
 # List the specified version-controlled files.
 # With no argument, list them all.  With a single DIRECTORY argument,
 # list the version-controlled files in that directory.
-# This script must be run solely from the top of a $srcdir build directory.
 
 # If there's an argument, it must be a single, "."-relative directory name.
 # cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
 
+postprocess=
+case $1 in
+  --help) cat <<EOF
+Usage: $0 [-C SRCDIR] [DIR]
+
+Output a list of version-controlled files in DIR (default .), relative to
+SRCDIR (default .).  SRCDIR must be the top directory of a checkout.
+
+Options:
+  --help     print this help, then exit
+  --version  print version number, then exit
+  -C SRCDIR  change directory to SRCDIR before generating list
+
+Report bugs and patches to <bug-gnulib@gnu.org>.
+EOF
+    exit ;;
+
+  --version)
+    year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
+    cat <<EOF
+vc-list-files $scriptversion
+Copyright (C) $year Free Software Foundation, Inc,
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+    exit ;;
+
+  -C)
+    postprocess="| sed 's|^|$2/|'"
+    cd "$2" || exit 1
+    shift; shift ;;
+esac
+
 dir=
 case $# in
   0) ;;
   1) dir=$1 ;;
   *) echo "$0: too many arguments" 1>&2
-     echo "Usage: $0 [DIR]" 1>&2; exit 1;;
+     echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
 esac
 
 test "x$dir" = x && dir=.
 
 if test -d .git; then
-  exec git ls-files "$dir"
+  eval exec git ls-files '"$dir"' $postprocess
 elif test -d .hg; then
-  exec hg locate "$dir/*"
+  eval exec hg locate '"$dir/*"' $postprocess
 elif test -d CVS; then
   if test -x build-aux/cvsu; then
-    build-aux/cvsu --find --types=AFGM "$dir"
+    eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
+  elif (cvsu --help) >/dev/null 2>&1; then
+    eval cvsu --find --types=AFGM '"$dir"' $postprocess
   else
-    awk -F/ '{				\
+    eval awk -F/ \''{			\
 	if (!$1 && $3 !~ /^-/) {	\
 	  f=FILENAME;			\
 	  sub(/CVS\/Entries/, "", f);	\
 	  print f $2;			\
-	}}'				\
-      $(find ${*-*} -name Entries -print) /dev/null;
+	}}'\''				\
+      $(find ${*-*} -name Entries -print) /dev/null' $postprocess
   fi
 else
-  echo "$0: Failed to determine type of version control used in "`pwd` 1>&2
+  echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
   exit 1
 fi
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End: