echo
echo " -h|--help: this usage help."
echo " -t|--timeout: timeout for operation in seconds."
- echo " Defaults to 2 seconds if not provided."
+ echo " Defaults to $TIMEOUT__dflt seconds if not provided."
echo
echo " -f|--file: the parameter 'data' will be interpreted as a file"
echo " with one operation per line. If missing, it will be"
# Send operation:
if [ -n "$is_file" ]
then
- grep -v "^#" $data | sed '/^[ \t]*$/d' > sigusr2.in
+ cp $data sigusr2.in
else
echo $data > sigusr2.in
fi
-0> sigusr2.out
+0>sigusr2.out
check_pid $PID
kill -s SIGUSR2 $PID
# Detect EOF and print all except that last line:
-sleep $timeout &
-timerPid=$!
-rm -f .operation_eof
-tail -n0 -F --pid=$timerPid sigusr2.out | while read line
-do
- if echo $line | grep "^EOF" >/dev/null; then
- touch .operation_eof
- # stop the timer
- kill -13 $timerPid
+count=$((10*timeout))
+expired=yes
+while [ $count -gt 0 ]
+do
+ sleep 0.1
+ count=$((count-1))
+ if tail -1 sigusr2.out | grep "^EOF" >/dev/null; then
+ expired=
+ break;
fi
-done
+done
-if [ -f .operation_eof ]
+if [ -z "$expired" ]
then
head --lines=-1 sigusr2.out
else
_exit "Operation error: timeout expired ($timeout seconds)"
fi
-exception=$(grep exception sigusr2.out)
-[ $? -eq 0 -a "$data" != "help" ] && _exit "(detected 'exception' within operation output)"
+exception=$(grep "^Operation processed with exception: " sigusr2.out)
+[ $? -eq 0 ] && _exit "(detected 'exception' within operation output: see 'launcher.trace')"
exit 0