summaryrefslogtreecommitdiff
path: root/ext/session
diff options
context:
space:
mode:
authorYasuo Ohgaki <yohgaki@php.net>2013-06-29 06:45:18 +0900
committerYasuo Ohgaki <yohgaki@php.net>2013-06-29 11:35:55 +0900
commitef63334fa6d0e51d3235b8a026da1316e89b08ce (patch)
treec91d59f29a26d1c79ababbae81f65c71e851a620 /ext/session
parent103cf4c060b7eed97b67549bee4836794a595e38 (diff)
downloadphp-git-ef63334fa6d0e51d3235b8a026da1316e89b08ce.tar.gz
Fixed bug #49175: mod_files.sh does not support hash bits
Diffstat (limited to 'ext/session')
-rw-r--r--ext/session/mod_files.sh67
1 files changed, 54 insertions, 13 deletions
diff --git a/ext/session/mod_files.sh b/ext/session/mod_files.sh
index 1d2672847c..4fc4f20f7f 100644
--- a/ext/session/mod_files.sh
+++ b/ext/session/mod_files.sh
@@ -1,24 +1,65 @@
#! /bin/sh
-if test "$2" = ""; then
- echo "usage: $0 basedir depth"
- exit 1
+if [[ "$2" = "" ]] || [[ "$3" = "" ]]; then
+ echo "Usage: $0 BASE_DIRECTORY DEPTH HASH_BITS"
+ echo "BASE_DIRECTORY will be created if it doesn't exist"
+ echo "DEPTH must be an integer number >0"
+ echo "HASH_BITS(session.hash_bits_per_charactor) should be one of 4, 5, or 6"
+ exit 1
fi
-if test "$2" = "0"; then
- exit 0
+if [[ "$2" = "0" ]] && [[ ! "$4" = "recurse" ]]; then
+ echo "Can't create a directory tree with depth of 0, exiting."
fi
+if [[ "$2" = "0" ]]; then
+ exit 0
+fi
+
+directory="$1"
+depth="$2"
+hashbits="$3"
+
hash_chars="0 1 2 3 4 5 6 7 8 9 a b c d e f"
-if test "$3" -a "$3" -ge "5"; then
- hash_chars="$hash_chars g h i j k l m n o p q r s t u v"
- if test "$3" -eq "6"; then
- hash_chars="$hash_chars w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - ,"
- fi
+
+if [[ "$hashbits" -ge "5" ]]; then
+ hash_chars="$hash_chars g h i j k l m n o p q r s t u v"
fi
+if [[ "$hashbits" -ge "6" ]]; then
+ hash_chars="$hash_chars w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - ,"
+fi
+
+while [[ -d $directory ]] && [[ $( ls $directory ) ]]; do
+ echo "Directory $directory is not empty! What would you like to do?"
+
+ options="\"Delete directory contents\" \"Choose another directory\" \"Quit\""
+ eval set $options
+ select opt in "$@"; do
+
+ if [[ $opt = "Delete directory contents" ]]; then
+ echo "Deleting $directory contents... "
+ rm -rf $directory/*
+ elif [[ $opt = "Choose another directory" ]]; then
+ echo "Which directory would you like to choose?"
+ read directory
+ elif [[ $opt = "Quit" ]]; then
+ exit 0
+ fi
+
+ break;
+ done
+done
+
+if [[ ! -d $directory ]]; then
+ mkdir -p $directory
+fi
+
+
+echo "Creating session path in $directory with a depth of $depth for session.hash_bits_per_character = $hashbits"
+
for i in $hash_chars; do
- newpath="$1/$i"
- mkdir $newpath || exit 1
- sh $0 $newpath `expr $2 - 1` $3
+ newpath="$directory/$i"
+ mkdir $newpath || exit 1
+ sh $0 $newpath `expr $depth - 1` $hashbits recurse
done