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

  1. procedure readurec;
  2. begin
  3.   seek (ufile,unum);
  4.   read (ufile,urec);
  5.   ulvl:=urec.level;
  6.   unam:=urec.handle
  7. end;
  8.  
  9. overlay function validuname (m:mstr):boolean;
  10. var n:integer;
  11. begin
  12.   if length(m)>0
  13.     then if (m<>'?') and (m[1]<>'#') and (m[1]<>'/') and (m[length(m)]<>'*')
  14.       then if valu(m)=0
  15.         then validuname:=true
  16.         else begin
  17.           validuname:=false;
  18.           writestr ('Invalid user name!')
  19.         end
  20. end;
  21.  
  22. overlay function lookupuname (n:integer):mstr;
  23. var u:userrec;
  24. begin
  25.   pushdevice;
  26.   if (n<1) or (n>numusers) then u.handle[0]:='* Unknown *' else begin
  27.     seek (ufile,n);
  28.     read (ufile,u)
  29.   end;
  30.   if length(u.handle)=0 then u.handle:='User Disappeared';
  31.   lookupuname:=u.handle;
  32.   popdevice
  33. end;
  34.  
  35. overlay function lookupuser (var uname:mstr):integer;
  36. var u:userrec;
  37.     cnt,s:integer;
  38.     wildcarding:boolean;
  39.     k:char;
  40. begin
  41.   lookupuser:=0;
  42.   if length(uname)=0 then exit;
  43.   if uname[1]='/' then exit;
  44.   if uname[1]='#' then delete (uname,1,1);
  45.   wildcarding:=uname[length(uname)]='*';
  46.   if wildcarding then uname[0]:=pred(uname[0]);
  47.   val (uname,cnt,s);
  48.   if (s=0) and (cnt>0) and (cnt<=numusers) then begin
  49.     seek (ufile,cnt);
  50.     read (ufile,u);
  51.     if length (u.handle)>0 then begin
  52.       lookupuser:=cnt;
  53.       uname:=u.handle
  54.     end;
  55.     exit
  56.   end;
  57.   seek (ufile,1);
  58.   for cnt:=1 to numusers do
  59.     begin
  60.       read (ufile,u);
  61.       if wildcarding
  62.         then if match(copy(u.handle,1,length(uname)),uname)
  63.           then
  64.             begin
  65.               write (^B,u.handle,' (Y/N/X): ');
  66.               repeat
  67.                 k:=readchar
  68.               until hungupon or (k<>#0);
  69.               case upcase(k) of
  70.                 'Y':begin
  71.                       lookupuser:=cnt;
  72.                       uname:=u.handle;
  73.                       exit
  74.                     end;
  75.                  'X':exit
  76.               end
  77.             end
  78.           else
  79.         else if match (u.handle,uname)
  80.           then
  81.             begin
  82.               lookupuser:=cnt;
  83.               uname:=u.handle;
  84.               exit
  85.             end
  86.     end
  87. end;
  88.  
  89. overlay function adduser (var u:userrec):integer;
  90. var un:userrec;
  91.     num,cnt:integer;
  92.     level:integer;
  93.     handle:mstr;
  94.     password:sstr;
  95.     C:integer;
  96. label found;
  97. begin
  98.   num:=numusers+1;
  99.   for cnt:=1 to numusers do begin
  100.     seek (ufile,cnt);
  101.     read (ufile,un);
  102.     if length(un.handle)=0 then
  103.       begin
  104.         num:=cnt;
  105.         goto found
  106.       end
  107.   end;
  108.   if num>maxusers then begin
  109.     adduser:=-1;
  110.     exit
  111.   end;
  112.   numusers:=num;
  113.   found:
  114.   handle:=u.handle;
  115.   level:=u.level;
  116.   password:=u.password;
  117.   fillchar (u,sizeof(u),0);
  118.   u.config:=[lowercase,eightycols,linefeeds,postprompts];
  119.   u.udlevel:=defudlevel;
  120.   u.udpoints:=defudpoints;
  121.   u.emailannounce:=-1;
  122.   for c:=1 to 9 do
  123.   u.infoform[c]:=-1;
  124.   u.displaylen:=25;
  125.   u.handle:=handle;
  126.   u.level:=level;
  127.   u.password:=password;
  128.   u.gflvl:=defgflevel;
  129.   u.votey:=0;
  130.   u.voten:=0;
  131.   u.lastmessages:=0;
  132.   u.lastups:=0;
  133.   seek (ufile,num);
  134.   write (ufile,u);
  135.   adduser:=num
  136. end;
  137.  
  138. overlay procedure delallmail (n:integer);
  139. var oldunum,cnt,delled:integer;
  140.     m:mailrec;
  141.     u:userrec;
  142.     c:integer;
  143. begin
  144.   oldunum:=unum;
  145.   unum:=n;
  146.   cnt:=-1;
  147.   delled:=0;
  148.   repeat
  149.     cnt:=searchmail(cnt);
  150.     if cnt>0 then begin
  151.       delmail(cnt);
  152.       cnt:=cnt-1;
  153.       delled:=delled+1
  154.     end
  155.   until cnt=0;
  156.   unum:=oldunum;
  157.   if delled>0 then writeln (^B'Mail deleted: ',delled);
  158.   seek (ufile,n);
  159.   read (ufile,u);
  160.   for c:=1 to 9 do
  161.   deletetext (u.infoform[c]);
  162.   deletetext (u.emailannounce)
  163. end;
  164.  
  165. overlay function getpassword:boolean;
  166. var t:sstr;
  167. begin
  168.   getpassword:=false;
  169.   dots:=false;
  170.   buflen:=15;
  171.   getstr;
  172.   if input=''
  173.     then exit
  174.     else begin
  175.       t:=input;
  176.       dots:=true;
  177.       writestr ('Re-enter for verification:');
  178.       if not match(t,input) then begin
  179.         writeln ('They don''t match!');
  180.         getpassword:=hungupon;
  181.         exit
  182.       end;
  183.       urec.password:=t;
  184.       getpassword:=true
  185.     end
  186. end;
  187.  
  188. overlay function checkpassword (var u:userrec):boolean;
  189. var tries:integer;
  190. begin
  191.   tries:=0;
  192.   checkpassword:=true;
  193.   repeat
  194.     splitscreen (5);
  195.     top;
  196.     writeln (usr,'Password Entry');
  197.     writeln (usr,'User name: ',u.handle);
  198.     writeln (usr,'Password: ',u.password);
  199.     write (usr,'Has entered so far: ');
  200.     bottom;
  201.     dots:=true;
  202.     writestr (^M'Password please:');
  203.     unsplit;
  204.     if hungupon then begin
  205.       checkpassword:=false;
  206.       exit
  207.     end;
  208.     if match(input,u.password)
  209.       then exit
  210.       else tries:=tries+1
  211.   until tries>3;
  212.   checkpassword:=false
  213. end;
  214.  
  215. procedure deleteuser (n:integer);
  216. var u:userrec;
  217. begin
  218.   delallmail (n);
  219.   fillchar (u,sizeof(u),0);
  220.   seek (ufile,n);
  221.   write (ufile,u)
  222. end;
  223.  
  224. procedure writeurec;
  225. begin
  226.   if unum<1 then exit;
  227.   urec.level:=ulvl;
  228.   urec.handle:=unam;
  229.   seek (ufile,unum);
  230.   write (ufile,urec)
  231. end;
  232.  
  233.