1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-01-11 23:53:34 +00:00
2008-05-02 17:50:21 +00:00

57 lines
1.8 KiB
Plaintext

mov (sp)+,r1 / get i-number back
jsr r0,iget / get i-node
jsr r0,setimod / set modified flag
decb i.nlks / decrement the number of links
bgt sysret9 / if this was not the last link to file return
jsr r0,anyi / if it was, see if anyone has it open. Then
/ free contents of file and destroy it.
br sysret9
mkdir:
jsr r0,copyz; u.dirbuf+2; u.dirbuf+10. / clear this
mov u.namep,r2 / r2 points to name of directory entry
mov $u.dirbuf+2,r3 / r3 points to u.dirbuf+2
1: / put characters in the directory name in u.dirbuf+2 - u.dirbuf+10
movb (r2)+,r1 / move character in name to r1
beq 1f / if null, done
cmp r1,$'/ / is it a "/"?
beq error9 / yes, error
cmp r3,$u.dirbuf+10. / have we reached the last slot for
/ a char?
beq 1b / yes, go back
movb r1,(r3)+ / no, put the char in the u.dirbuf
br 1b / get next char
1:
mov u.dirp,u.off / pointer to empty current directory slot to
/u.off
wdir:
mov $u.dirbuf,u.base / u.base points to created file name
mov $10.,u.count / u.count = 10
mov ii,r1 / r1 has i-number of current directory
jsr r0,access; 1 / get i-node and set its file up for writing
jsr r0,writei / write into directory
rts r0
sysexec:
jsr r0,arg2 / arg0 in u.namep,arg1 on top of stack
jsr r0,namei / namei returns i-number of file named in
/ sysexec call in r1
br error9
jsr r0,iget / get i-node for file to be executed
bit $20,i.flgs / is file executable
beq error9
jsr r0,iopen / gets i-node for file with i-number given in
/ r1 (opens file)
bit $40,i.flgs / test user id on execution bit
beq 1f
tstb u.uid / test user id
beq 1f / super user
movb i.uid,u.uid / put user id of owner of file as process
/ user id
1:
mov (sp)+,r5 / r5 now contains address of list of pointers to
/ arguments to be passed
mov $1,u.quit / u.quit determines handling of quits;
/ u.quit = 1 take quit