{PICS0I.INC Pascal Integrated Communications System Overlays} { 6/19/87 Ver 1.6 Copyright 1987 by Les Archambault} overlay Procedure SysopCmds(Var update : boolean); Var Ch : Char; work:filename; this:areaptr; begin repeat Writeln(USR); st:=prompt('Sysop Message command

',80, 'ES?'); if length(st)=1 then ch:=st[1] else ch:='?'; case ch of 'D': begin summ_rec.status:=deleted; summ_rec.num_prev:=0; end; 'H': summ_rec.status:=restricted; 'I': summ_rec.status := private; 'M': begin repeat this:=areabase; work:=prompt('Message Area ',12,'ES?M'); if work='?' then begin writeln(usr,'Available Message Areas:'); writeln(usr); while (not brk) and (this<>nil) do begin writeln(usr,this^.areaname); this:=this^.next; end; end; this:=areabase; {set up to find name match} while (this<>nil) and (this^.areaname<>work) do this:=this^.next; until (work=this^.areaname) or (brk) or (not online); summ_rec.area:=this^.area; end; 'N': begin if summ_rec.num_prev=0 then summ_rec.num_prev:=255 else summ_rec.num_prev:=0; if summ_rec.num_prev=255 then write(usr,'NOT '); writeln(usr,'subject to purge.'); end; 'P': summ_rec.status := public; 'R': summ_rec.status := read else Writeln(USR, 'elete, ide, prvate, ove, o Purge,

ublic, ead uit') end until (not online) or (ch in ['D','H','I','M','N','P','R','Q']); update := true; end; {SysopCmds} overlay procedure edit_user(fn:Firstname;Ln:Lastname); { Display and edit user record } type section_rec= record sdrive:char; suser:integer; saccs:integer; confnum:integer; sname:filename; sdesc:strpr; mode:char; end; var sect_file:file of section_rec; sect_rec:section_rec; this:SectPtr; this1:AreaPtr; i,user_num,num: integer; ed_fn: firstname; ed_ln: lastname; key: StrName; temp_user_rec: user_list; found:boolean; procedure display_user; var disp_case, disp_nois: str3; str: StrTAD; begin with temp_user_rec do begin writeln(usr); writeln(usr); writeln(USR, ' Name : ', fn, ' ', ln); writeln(USR, '1 Computer : ', ad); writeln(USR, '2 City : ', cy); writeln(USR, '3 State : ', st); writeln(USR, '4 Phone : ', ph); writeln(USR, '5 Password : ', pw); writeln(USR, '6 Acc. level: ', access); writeln(USR, '7 Time Limit: ', limit); writeln(USR, '8 Nulls : ', nulls); if shift_lock then disp_case := 'ON' else disp_case := 'OFF'; writeln(USR, '9 Shift lock: ', disp_case); if noisy then disp_nois := 'ON' else disp_nois := 'OFF'; writeln(USR, '10 Bell : ', disp_nois); write(USR, '11 Conferences: '); found:=false; for i:=1 to 7 do begin if test_bit(conf_flags,i) then begin write(usr,i,' '); found:=true; end; end; if not found then write(usr,'None'); writeln(usr); write(USR, '12 Columns : ', columns:6,' ':15,'19 Allow downloads: '); if test_bit(flags,1) then writeln(usr,' No') else writeln(usr,'Yes'); write(USR, '13 Lines : ', lines:6,' ':15,'20 Allow private msgs: '); if test_bit(flags,2) then writeln(usr,' No') else writeln(usr,'Yes'); str:=intstr(laston[4],2)+'/'+intstr(laston[3],2)+'/'+intstr(laston[5],2); write(USR, ' Last on : ', str,' ':13,'21 Allow public msgs: '); if test_bit(flags,3) then writeln(usr,' No') else writeln(usr,'Yes'); write(USR, '14 On today : ', time_today:6,' ':15,'22 Allow any msgs: '); if test_bit(flags,4) then writeln(usr,' No') else writeln(usr,'Yes'); write(USR, '15 On total : ', time_total:6,' ':15,'23 Exempt User purge: '); if test_bit(flags,5) then writeln(usr,'Yes') else writeln(usr,' No'); writeln(USR, '16 Last high : ', lasthi:6); writeln(USR, '17 Uploads : ', upload:6); writeln(USR, '18 Downloads : ', download:6); writeln(usr); end; end; begin { edit_user } OK:=true; SetSect(HomDrv,HomUsr); assign(sect_file,sect_name+ext); reset(sect_file); if (fn<>'') or (ln<>'') then begin ed_fn:=fn; ed_ln:=ln; end else begin ed_fn:=trim(prompt('First Name',len_fn,'ESN')); if ed_fn='SYSOP' then ed_ln:='' else if ed_fn<>'' then ed_ln:=trim(prompt('Last Name',len_ln,'ESN')); end; if ((ed_fn='') or (ed_ln='')) and (ed_fn<>'SYSOP') then OK:=false; if ok then begin key := pad(ed_ln, len_ln) + pad(ed_fn, len_fn); SearchKey(IdxF, user_num, key); end; if OK then begin if user_num = user_loc then temp_user_rec := user_rec else GetRec(DatF, user_num, temp_user_rec); if (temp_user_rec.access <= user_rec.access) or (not remote_copy) { Only edit users <= self } then begin repeat display_user; num:=strint(prompt('Number to change..[ 0 to abort, 99 to record] ',2,'EL')); if (num<>0) and (num<>99) then begin if num=11 then begin found:=false; writeln(usr,'Message Conferences:'); this1:=AreaBase; while this1<>nil do begin if this1^.areaconf>0 then begin found:=true; seek(sect_file,this1^.arearec); read(sect_file,sect_rec); writeln(usr,' ',this1^.areaconf,' ',this1^.areaname, ' ',sect_rec.sdesc); end; this1:=this1^.next; end; if not found then writeln(usr,'None.'); writeln(usr); found:=false; writeln(usr,'File Conferences:'); this:=SectBase; while this<>nil do begin if this^.sectconf>0 then begin found:=true; seek(sect_file,this^.sectrec); read(sect_file,sect_rec); writeln(usr,' ',this^.sectconf,' ',this^.sectname, ' ',sect_rec.sdesc); end; this:=this^.next; end; if not found then writeln(usr,'None.'); writeln(usr); end; if num<13 then change_user_params_A(num,temp_user_rec); if num>12 then change_user_params_B(num,temp_user_rec); end; until (num=0) or (num=99); if num<>0 then begin if user_num = user_loc then begin if not remote_copy then if Ask('Record new permenant record') then begin PutRec(DatF,user_num,temp_user_rec); writeln(usr,'Recording updated user record.'); end; user_rec := temp_user_rec; end else begin PutRec(DatF,user_num,temp_user_rec); writeln(usr,'Recording updated user record.'); end; end; end; end else writeln(USR, 'Name not found.'); close(sect_file); end; Procedure Dummy; {Force a new overlay file} begin end; { end of PICS0I.INC }