home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / SYSPC22.ZIP / MAINR2.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-04-13  |  5.0 KB  |  237 lines

  1. function reedit (var m:message; g:boolean):boolean;
  2. begin
  3.   if fseditor in urec.config
  4.     then reedit:=ansireedit (m,g)
  5.     else reedit:=linereedit (m,g);
  6.   trimmessage (m)
  7. end;
  8.  
  9. function editor (var m:message; gettitle:boolean):integer;
  10.  
  11.   function getthetitle:boolean;
  12.   begin
  13.  
  14.     m.anon:=false;
  15.     getthetitle:=true;
  16.     if gettitle then begin
  17.       buflen:=30;
  18.       writestr (^M^M'Subject: &');
  19.       if length(input)=0 then begin
  20.         getthetitle:=false;
  21.         exit
  22.       end;
  23.       m.title:=input;
  24. senttol:='ALL';
  25. IF sendTOISTRU THEN Writestr ('To [Return=All]: &');
  26. if sendtoistru then if length(input)>0 then   senttol:=input;
  27.  
  28.       if (ulvl>=anonymouslevel) and (not feed) then begin
  29.         buflen:=5;
  30.         writestr ('Anonymous Message? *');
  31.         if yes then m.anon:=true;
  32.       end
  33.     end;
  34.   end;
  35.  
  36. begin
  37.  
  38.   editor:=-1;
  39.   m.numlines:=0;
  40.   if getthetitle
  41.     then if reedit(m,gettitle)
  42.       then editor:=maketext(m)
  43. end;
  44.  
  45. procedure seekbdfile (n:integer);
  46. begin
  47.   seek (bdfile,n);
  48.   seek (bifile,n); che
  49. end;
  50.  
  51. procedure writebdfile (var bd:boardrec);
  52. begin
  53.   write (bdfile,bd);
  54.   write (bifile,bd.shortname)
  55. end;
  56.  
  57. procedure writecurboard;
  58. begin
  59.   seekbdfile (curboardnum);
  60.   writebdfile (curboard); che
  61. end;
  62.  
  63. procedure assignbdfile;
  64. begin
  65.   assign (bdfile,boarddir+'boarddir');
  66.   assign (bifile,boarddir+'bdindex')
  67. end;
  68.  
  69. procedure openbdfile; { FORWARD }
  70. var i:integer;
  71. begin
  72.   closebdfile;
  73.   assignbdfile;
  74.   reset (bdfile);
  75.   i:=ioresult;
  76.   reset (bifile);
  77.   i:=i or ioresult;
  78.   if i<>0 then formatbdfile
  79. end;
  80.  
  81. procedure formatbdfile; { FORWARD }
  82. begin
  83.   close (bdfile);
  84.   close (bifile);
  85.   assignbdfile;
  86.   rewrite (bdfile);
  87.   rewrite (bifile)
  88. end;
  89.  
  90. procedure closebdfile; { FORWARD }
  91. begin
  92.   close (bdfile);
  93.   close (bifile)
  94. end;
  95.  
  96. overlay procedure addnews;
  97. var newline:newsrec;
  98.     r:integer;
  99.     k:newsrec;
  100.     nfile:file of newsrec;
  101.     numnews,cnt:integer;
  102.     m:message;
  103. begin
  104.   writehdr ('Adding to the news');
  105.   Writestr ('Title: *');
  106.   newline.title:=input;
  107.   Writestr ('Level: *');
  108.   newline.level:=valu(input);
  109.   newline.date:=datestr;
  110.   newline.time:=timestr;
  111.   newline.where:=editor (m,false);
  112.   if newline.where<0 then exit;
  113.   r:=ioresult;
  114.   assign (nfile,'News');
  115.   reset (nfile);
  116.   r:=ioresult;
  117.   if r<>0
  118.     then
  119.       begin
  120.         if r<>1 then writeln ('Error ',r,' opening news file; recreating.');
  121.         rewrite (nfile);
  122.         write (nfile,newline);
  123.         numnews:=0
  124.       end
  125.     else
  126.       begin
  127.         numnews:=filesize(nfile);
  128.         for cnt:=numnews-1 downto 0 do
  129.           begin
  130.             seek (nfile,cnt);
  131.             read (nfile,k);
  132.             seek (nfile,cnt+1);
  133.             write (nfile,k)
  134.           end;
  135.         che;
  136.         seek (nfile,0);
  137.         write (nfile,newline)
  138.       end;
  139.   writeln ('News added.  News items: ',numnews+1);
  140.   writelog (2,1,'');
  141.   close (nfile)
  142. end;
  143.  
  144. overlay procedure sendmailto (uname:mstr; anon:boolean);
  145. var un:integer;
  146.     me:message;
  147.     line:integer;
  148.     u:userrec;
  149. begin
  150.   if length(uname)=0 then exit;
  151.   un:=lookupuser (uname);
  152.   if un=0 then writeln ('User not found.') else begin
  153.     if anon and (ulvl<sysoplevel) then uname:=anonymousstr;
  154.     seek (ufile,un);
  155.     read (ufile,u);
  156.     if u.emailannounce>-1 then begin
  157.       writehdr (u.handle+'''s Announcement');
  158.       printtext (u.emailannounce)
  159.     end;
  160.     writehdr ('Sending mail to '+uname);
  161.     line:=editor(me,true);
  162.     if line>=0 then addmail (un,line,me)
  163.   end
  164. end;
  165.  
  166. overlay procedure addfeedback (var m:mailrec);
  167. var ffile:file of mailrec;
  168. begin
  169.   assign (ffile,'Feedback');
  170.   reset (ffile);
  171.   if ioresult<>0 then begin
  172.     close (ffile);
  173.     rewrite (ffile)
  174.   end;
  175.   seek (ffile,filesize(ffile));
  176.   write (ffile,m);
  177.   close (ffile);
  178.   newfeedback:=newfeedback+1;
  179. end;
  180.  
  181. overlay procedure ensureclosed;
  182. var cnt:integer;
  183.     r:regs;
  184. begin
  185.   stoptimer (numminsidle);
  186.   stoptimer (numminsused);
  187.   writestatus;
  188.   textclose (ttfile)
  189. end;
  190.  
  191. overlay procedure offhook;
  192. begin
  193.   sendmodemstr (offhookmodem,true);
  194. end;
  195.  
  196. overlay procedure answer;
  197. begin
  198.   sendmodemstr (answermodem,true);
  199. end;
  200.  
  201. overlay procedure resetit;
  202. begin
  203.   sendmodemstr (resetmodem,true);
  204.   end;
  205.  
  206. overlay procedure hangupmodem;
  207. var tries:integer;
  208. begin
  209.   tries:=0;
  210.   while carrier and (tries<5) do begin
  211.     hangup;
  212.     if match(modemhangupstr,'DTR') then async_close else
  213.     sendmodemstr (modemhangupstr,false);
  214.     tries:=tries+1
  215.   end;
  216.   setparam (usecom,baudrate,parity)
  217. end;
  218.  
  219. overlay procedure setupmodem;
  220. begin
  221.   if carrier then exit;
  222.   Writeln (usr,^M^J'*> Modem Set-Up <*');
  223.   Writeln (usr,^M^J'*> Resetting Parameters <*'^M);
  224.   sendmodemstr (resetmodem,true);
  225.   writeln (usr,^M^J'*> Setting up the modem <*'^M^J^J);
  226.   sendmodemstr (modemsetupstr,true)
  227. end;
  228.  
  229. procedure disconnect;
  230. begin
  231.   if online then hangupmodem;
  232.   online:=true;
  233.   writelog (0,3,'');
  234.   if unum>0 then updateuserstats;
  235.   disconnected:=true
  236. end;
  237.