NEW AUTO 3,1 */-------------------------------------- * # GetPWUID * ## C * `int getpwuid(short int uid, S.PW *passwd);` * ## ASM * `PUSHB uid` * `>PUSHW passwd` * `>SYSCALL getpwuid` * ## RETURN VALUE *\-------------------------------------- K.GetPWUID */-------------------------------------- * # GetGRGID * ## C * `int getgrgid(short int gid, S.GRP *group);` * ## ASM * `>PUSHB gid` * `>PUSHW group` * `>SYSCALL getpwname` * ## RETURN VALUE *\-------------------------------------- K.GetGRGID >PULLW FORPNT >PULLB ZPPtr1+1 UID/GID jmp K.SYSCALL.JMPX */-------------------------------------- * # GetPWName * ## C * `int getpwname(const char* name, S.PW *passwd);` * ## ASM * `>PUSHW name` * `>PUSHW passwd` * `>SYSCALL getpwname` * ## RETURN VALUE *\-------------------------------------- K.GetPWName */-------------------------------------- * # GetGRName * ## C * `int getgrgid(const char* name, S.GRP *group);` * ## ASM * `>PUSHW name` * `>PUSHW group` * `>SYSCALL getpwname` * ## RETURN VALUE *\-------------------------------------- K.GetGRName >PULLW FORPNT >PULLW TXTPTR jmp K.SYSCALL.JMPX */-------------------------------------- * # PutPW * ## C * `int putpw( S.PW* passwd );` * ## ASM * `>PUSHW passwd` * `>SYSCALL putpw` * ## RETURN VALUE *\-------------------------------------- K.PutPW >PULLW TXTPTR jsr K.SYSCALL.JMPX bcc K.FlushEtcPasswd rts *-------------------------------------- K.FlushEtcPasswd >LDYA PWD.UsrDBSize ldx PWD.hUsrDB jsr MEM.CopyToMain bcs .9 stx .8+1 >PUSHWI PWD.ETCPASSWD >PUSHBI O.WRONLY+O.CREATE >PUSHBI S.FI.T.TXT >PUSHWZ Aux type >SYSCALL2 FOpen bcc .1 pha jsr .8 pla sec .9 rts .1 sta .7+1 >PUSHW PWD.UsrDBSize lda .8+1 jsr K.getmemptr >PUSHYA lda .7+1 >SYSCALL2 FWrite bcc .7 pha jsr .7 pla sec rts .7 lda #$ff SELF MODIFIED >SYSCALL2 fclose .8 lda #$ff jmp K.freemem SELF MODIFIED */-------------------------------------- * # PutGR * ## C * `int putgr(S.GRP *group);` * ## ASM * `>PUSHW group` * `>SYSCALL putgr` * ## RETURN VALUE *\-------------------------------------- K.PutGR >PULLW TXTPTR jsr K.SYSCALL.JMPX bcc K.FlushEtcGroup rts *-------------------------------------- K.FlushEtcGroup rts */-------------------------------------- * # OpenSession * ## C * `short int hSID opensession(const char *name, const char *passwd);` * ## ASM * `>PUSHW name` * `>PUSHW passwd` * `>SYSCALL OpenSession` * ## RETURN VALUE *\-------------------------------------- K.OpenSession >PULLW FORPNT passwd >PULLW TXTPTR name jmp K.SYSCALL.JMPX */-------------------------------------- * # CloseSession * ## C * `int closesession(short int hSID);` * ## ASM * `>PUSHB hSID` * `>SYSCALL CloseSession` * ## RETURN VALUE *\-------------------------------------- K.CloseSession >PULLA jmp K.SYSCALL.JMPX *-------------------------------------- PWD.ETCPASSWD .AZ "${ROOT}etc/passwd" PWD.hUsrDB .BS 1 PWD.UsrDBPtr .BS 2 PWD.UsrDBSize .BS 2 PWD.ETCGROUP .AZ "${ROOT}etc/group" PWD.hGrpDB .BS 1 PWD.GrpDBPtr .BS 2 PWD.GrpDBSize .BS 2 *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.PWD LOAD USR/SRC/SYS/KERNEL.S ASM