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
K.GetGRGID		>PULLW FORPNT
				>PULLB ZPPtr1+1

				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
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.DBSize
				ldx PWD.hDB
				jsr MEM.CopyToMain
				bcs .9

				stx .8+1

				>PUSHWI PWD.PWFILE
				>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.DBSize
				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
*/--------------------------------------
* # GetGRGID
* ## C
* `int getgrgid(short int gid, S.GRP *group);`
* ## ASM
* `>PUSHB gid`
* `>PUSHW group`
* `>SYSCALL getpwname`
* ## RETURN VALUE
*\--------------------------------------
*/--------------------------------------
* # GetGRName
* ## C
* `int getgrgid(const char* name, S.GRP *group);`
* ## ASM
* `>PUSHW name`
* `>PUSHW group`
* `>SYSCALL getpwname`
* ## RETURN VALUE
*\--------------------------------------
*/--------------------------------------
* # 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
*--------------------------------------
PWD.hDB			.BS 1
PWD.DBPtr		.BS 2
PWD.DBSize		.BS 2
PWD.PWFILE		.AZ "${ROOT}etc/passwd"
PWD.GRFILE		.AZ "${ROOT}etc/group"
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.PWD
LOAD USR/SRC/SYS/KERNEL.S
ASM
