Index: /trunk/devel/run
===================================================================
--- /trunk/devel/run	(revision 1127)
+++ /trunk/devel/run	(revision 1128)
@@ -124,23 +124,34 @@
 fi
 
-if [[ $# -gt 0 ]]; then
-	action=$1
-	shift
-fi
-
 # devel actions
-case "$action" in
-prep*) prep "$@"; exit;;
-tags) rm -f tags; prep tags "$@"; exit;;
+case "$1" in
+prep*) shift; prep "$@"; exit;;
+tags) shift; rm -f tags; prep tags "$@"; exit;;
 po2php) po2php; exit;;
 mergepo) mergepo; exit;;
 dep*) updatedeps; exit;;
 xtest) xtest; exit;;
-esac
-
-case "$1" in
-fpm) stopfpm devel.pid;;
 stopfpm) stopfpm devel.pid; exit;;
 esac
+
+basename=$(basename $(pwd))
+case "$basename" in
+*-*)
+	# in build dir, starts from src dir
+	dirs="$basename"
+	xcachesrcdir=../${basename%%-*}
+	cd $xcachesrcdir
+	;;
+*)
+	# in src dir
+	dirs=${dirs:-php5-debug-zts}
+	xcachesrcdir=../$basename
+	;;
+esac
+
+touch devel.pid
+svn propget svn:ignore . > .svnignore
+
+# ==========================
 
 do_phpize() { # {{{1
@@ -183,4 +194,8 @@
 	fi
 }
+cleanfpm() { # {{{1
+	echo
+	stopfpm $pidfile
+}
 # }}}
 run() {
@@ -188,5 +203,5 @@
 
 	# prepare {{{1
-	case "$action" in
+	case "$1" in
 	phpize)
 		if [[ -r Makefile ]]; then
@@ -209,5 +224,5 @@
 	ln -snf ~/src/php/$phpbasename/sapi/fpm/php-fpm php-fpm
 
-	case "$action" in
+	case "$1" in
 	phpize) do_phpize; exit;;
 	make) do_make "$@"; exit;;
@@ -224,18 +239,22 @@
 
 	# run utils {{{1
-	case "$action" in
+	case "$1" in
 	dc)
+		shift
 		./php-cli -c devel.ini ./bin/phpdc.phpr $@ | tee decompiled.php
 		return
 		;;
 	dop)
+		shift
 		./php-cli -c devel.ini ./bin/phpdop.phpr $@
 		return
 		;;
 	retest)
+		shift
 		$MAKE xcachetest "$@" TESTS="`grep '^/.*\.phpt$' php_test_results_*.txt | uniq | xargs`"
 		return
 		;;
 	test)
+		shift
 		case "$1" in
 		*.phpt)
@@ -255,4 +274,27 @@
 	esac
 	# }}}
+	# pick tracer {{{1
+	case "$1" in
+	ltr*)
+		shift
+		export USE_ZEND_ALLOC=0
+		tracer=(ltrace -s1024 -e malloc,realloc,free,write)
+		;;
+	str*)
+		shift
+		tracer=(strace -s1024 -T)
+		;;
+	gdb)
+		shift
+		#USE_ZEND_ALLOC=0
+		tracer=(gdb --args)
+		;;
+	val*)
+		shift
+		export USE_ZEND_ALLOC=0
+		tracer=(valgrind --gen-suppressions=all)
+		;;
+	esac
+
 	# pick sapi {{{1
 	case "$basename" in
@@ -261,4 +303,5 @@
 		;;
 	*-apache*)
+		echo "Don't know how to run apache"
 		exit 1
 		;;
@@ -266,8 +309,10 @@
 		case "$1" in
 		fcgi)
+			shift
 			cmd=(./php-cgi -q -c devel.ini)
 			set -- -b 1026
 			;;
 		fpm)
+			shift
 			cmd=(./php-fpm -c devel.ini -y devel.fpm -g $(readlink -f $pidfile))
 			set --
@@ -280,23 +325,4 @@
 		"${cmd[@]}" -v || true
 	esac
-	# }}}
-	# pick action {{{1
-	case "$action" in
-	ltr*)
-		export USE_ZEND_ALLOC=0
-		tracer=(ltrace -s1024 -e malloc,realloc,free,write)
-		;;
-	str*)
-		tracer=(strace -s1024 -T)
-		;;
-	gdb)
-		#USE_ZEND_ALLOC=0
-		tracer=(gdb --args)
-		;;
-	val*)
-		export USE_ZEND_ALLOC=0
-		tracer=(valgrind --gen-suppressions=all)
-		;;
-	esac
 
 	# run {{{1
@@ -305,14 +331,11 @@
 	case "${cmd[0]}" in
 	*php-fpm*)
+		stopfpm
 		hiecho Starting fpm ...
 		"${commandLine[@]}"
-		# echo -n "Ctrl-C to stop"
-	cleanfpm() {
-		echo
-		stopfpm $pidfile
-	}
-		# trap stopfpm SIGINT SIGTERM exit
-		# cat > /dev/null || true
-		# stopfpm
+		echo -n "Ctrl-C to stop"
+		trap cleanfpm SIGINT SIGTERM exit
+		cat > /dev/null || true
+		stopfpm
 		;;
 	*)
@@ -323,22 +346,10 @@
 }
 
-# process each $dirs
-basename=$(basename $(pwd))
-if echo $basename | grep -- - >/dev/null; then
-	phpbasename=${basename#*-}
-	xcachesrcdir=../${basename%%-*}
+for phpbasename in "${dirs[@]}"; do
+	mkdir -p ../${basename}-${phpbasename}
+	cd ../${basename}-${phpbasename} || exit
+	lndir ${xcachesrcdir} >/dev/null || true
+
+	pwd
 	run "$@"
-else
-	svn propget svn:ignore . > .svnignore
-
-	dirs=${dirs:-php5-debug-zts}
-	xcachesrcdir=../$basename
-	for phpbasename in $dirs; do
-		mkdir -p ../${basename}-${phpbasename}
-		cd ../${basename}-${phpbasename} || exit
-		lndir ${xcachesrcdir} >/dev/null || true
-
-		pwd
-		run "$@"
-	done
-fi
+done
