chown.s

来自「UNIX v6源代码 这几乎是最经典的unix版本 unix操作系统设计和莱」· S 代码 · 共 106 行

S
106
字号
/ 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>; .even1:	add	$4,r5	mov	(r5),r3	cmpb	(r3),$'0	blt	1f	cmpb	(r3),$'9	bgt	1f	jsr	r5,cvnum; geta	br	do1:	mov	$uids,r0	jsr	r5,fopen; ubuf	bec	1f	jsr	r5,mesg; <Can't open /etc/uids\n\0>; .even	sys	exit1:	mov	r3,r22:	jsr	r5,getc; ubuf	bcc	3fwho:	jsr	r5,mesg; <Who?\n\0>; .even	sys	exit3:	cmp	r0,$':	beq	3f	cmpb	(r2)+,r0	beq	2b2:	jsr	r5,getc; ubuf	bcs	who	cmp	r0,$'\n	bne	2b	br	1b3:	tstb	(r2)	bne	2b3:	jsr	r5,getc; ubuf	cmpb	r0,$':	bne	3b	jsr	r5,cvnum; getcdo:	sub	$2,r4	mov	r1,0f+2	tst	(r5)+1:	mov	(r5),0f	mov	(r5)+,9f	sys	stat; 9:..; statb	movb	statb+8,0f+3	sys	chown; 0:..; 0	bec	2f	mov	0b,r0	mov	r0,0f	clr	0f+23:	tstb	(r0)+	beq	3f	inc	0f+2	br	3b3:	mov	$1,r0	sys	write; 0:..; ..	jsr	r5,mesg; <?\n\0>; .even2:	dec	r4	bgt	1b	sys	exitcvnum:	clr	r11:	jsr	r5,*(r5); ubuf	bcs	1f	sub	$'0,r0	cmp	r0,$9.	bhi	1f	mpy	$10.,r1	add	r0,r1	br	1b1:	tst	(r5)+	rts	r5geta:	movb	(r3)+,r0	tst	(r5)+	rts	r5uids:	</etc/passwd\0>	.bssstatb:	.=.+36.ubuf:	.=.+518.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?