From 9a3d486fb62e00cf2015d2b49dce908e48e6c621 Mon Sep 17 00:00:00 2001 From: Ken Thompson Date: Tue, 21 Nov 1972 17:51:32 -0500 Subject: [PATCH] Research V2 development Work on file cmd/chown.s Co-Authored-By: Dennis Ritchie Synthesized-from: v2 --- cmd/chown.s | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 cmd/chown.s diff --git a/cmd/chown.s b/cmd/chown.s new file mode 100644 index 0000000000..f4417fb6a4 --- /dev/null +++ b/cmd/chown.s @@ -0,0 +1,147 @@ +/ chown -- change owner + + + .globl fopen, getc, mesg + + mov sp,r5 + mov (r5),r4 + cmp r4,$3 + bge 1f + jsr r5,mesg; ; .even +1: + add $4,r5 + mov (r5),r3 + cmpb (r3),$'0 + blt 1f + cmpb (r3),$'9 + bgt 1f + jsr r5,cvnum; geta + br do +1: + mov $uids,r0 + jsr r5,fopen; ubuf + bec 1f + jsr r5,mesg; ; .even + sys exit +1: + mov r3,r2 +2: + jsr r5,getc; ubuf + bcc 3f +who: + jsr r5,mesg; ; .even + sys exit +3: + cmp r0,$': + beq 3f + cmpb (r2)+,r0 + beq 2b +2: + jsr r5,getc; ubuf + bcs who + cmp r0,$'\n + bne 2b + br 1b +3: + tstb (r2) + bne 2b +3: + jsr r5,getc; ubuf + cmpb r0,$': + bne 3b + jsr r5,cvnum; getc +do: + sub $2,r4 + mov r1,0f+2 + tst (r5)+ +1: + mov (r5)+,0f + sys chown; 0:..; 0 + bec 2f + mov 0b,r0 + mov r0,0f + clr 0f+2 +3: + tstb (r0)+ + beq 3f + inc 0f+2 + br 3b +3: + mov $1,r0 + sys write; 0:..; .. + jsr r5,mesg; ; .even +2: + dec r4 + bgt 1b + sys exit + +cvnum: + clr r1 +1: + jsr r5,*(r5); ubuf + bcs 1f + sub $'0,r0 + cmp r0,$9. + bhi 1f + mpy $10.,r1 + add r0,r1 + br 1b +1: + tst (r5)+ + rts r5 + +geta: + movb (r3)+,r0 + tst (r5)+ + rts r5 + +uids: + + .bss +ubuf: .=.+518. +buf + cmpb r0,$': + bne 3b + jsr r5,cvnum; getc +do: + sub $2,r4 + mov r1,0f+2 + tst (r5)+ +1: + mov (r5)+,0f + sys chown; 0:..; 0 + bec 2f + mov 0b,r0 + mov r0,0f + clr 0f+2 +3: + tstb (r0)+ + beq 3f + inc 0f+2 + br 3b +3: + mov $1,r0 + sys write; 0:..; .. + jsr r5,mesg; ; .even +2: + dec r4 + bgt 1b + sys exit + +cvnum: + clr r1 +1: + jsr r5,*(r5); ubuf + bcs 1f + sub $'0,r0 + cmp r0,$9. + bhi 1f + mpy $10.,r1 + add r0,r1 + br 1b +1: + tst (r5)+ + rts r5 + +geta: + movb (r3)+, \ No newline at end of file -- 2.20.1