.title ChOwn ; ; Change the owner and group of a file. ; ; SYNOPSIS ; ; stat = chown( name, owner, group) ; ; character name - zero byte terminated string with file name ; integer owner - integer for owner number ; integer group - integer for group number ; ; integer stat - OK | ERR ; ; local definitions ; ok=0 ; software tools OK return err=-3 ; software tools ERR return name=4 ; ap offset to name of file owner=8 group=12 ; ; local data ; .psect st_chown_data rel,con,gbl,noexe,wrt,rd,pic,noshr,usr,novec,long xpro: $xabpro mfab: $fab fna=buf,- fop=cif,- xab=xpro ; buf: .blkb 120 ; ; entry point ; .psect st_pure_code rel,con,lcl,exe,nowrt,rd,pic,shr,usr,novec,long .entry chown ^m<> pushal buf pushl name(ap) calls #2,mklocl ; convert to DEC format name pushal buf calls #1,upper ; crunch it to upper case pushal buf calls #1,length ; calculate length of string movl r0,r1 ; move length to safe place $fab_store fab=mfab,fns=r1 ; store length of string $create fab=mfab ; open file blbc r0,error ; low bit clear indicates error movw @group(ap),xab$w_grp+xpro ; set group number movw @owner(ap),xab$w_mbm+xpro ; set member number $close fab=mfab movl #ok,r0 ret error: movl #err,r0 ret .end