Browse Source

scripts: fix option parsing

Problem reported by Dennis Wydra in
<http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00082.html>.
* scripts/backup.in: Accept "-l LEVEL".  Be more systematic about
backslashes inside ``; it shouldn't matter for modern shells but
it might matter for older ones.
* scripts/restore.in: Likewise.
* scripts/backup.in: Adjust implementation of -t/--time to match
the new implementation of -l/--level.
Paul Eggert 14 năm trước cách đây
mục cha
commit
27225be1a3
2 tập tin đã thay đổi với 9 bổ sung8 xóa
  1. 6 6
      scripts/backup.in
  2. 3 2
      scripts/restore.in

+ 6 - 6
scripts/backup.in

@@ -72,8 +72,9 @@ do
   --l=*|--le=*|--lev=*|--leve=*|--level=*)
          DUMP_LEVEL=$optarg
 	 ;;
+  -l?*)  DUMP_LEVEL=`expr $option : '-l\(.*\)'`;;
   -l|--l|--le|--lev|--leve|--level)
-         prev=$option
+	 prev=--level
 	 ;;
   --verb=*|--verbo=*|--verbos=*|--verbose=*)
          VERBOSE=$optarg
@@ -81,14 +82,13 @@ do
   -v|--verb|--verbo|--verbos|--verbose)
          VERBOSE=100
 	 ;;
-  -v*)   VERBOSE=`expr $option : "-v\(.*\)"`;;
+  -v*)   VERBOSE=`expr $option : '-v\(.*\)'`;;
   --t=*|--ti=*|--tim=*|--time=*)
          TIME=$optarg
 	 ;;
-  -t)    prev=--t;;
-  -t*)   TIME=`expr $option : "-t\(.*\)"`;;
-  --t|--ti|--tim|--time)
-         prev=$option
+  -t?*)  TIME=`expr $option : '-t\(.*\)'`;;
+  -t|--t|--ti|--tim|--time)
+	 prev=--time
     	 ;;
   -V|--v|--ve|--ver|--vers|--versi|--versio|--version)
     	 echo "backup (@PACKAGE_NAME@) @VERSION@"

+ 3 - 2
scripts/restore.in

@@ -60,8 +60,9 @@ do
   --l=*|--le=*|--lev=*|--leve=*|--level=*)
          DUMP_LEVEL=$optarg
 	 ;;
+  -l?*)  DUMP_LEVEL=`expr $option : '-l\(.*\)'`;;
   -l|--l|--le|--lev|--leve|--level)
-         prev=$option
+	 prev=--level
 	 ;;
   --verb=*|--verbo=*|--verbos=*|--verbose=*)
          VERBOSE=$optarg
@@ -69,7 +70,7 @@ do
   -v|--verb|--verbo|--verbos|--verbose)
          VERBOSE=100
 	 ;;
-  -v*)   VERBOSE=`expr $option : "-v\(.*\)"`;;
+  -v*)   VERBOSE=`expr $option : '-v\(.*\)'`;;
   -V|--v|--ve|--ver|--vers|--versi|--versio|--version)
     	 echo "restore (@PACKAGE_NAME@) @VERSION@"
 	 license