Research V2 development
authorKen Thompson <ken@research.uucp>
Tue, 21 Nov 1972 22:51:32 +0000 (17:51 -0500)
committerKen Thompson <ken@research.uucp>
Tue, 21 Nov 1972 22:51:32 +0000 (17:51 -0500)
Work on file cmd/chown.s

Co-Authored-By: Dennis Ritchie <dmr@research.uucp>
Synthesized-from: v2

cmd/chown.s [new file with mode: 0644]

diff --git a/cmd/chown.s b/cmd/chown.s
new file mode 100644 (file)
index 0000000..f4417fb
--- /dev/null
@@ -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; <chown uid f1 ...\n\0>; .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; <Can't open /etc/uids\n\0>; .even
+       sys     exit
+1:
+       mov     r3,r2
+2:
+       jsr     r5,getc; ubuf
+       bcc     3f
+who:
+       jsr     r5,mesg; <Who?\n\0>; .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; <?\n\0>; .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:  </etc/passwd\0>
+
+       .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; <?\n\0>; .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