There's a script, mod_files.sh, in ext/session for creating directory tree with depth X for sessions. As it stands, it's pretty poorly documented and very basic. I got exceptionally bored and rewrote most of it, the patch is attached. It runs fine for me in linux (with sh version 4.0). I don't have any other *NIX systems to test it out on, so I can't verify that it works in anything but linux, sorry.
What I changed: 1. Usage now properly reflects arguments, and is better explained. 2. Will create directory given if it doesn't exist 3. Will hop into interactive select if directory already has contents 4. Switched from "test" to "[[ ]]" as it's easier to read and _should_ be just as supported.
Index: trunk/mod_files.sh =================================================================== --- trunk/mod_files.sh (revision 44) +++ trunk/mod_files.sh (working copy) @@ -1,25 +1,65 @@ #! /bin/sh -if test "$2" = ""; then - echo "usage: $0 basedir depth" +if [[ "$2" = "" ]] || [[ "$3" = "" ]]; then + echo "Usage: $0 BASE_DIRECTORY DEPTH MAJOR_PHP_VERSION" + echo "BASE_DIRECTORY will be created if it doesn't exist" + echo "DEPTH must be an integer number >0" + echo "MAJOR_PHP_VERSION should be one of 4, 5, or 6" exit 1 fi -if test "$2" = "0"; then +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" +PHPVer="$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 [[ "$PHPVer" -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 [[ "$PHPVer" -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 PHP Version $PHPVer".X + for i in $hash_chars; do - newpath="$1/$i" + newpath="$directory/$i" mkdir $newpath || exit 1 - sh $0 $newpath `expr $2 - 1` $3 + sh $0 $newpath `expr $depth - 1` $PHPVer done -
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php