home *** CD-ROM | disk | FTP | other *** search
- overlay procedure showinfoforms (uname:mstr); { UNAME='' shows all }
- var lnum,un,cnt:integer;
- u:userrec;
-
- procedure showone(ask:boolean);
- var ff:text;
- me:message;
- k:char;
- found:boolean;
- z:integer;
- l:anystr;
- w:integer;
- begin
- begin
- input:='1';
- if ask then begin
- Writestr ('Which InfoForm(1-9): @');
- w:=valu(input);
- end else w:=1;
- if w<1 then exit;
- z:=u.infoform[w];
- if z=-1 then begin
- writestr ('That user has not filled out that infoform.');
- exit
- end;
- end;
- assign (ff,textfiledir+'Info'+input);
- reset (ff);
- if ioresult<>0 then begin
- close (ff);
- lnum:=ioresult;
- writeln ('That information form is not present.');
- exit
- end;
- reloadtext(u.infoform[w],me);
- writeln (^M,me.text[1],^M^M);
- lnum:=1;
- while not (break or eof(ff)) do begin
- read (ff,k);
- if k='*'
- then if lnum>me.numlines
- then writeln ('No answer')
- else begin
- lnum:=lnum+1;
- writeln (me.text[lnum])
- end
- else writechar (k);
- end;
- textclose (ff)
- end;
-
- begin
- if uname='' then begin
- writehdr ('Showing Infoform #1 for all users');
- seek (ufile,1);
- for cnt:=1 to numusers do begin
- read (ufile,u);
- if u.infoform[1]<>-1 then begin
- writestr (^M^M+u.handle+^M);
- showone(false);
- end;
- if xpressed then exit
- end
- end else begin
- un:=lookupuser (uname);
- if un=0 then writestr ('No such user.') else begin
- seek (ufile,un);
- read (ufile,u);
- showone(true);
- nosys:=true;
- end
- end
- end;
-
- overlay function validfname (name:lstr):boolean;
- const invalid:set of char=[#0..#31,'"',']','[',':','\','>','<','/','?','*',
- '|','+','=',';', ',' ,#127..#255];
- var p,cnt:integer;
- k:char;
- dotfound:boolean;
- begin
- validfname:=false;
- dotfound:=false;
- if (length(name)>12) or (length(name)<1) then exit;
- for p:=1 to length(name) do begin
- k:=upcase(name[p]);
- if k in invalid then exit;
- if k='.' then begin
- if dotfound then exit;
- dotfound:=true;
- if (p<length(name)-3) or (p=1) then exit
- end
- end;
- validfname:=not devicename(name)
- end;
-
- overlay function searchboard (name:sstr):integer;
- var bi:sstr;
- cnt:integer;
- begin
- seek (bifile,0);
- for cnt:=0 to filesize(bifile)-1 do begin
- read (bifile,bi);
- if match(bi,name) then begin
- searchboard:=cnt;
- exit
- end
- end;
- searchboard:=-1
- end;
-
- overlay function numfeedback:integer;
- var ffile:file of mailrec;
- begin
- assign (ffile,'Feedback');
- reset (ffile);
- if ioresult<>0 then begin
- numfeedback:=0;
- rewrite (ffile)
- end else numfeedback:=filesize (ffile);
- close (ffile)
- end;
-
- overlay procedure writestatus;
- const numtimers=3;
- type timerset=array [1..numtimers] of minuterec;
- var realt:timerset absolute numminsidle;
- t:timerset;
- cnt:integer;
- ss:systemstatus absolute numcallers;
- f:file of systemstatus;
- begin
- assign (f,'Status');
- rewrite (f);
- t:=realt;
- for cnt:=1 to numtimers do
- if realt[cnt].started
- then stoptimer (realt[cnt]);
- write (f,ss);
- realt:=t;
- close (f)
- end;
-
- overlay procedure trimmessage (var m:message);
- var cnt:integer;
- begin
- for cnt:=1 to m.numlines do
- while m.text[cnt][length(m.text[cnt])]=' ' do
- m.text[cnt][0]:=pred(m.text[cnt][0]);
- while (m.numlines>0) and (m.text[m.numlines]='') do
- m.numlines:=m.numlines-1
- end;
-