diff options
Diffstat (limited to 'patch/patch-create-skip-unchanged')
-rw-r--r-- | patch/patch-create-skip-unchanged/create | 91 | ||||
-rwxr-xr-x | patch/patch-create-skip-unchanged/create.orig | 85 | ||||
-rw-r--r-- | patch/patch-create-skip-unchanged/email | 1 | ||||
-rw-r--r-- | patch/patch-create-skip-unchanged/files | 1 | ||||
-rw-r--r-- | patch/patch-create-skip-unchanged/notes | 0 | ||||
-rw-r--r-- | patch/patch-create-skip-unchanged/readme | 3 |
6 files changed, 181 insertions, 0 deletions
diff --git a/patch/patch-create-skip-unchanged/create b/patch/patch-create-skip-unchanged/create new file mode 100644 index 0000000..dd078f1 --- /dev/null +++ b/patch/patch-create-skip-unchanged/create @@ -0,0 +1,91 @@ +#!/bin/rc +rfork e + +fn xchmod { + chmod $* >[2]/dev/null +} + +if(~ $#* 0 1 2){ + echo 'usage: patch/create name email file... [< description]' >[1=2] + exit usage +} + +if(! echo $1 | grep -s '^[a-z_0-9.\-]+$'){ + echo 'bad name: [a-z0-9._\-]+ only' >[1=2] + exit usage +} +if(! echo $2 | grep -s '^(-|[A-Za-z0-9.\-+]+@[A-Za-z0-9.\-+]+)$'){ + echo 'bad email: [a-z0-9.-+] only; use ''-'' to not leave an email address.' >[1=2] + exit usage +} + +if(! test -d /n/sources/patch){ + rfork n + 9fs sources +} + +patch=$1 +email=$2 +shift +shift +d=/n/sources/patch/$patch +if(! mkdir $d){ + echo mkdir $d failed >[1=2] + exit mkdir +} +if(! ~ $email -){ + echo $email >$d/email +} + +xchmod o-w $d +>$d/readme +>$d/files +>$d/notes +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} + } + if(test -f /n/sources/plan9/$i){ + if(cmp -s /n/sources/plan9/$i $i){ + echo warning: skipping new file $i that does not differ from sources >[1=2] + } + if not{ + cp /n/sources/plan9/$i $d/$uniq.orig + cp $i $d/$uniq + echo $i $uniq >>$d/files + } + } + if not{ + echo warning: new file $i not on sources >[1=2] + cp $i $d/$uniq + echo $i $uniq >>$d/files + } +} +@{builtin cd $d && xchmod ug+rw * && xchmod a+r *} + +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 $d diff --git a/patch/patch-create-skip-unchanged/create.orig b/patch/patch-create-skip-unchanged/create.orig new file mode 100755 index 0000000..55e659a --- /dev/null +++ b/patch/patch-create-skip-unchanged/create.orig @@ -0,0 +1,85 @@ +#!/bin/rc +rfork e + +fn xchmod { + chmod $* >[2]/dev/null +} + +if(~ $#* 0 1 2){ + echo 'usage: patch/create name email file... [< description]' >[1=2] + exit usage +} + +if(! echo $1 | grep -s '^[a-z_0-9.\-]+$'){ + echo 'bad name: [a-z0-9._\-]+ only' >[1=2] + exit usage +} +if(! echo $2 | grep -s '^(-|[A-Za-z0-9.\-+]+@[A-Za-z0-9.\-+]+)$'){ + echo 'bad email: [a-z0-9.-+] only; use ''-'' to not leave an email address.' >[1=2] + exit usage +} + +if(! test -d /n/sources/patch){ + rfork n + 9fs sources +} + +patch=$1 +email=$2 +shift +shift +d=/n/sources/patch/$patch +if(! mkdir $d){ + echo mkdir $d failed >[1=2] + exit mkdir +} +if(! ~ $email -){ + echo $email >$d/email +} + +xchmod o-w $d +>$d/readme +>$d/files +>$d/notes +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 +} +@{builtin cd $d && xchmod ug+rw * && xchmod a+r *} + +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 $d diff --git a/patch/patch-create-skip-unchanged/email b/patch/patch-create-skip-unchanged/email new file mode 100644 index 0000000..191feb6 --- /dev/null +++ b/patch/patch-create-skip-unchanged/email @@ -0,0 +1 @@ +john@ankarstrom.se diff --git a/patch/patch-create-skip-unchanged/files b/patch/patch-create-skip-unchanged/files new file mode 100644 index 0000000..5d6e99c --- /dev/null +++ b/patch/patch-create-skip-unchanged/files @@ -0,0 +1 @@ +/rc/bin/patch/create create diff --git a/patch/patch-create-skip-unchanged/notes b/patch/patch-create-skip-unchanged/notes new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/patch/patch-create-skip-unchanged/notes diff --git a/patch/patch-create-skip-unchanged/readme b/patch/patch-create-skip-unchanged/readme new file mode 100644 index 0000000..a3e5990 --- /dev/null +++ b/patch/patch-create-skip-unchanged/readme @@ -0,0 +1,3 @@ +Skip unchanged files when creating patch + +I don't see any point in including unchanged files. |