| 
#!/bin/rc
rfork e
if(~ $#* 0 1){
	echo 'usage: patch/create name file... [< description]' >[1=2]
	exit usage
}
if(! echo $1 | grep -s '^[a-z_0-9.\-]+$'){
	echo bad name
	exit usage
}
if(! test -d /n/sources/patch){
	rfork n
	9fs sources
}
patch=$1
d=/n/sources/patch/$patch
if(! mkdir $d){
	echo mkdir $d failed >[1=2]
	exit mkdir
}
chmod o-w $d
>$d/readme
>$d/files
>$d/notes
shift
for(i in $*){
	i=`{cleanname -d `{pwd} $i}
	if(! test -f $i){
		echo error: cannot find $i >[1=2]
		rm -rf $d
		exit oops
	}
	short=`{basename $i}
	uniq=$short
	n=0
	while(test -f $d/$uniq){
		uniq=$short.$n
		n=`{echo 1+$n | hoc}
	}
	cp $i $d/$uniq
	if(test -f /n/sources/plan9/$i){
		if(cmp -s /n/sources/plan9/$i $i)
			echo warning: new file $i does not differ from sources >[1=2]
		cp /n/sources/plan9/$i $d/$uniq.orig
	}
	if not
		echo warning: new file $i not on sources >[1=2]
	echo $i $uniq >>$d/files
	chmod ug+rw $d/*
	chmod a+r $d/*
}
if(~ `{cat /proc/$pid/fd | awk 'NR==2{print $NF}'} */dev/cons; test -w /dev/consctl){
	>/dev/consctl {
		echo holdon
		cat >$d/readme
	}
}
if not
	cat >$d/readme
if(! test -s $d/readme){
	echo 'no description given; aborting' >[1=2]
	rm -rf $d
	exit oops
}
echo >[1=2] please run patch/email $patch your-email-address
echo >[1=2] so that 9trouble can mail you if there are questions.  thanks.
echo >[1=2] the email address will not be readable by other sources users.
echo >[1=2]
echo $d
 |