/ u2 -- unix syslink: / name1, name2 jsr r0,arg2 / u.namep has 1st arg u.off has 2nd jsr r0,namei / find the i-number associated with the 1st / path name br error9 / cannot be found jsr r0,iget / get the i-node into core mov (sp)+,u.namep / u.namep points to 2nd name mov r1,-(sp) / put i-number of name1 on the stack (a link / to this file is to be created) mov cdev,-(sp) / put i-nodes device on the stack jsr r0,isdir / is it a directory jsr r0,namei / no, get i-number of name2 br .+4 / not found so r1-i-number of current directory / ii = i-number of current directory br error9 / file already exists., error cmp (sp)+,cdev / u.dirp now points to end of current directory bne error9 mov (sp),u.dirbuf / i-number of name1 into u.dirbuf jsr r0,mkdir / make directory entry for name2 in current /directory mov (sp)+,r1 / r1 has i-number of name1 jsr r0,iget / get i-node into core incb i.nlks / add 1 to its number of links jsr r0,setimod / set the i-node modified flag sysret9: jmp sysret / see 'sysret' routine error9: jmp error / see 'error' routine isdir: / if the i-node whose i-number is in r1 is a directory there is an / error unless super user made the call tstb u.uid / super user beq 1f / yes, don't care mov ii,-(sp) / put current i-number on stack jsr r0,iget / get i-node into core (i-number in r1) bit $40000,i.flgs / is it a directory bne error9 / yes, error mov (sp)+,r1 / no, put current i-number in r1 (ii) jsr r0,iget / get it back in 1: rts r0 sysunlink: / name - remove link name jsr r0,arg; u.namep / u.namep points to name jsr r0,namei / find the i-number associated with the path name br error9 / not found mov r1,-(sp) / put its i-number on the stack jsr r0,isdir / is it a directory clr u.dirbuf / no, clear the location that will get written / into the i-number portion of the entry sub $10.,u.off / move u.off back 1 directory entry jsr r0,wdir / free the directory entry