V5/usr/source/s2/rmdir.s

Find at most related files.
including files from this version of Unix.

/ 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.