#!/bin/rc
# remote command for single slave invoked by "mrun"

bind /mnt/term/usr /usr
cd /usr/none
bind -b bin/$objtype /bin
bind -b bin/rc /bin

touch /tmp/t >[2] /dev/null
if(~ $status ?*){ # /tmp is not writable
	ramfs >[2] /dev/null
	if(~ $status ?*)
		bind -bc tmp /tmp
}

f=`{date -n}
dom=`{ndb/query sys $sysname dom}
if(! ~ $dom ?*)
	dom=$sysname.$pid
tmp=/tmp/srun.$dom.$f
mkdir $tmp

if(! test -e task)
	exit

task=`{cat task}
# then $task is 'task.n.v' (n=0,1,2,... v=a,b,c,...)

while(~ $task ?*){
	mkdir $task
	if(! ~ $status ?*){
		echo starting $task on $dom
		t=`{echo $task|sed 's/\..$//'}
		# then $t is 'task.n' (n=0,1,2,...)
		if(test -e data/$t)
			. tasks/$t <data/$t >$tmp/result
		if not{
			. tasks/$t >$tmp/result
		}
		if(test -e $task){
			cp $tmp/result $task/result
			echo $dom > $task/hostname 
			touch $task/done
		}
	}
	if not
		sleep 1;
	if(! test -e task)
		exit
	task=`{cat task}
}
