A2osX/SYS/KERNEL.S.PWD.txt
2023-11-12 14:20:15 +01:00

190 lines
3.6 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 .EQ JMP.X1A
* >PULLW FORPNT
* >PULLA UID
* jmp JMP.X
*/--------------------------------------
* # GetGRGID
* ## C
* `int getgrgid(short int gid, S.GRP *group);`
* ## ASM
* `>PUSHB gid`
* `>PUSHW group`
* `>SYSCALL getpwname`
* ## RETURN VALUE
*\--------------------------------------
K.GetGRGID .EQ JMP.X1A
* >PULLW FORPNT
* >PULLA GID
* jmp JMP.X
*/--------------------------------------
* # CloseSession
* ## C
* `int closesession(short int hSID);`
* ## ASM
* `>PUSHB hSID`
* `>SYSCALL CloseSession`
* ## RETURN VALUE
*\--------------------------------------
K.CloseSession .EQ JMP.X
*/--------------------------------------
* # OpenSession
* ## C
* `short int hSID opensession(const char *name, const char *passwd);`
* ## ASM
* `>PUSHW name`
* `>PUSHW passwd`
* `>SYSCALL OpenSession`
* ## RETURN VALUE
*\--------------------------------------
K.OpenSession .EQ JMP.X2
* >PULLW FORPNT passwd
* >PULLW TXTPTR name
* jmp JMP.X
*/--------------------------------------
* # GetPWName
* ## C
* `int getpwname(const char* name, S.PW *passwd);`
* ## ASM
* `>PUSHW name`
* `>PUSHW passwd`
* `>SYSCALL getpwname`
* ## RETURN VALUE
*\--------------------------------------
K.GetPWName .EQ JMP.X2
* >PULLW FORPNT
* >PULLW TXTPTR
* jmp JMP.X
*/--------------------------------------
* # GetGRName
* ## C
* `int getgrgid(const char* name, S.GRP *group);`
* ## ASM
* `>PUSHW name`
* `>PUSHW group`
* `>SYSCALL getpwname`
* ## RETURN VALUE
*\--------------------------------------
K.GetGRName .EQ JMP.X2
* >PULLW FORPNT
* >PULLW TXTPTR
* jmp JMP.X
*/--------------------------------------
* # PutPW
* ## C
* `int putpw(S.PW* passwd);`
* ## ASM
* `>PUSHW passwd`
* `>SYSCALL putpw`
* ## RETURN VALUE
*\--------------------------------------
K.PutPW
*/--------------------------------------
* # PutGR
* ## C
* `int putgr(S.GRP *group);`
* ## ASM
* `>PUSHW group`
* `>SYSCALL putgr`
* ## RETURN VALUE
*\--------------------------------------
K.PutGR >PULLW TXTPTR
jsr JMP.X
bcc PWD.FlushFiles
rts
*--------------------------------------
PWD.FlushFiles
>LDYA PWD.UsrDBSize
ldx PWD.hUsrDB
clc
jsr PWD.Flush
bcc .1
rts
.1 >LDYA PWD.GrpDBSize
ldx PWD.hGrpDB
sec
PWD.Flush >STYA PWD.FileSize
>LDYAI PWD.ETCPASSWD
bcc .10
>LDYAI PWD.ETCGROUP
.10 >STYA PWD.FileName
>LDYA PWD.FileSize
jsr MEM.CopyToMain X = src Aux hMem
bcs .9
stx .8+1
>PUSHW PWD.FileName
>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
>PUSHA
lda .8+1
jsr K.getmemptr
>PUSHYA
>PUSHW PWD.FileSize
>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
*--------------------------------------
PWD.ETCPASSWD .AZ "${ROOT}etc/passwd"
PWD.hUsrDB .BS 1
PWD.UsrDBSize .BS 2
PWD.ETCGROUP .AZ "${ROOT}etc/group"
PWD.hGrpDB .BS 1
PWD.GrpDBSize .BS 2
PWD.FileSize .BS 2
PWD.FileName .BS 2
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.pwd
LOAD usr/src/sys/kernel.s
ASM