home *** CD-ROM | disk | FTP | other *** search
- / rmdir -- unlink directory
-
- mov (sp)+,r5
- tst (sp)+
-
- loop:
- dec r5
- ble done
- mov (sp)+,r1
- mov $name,r2
- clr r0
- 1:
- inc r0
- movb (r1)+,(r2)+
- bne 1b
- dec r2
- dec r0
- mov r0,size
- cmp r2,$name
- beq error
- sys stat; name; stbuf
- bes error
- bic $!60000,stbuf+4
- cmp $40000,stbuf+4
- bne error
- cmpb -1(r2),$'.
- bne 1f
- cmp r2,$name+1
- beq error
- cmpb -2(r2),$'/
- beq error
- cmpb -2(r2),$'.
- bne 1f
- cmp r2,$name+2
- beq error
- cmpb -3(r2),$'/
- beq error
- 1:
- sys open; name; 0
- bes error
- mov r0,r1
- 1:
- mov r1,r0
- sys read; stbuf; 16.
- bes 1f
- tst r0
- beq 1f
- tst stbuf
- beq 1b
- cmpb stbuf+2,$'.
- bne error1
- tstb stbuf+3
- beq 1b
- cmpb stbuf+3,$'.
- bne error1
- tstb stbuf+4
- beq 1b
-
- error1:
- jsr pc,prname
- mov r1,r0
- sys close
- mov $1,r0
- sys write; mes1; emes1-mes1
- br loop
-
- 1:
- mov r1,r0
- sys close
- movb $'/,(r2)+
- movb $'.,(r2)+
- movb $'.,(r2)+
- clrb (r2)
- sys unlink; name
- clrb -(r2)
- sys unlink; name
- clrb -2(r2)
- sys unlink; name
- br loop
-
- error:
- jsr pc,prname
- mov $1,r0
- sys write; mes2; emes2-mes2
- br loop
-
- prname:
- mov $1,r0
- sys write; name; size:..
- rts pc
-
- done:
- sys exit
-
- mes1:
- < -- directory not empty\n>
- emes1:
- mes2:
- < ?\n>
- emes2:
- .even
-
- .bss
- name: .=.+40.
- stbuf: .=.+40.
-
-