home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / WWIV2.ZIP / NEWUSER.C < prev    next >
Text File  |  1995-12-17  |  17KB  |  797 lines

  1. #include "vars.h"
  2.  
  3. #pragma hdrstop
  4.  
  5. int check_name(char *nn)
  6. {
  7.   int ok,f,i;
  8.   char s[161],s1[161],s2[81];
  9.   long p,l;
  10.  
  11.   ok=1;
  12.   if (nn[strlen(nn)-1]==32)
  13.     ok=0;
  14.   if (nn[0]<65)
  15.     ok=0;
  16.   if (finduser(nn)!=0)
  17.     ok=0;
  18.   if (strchr(nn,'@')!=NULL)
  19.     ok=0;
  20.   if (strchr(nn,'#')!=NULL)
  21.     ok=0;
  22.  
  23.   if (!ok)
  24.     return(ok);
  25.  
  26.   sprintf(s,"%sTRASHCAN.TXT",syscfg.gfilesdir);
  27.   f=open(s,O_RDWR | O_BINARY);
  28.  
  29.   if (f<0)
  30.     return(ok);
  31.  
  32.   lseek(f,0L,SEEK_SET);
  33.   l=filelength(f);
  34.   p=0;
  35.   sprintf(s2," %s ",nn);
  36.   while ((p<l) && (ok)) {
  37.     lseek(f,p,SEEK_SET);
  38.     read(f,(void *)s,150);
  39.     i=0;
  40.     while ((i<150) && (s[i])) {
  41.       if (s[i]==13)
  42.     s[i]=0;
  43.       else
  44.     ++i;
  45.     }
  46.     s[150]=0;
  47.     p += (long) (i+2);
  48.     if (s[i-1]==1)
  49.       s[i-1]=0;
  50.     for (i=0; i<strlen(s); i++)
  51.       s[i]=upcase(s[i]);
  52.     sprintf(s1," %s ",s);
  53.     if (strstr(s2,s1)!=NULL)
  54.       ok=0;
  55.   }
  56.   close(f);
  57.   if (!ok)
  58.     hangup=1;
  59.  
  60.   return(ok);
  61. }
  62.  
  63. void input_name(void)
  64. {
  65.   int ok,count;
  66.  
  67.   count=0;
  68.   do {
  69.     nl();
  70.     ansic(3);
  71.     if (syscfg.sysconfig & sysconfig_no_alias)
  72.       pl(get_string(520));
  73.     else
  74.       pl(get_string(521));
  75.     prt(2,":");
  76.     mpl(30);
  77.     input(thisuser.name,30);
  78.     ok=check_name(thisuser.name);
  79.     if (!ok) {
  80.       nl();
  81.       ansic(6);
  82.       pl(get_string(522));
  83.       ++count;
  84.       if (count==3)
  85.         hangup=1;
  86.     }
  87.   } while ((!ok) && (!hangup));
  88. }
  89.  
  90. void input_realname(void)
  91. {
  92.   do {
  93.     nl();
  94.     ansic(3);
  95.     pl(get_string(523));
  96.     prt(2,":");
  97.     mpl(20);
  98.     inputl(thisuser.realname,20);
  99.  
  100.     if (thisuser.realname[0]==0) {
  101.       nl();
  102.       ansic(6);
  103.       pl(get_string(524));
  104.     }
  105.   } while ((thisuser.realname[0]==0) && (!hangup));
  106. }
  107.  
  108. void input_callsign(void)
  109. {
  110.   nl();
  111.   ansic(3);
  112.   pl(get_string(525));
  113.   ansic(3);
  114.   pl(get_string(526));
  115.   prt(2,":");
  116.   mpl(6);
  117.   input(thisuser.callsign,6);
  118. }
  119.  
  120. int valid_phone(char *phone)
  121. {
  122.   int i;
  123.  
  124.   if ((syscfg.sysconfig & sysconfig_free_phone)==0) {
  125.     if (strlen(phone)!=12)
  126.       return(0);
  127.     if ((phone[3]!='-') || (phone[7]!='-'))
  128.       return(0);
  129.     if ((phone[1]!='0') && (phone[1]!='1'))
  130.       return(0);
  131.     for (i=0; i<12; i++) {
  132.       if ((i!=3) && (i!=7)) {
  133.         if ((phone[i]<'0') || (phone[i]>'9')) {
  134.           return(0);
  135.         }
  136.       }
  137.     }
  138.   }
  139.   return(1);
  140. }
  141.  
  142. void input_phone(void)
  143. {
  144.   int ok,i;
  145.  
  146.   do {
  147.     nl();
  148.     ansic(3);
  149.     pl(get_string(527));
  150.     ansic(3);
  151.     pl(get_string(493));
  152.     prt(2,":");
  153.     mpl(12);
  154.     input(thisuser.phone,12);
  155.  
  156.     ok=valid_phone(thisuser.phone);
  157.     if (!ok) {
  158.       nl();
  159.       ansic(6);
  160.       pl(get_string(528));
  161.       ansic(6);
  162.       pl(get_string(529));
  163.     }
  164.   } while ((!ok) && (!hangup));
  165. }
  166.  
  167. void input_street(void)
  168. {
  169.   do {
  170.     nl();
  171.     ansic(3);
  172.     pl(get_string(530));
  173.     prt(2,":");
  174.     mpl(30);
  175.     inputl(thisuser.street,30);
  176.  
  177.     if (thisuser.street[0]==0) {
  178.       nl();
  179.       ansic(6);
  180.       pl(get_string(531));
  181.     }
  182.   } while ((thisuser.street[0]==0) && (!hangup));
  183. }
  184.  
  185. void input_city(void)
  186. {
  187.   do {
  188.     nl();
  189.     ansic(3);
  190.     pl(get_string(532));
  191.     prt(2,":");
  192.     mpl(30);
  193.     inputl(thisuser.city,30);
  194.  
  195.     if (thisuser.city[0]==0) {
  196.       nl();
  197.       ansic(6);
  198.       pl(get_string(533));
  199.     }
  200.   } while ((thisuser.city[0]==0) && (!hangup));
  201. }
  202.  
  203. void input_state(void)
  204. {
  205.   do {
  206.     nl();
  207.     ansic(3);
  208.     pl(get_string(534));
  209.     prt(2,":");
  210.     mpl(2);
  211.     input(thisuser.state,2);
  212.  
  213.     if (thisuser.state[0]==0) {
  214.       nl();
  215.       ansic(6);
  216.       pl(get_string(535));
  217.     }
  218.   } while ((thisuser.state[0]==0) && (!hangup));
  219. }
  220.  
  221. void input_country(void)
  222. {
  223.   do {
  224.     nl();
  225.     ansic(3);
  226.     pl(get_string(536));
  227.     prt(2,":");
  228.     mpl(3);
  229.     input(thisuser.country,3);
  230.  
  231.     if (thisuser.country[0]==0) {
  232.       nl();
  233.       ansic(6);
  234.       pl(get_string(537));
  235.     }
  236.   } while ((thisuser.country[0]==0) && (!hangup));
  237. }
  238.  
  239. void input_zipcode(void)
  240. {
  241.   do {
  242.     nl();
  243.     ansic(3);
  244.     pl(get_string(538));
  245.     prt(2,":");
  246.     mpl(10);
  247.     input(thisuser.zipcode,10);
  248.  
  249.     if (thisuser.zipcode[0]==0) {
  250.       nl();
  251.       ansic(6);
  252.       pl(get_string(539));
  253.     }
  254.   } while ((thisuser.zipcode[0]==0) && (!hangup));
  255. }
  256.  
  257. void input_dataphone(void)
  258. {
  259.   int ok,i;
  260.  
  261.   do {
  262.     nl();
  263.     pl("2You will be asked to enter your work number, this will");
  264.     pl("2used for verification purposes only, and will not be used");
  265.     pl("2afterwards for any other reason. If you have no work number");
  266.     pl("2enter in your data number, if you don't have a data number");
  267.     pl("2enter in your voice number again.");
  268.     ansic(3);
  269.     pl("3Please enter you 1WORK 3number in the form:");
  270.     ansic(3);
  271.     pl(get_string(493));
  272.     prt(2,":");
  273.     mpl(12);
  274.     input(thisuser.dataphone,12);
  275.  
  276.     ok=valid_phone(thisuser.dataphone);
  277.  
  278.     if (!ok) {
  279.       nl();
  280.       ansic(6);
  281.       pl(get_string(528));
  282.       ansic(6);
  283.       pl(get_string(529));
  284.     }
  285.   } while ((!ok) && (!hangup));
  286. }
  287.  
  288. void input_sex(void)
  289. {
  290.   nl();
  291.   prt(2,get_string(541));
  292.   thisuser.sex=onek("MF");
  293. }
  294.  
  295. void input_age(userrec *u)
  296. {
  297.   int a,ok,y,m,d;
  298.   char ag[10];
  299.  
  300.   do {
  301.     nl();
  302.     do {
  303.       nl();
  304.       prt(2,get_string(542));
  305.       mpl(2);
  306.       input(ag,2);
  307.       m=atoi(ag);
  308.     } while ((!hangup) && ((m>12) || (m<1)));
  309.     do {
  310.       nl();
  311.       prt(2,get_string(543));
  312.       mpl(2);
  313.       input(ag,2);
  314.       d=atoi(ag);
  315.     } while ((!hangup) && ((d>31) || (d<1)));
  316.     do {
  317.       nl();
  318.       prt(2,get_string(544));
  319.       mpl(2);
  320.       input(ag,2);
  321.       y=atoi(ag)+1900;
  322.       if (y==1919) {
  323.         nl();
  324.         prt(5,get_string(545));
  325.         if (!yn()) {
  326.           y=0;
  327.         }
  328.       }
  329.     } while ((!hangup) && (y<1905));
  330.     ok=1;
  331.     if (((m==2) || (m==9) || (m==4) || (m==6) || (m==11)) && (d==31))
  332.       ok=0;
  333.     if ((m==2) && (((y%4!=0) && (d==29)) || (d==30)))
  334.       ok=0;
  335.     if (!ok) {
  336.       nl();
  337.       ansic(6);
  338.       pl(get_string(546));
  339.     }
  340.     if (years_old((unsigned char)m, (unsigned char)d, (unsigned char)(y-1900))<5) {
  341.       nl();
  342.       pl(get_string(547));
  343.       ok=0;
  344.     }
  345.   } while ((!ok) && (!hangup));
  346.   u->month=(unsigned char) m;
  347.   u->day=(unsigned char) d;
  348.   u->year=(unsigned char) (y-1900);
  349.   u->age=years_old(u->month,u->day,u->year);
  350.   nl();
  351. }
  352.  
  353. void input_comptype(void)
  354. {
  355.   int i,ok,ct;
  356.   char c[5];
  357.  
  358.   do {
  359.    nl();
  360.    pl(get_string(275));
  361.    nl();
  362.    for (i=0; ctypes[i]; i++)
  363.      npr("%d. %s\r\n",i+1,ctypes[i]);
  364.    nl();
  365.    ansic(3);
  366.    pl(get_string(548));
  367.    ansic(3);
  368.    pl(get_string(549));
  369.    prt(2,":");
  370.    mpl(2);
  371.    input(c,2);
  372.    ct=atoi(c);
  373.  
  374.    ok=1;
  375.    if ((ct<1) || (ct>i))
  376.      ok=0;
  377.  
  378.   } while ((!ok) && (!hangup));
  379.   thisuser.comp_type=ct-1;
  380.   if (checkcomp("Ami"))
  381.     thisuser.colors[0]=4;
  382.   if (hangup)
  383.     thisuser.comp_type=0;
  384. }
  385.  
  386. void input_screensize(void)
  387. {
  388.   int ok,x,y;
  389.   char s[5];
  390.  
  391.   do {
  392.     nl();
  393.     ansic(3);
  394.     pl(get_string(550));
  395.     prt(2,":");
  396.     mpl(2);
  397.     input(s,2);
  398.     x=atoi(s);
  399.     if (s[0]==0)
  400.       x=80;
  401.  
  402.     if ((x<32) || (x>80))
  403.       ok=0;
  404.     else
  405.       ok=1;
  406.   } while ((!ok) && (!hangup));
  407.  
  408.   do {
  409.     nl();
  410.     ansic(3);
  411.     pl(get_string(551));
  412.     prt(2,":");
  413.     mpl(2);
  414.     input(s,2);
  415.     y=atoi(s);
  416.     if (s[0]==0)
  417.       y=25;
  418.  
  419.     if ((y<4) || (y>60))
  420.       ok=0;
  421.     else
  422.       ok=1;
  423.   } while ((!ok) && (!hangup));
  424.  
  425.   thisuser.screenchars=x;
  426.   thisuser.screenlines=y;
  427.   screenlinest=y;
  428. }
  429.  
  430. void input_pw(void)
  431. {
  432.   int ok;
  433.   char s[81];
  434.  
  435.   do {
  436.     nl();
  437.     ansic(3);
  438.     pl(get_string(552));
  439.     prt(2,":");
  440.     mpl(8);
  441.     input(s,8);
  442.  
  443.     ok=1;
  444.     if (strlen(s)<3)
  445.       ok=0;
  446.   } while ((!ok) && (!hangup));
  447.   if (ok)
  448.     strcpy(thisuser.pw,s);
  449.   else
  450.     pl(get_string(463));
  451. }
  452.  
  453.  
  454. void input_ansistat(void)
  455. {
  456.   int i,c,c2;
  457.   char ch;
  458.  
  459.   thisuser.sysstatus &= ~(sysstatus_ansi | sysstatus_color);
  460.   nl();
  461.   if (check_ansi()==1) {
  462.     outstr(get_string(553));
  463.   } else {
  464.     outstr("\x1b[0;34;3mTEST\x1b[C");
  465.     outstr("\x1b[0;30;45mTEST\x1b[C");
  466.     outstr("\x1b[0;1;31;44mTEST\x1b[C");
  467.     outstr("\x1b[0;32;7mTEST\x1b[C");
  468.     outstr("\x1b[0;1;5;33;46mTEST\x1b[C");
  469.     pl("\x1b[0;4mTEST\x1b[0m");
  470.     pl(get_string(554));
  471.     outstr(get_string(555));
  472.   }
  473.   if (yn()) {
  474.     thisuser.sysstatus |= sysstatus_ansi;
  475.     nl();
  476.     prt(5,get_string(556));
  477.     if (yn())
  478.       thisuser.sysstatus |= sysstatus_color;
  479.     else {
  480.       color_list();
  481.       nl();
  482.       prt(2,get_string(557));
  483.       ch=onek("\r1234567");
  484.       if (ch=='\r')
  485.         ch='7';
  486.       c=ch-'0';
  487.       c2=c << 4;
  488.       for (i=0; i<8; i++) {
  489.        if ((thisuser.bwcolors[i] & 0x70) == 0)
  490.      thisuser.bwcolors[i]=(thisuser.bwcolors[i] & 0x88) | c;
  491.        else
  492.      thisuser.bwcolors[i]=(thisuser.bwcolors[i] & 0x88) | c2;
  493.       }
  494.     }
  495.   }
  496. }
  497.  
  498. /*void input_ptag()
  499. {
  500.   pl("Would you like to enter a personal tagline? ");
  501.     if(yn())
  502.       {
  503.     nl();
  504.     pl("eYou may now enter your new tag");
  505.     prt(2,":");
  506.     inputl(thisuser.ptag,40);
  507.       }
  508. }
  509.  
  510. void input_sexp()
  511. {
  512.   char s4[2];
  513.   int j;
  514.  
  515.   do {
  516.     npr("Please enter your sexual preference - Nobody will see it -\r\n");
  517.     npr("1. Straight\r\n2. Gay\r\n3. Bi-Sexual\r\n4. Still under personal debate\r\n");
  518.     outstr(": ");
  519.     input(s4,1);
  520.     strcpy(thisuser.sex_type,s4);
  521.     j=atoi(s4);
  522.    } while((j==0) || (j>4));
  523. } */
  524.  
  525. void newuser(void)
  526. {
  527.   int i,ok;
  528.   char s[255],s1[81],ch;
  529.   userrec u;
  530.   long l1,l2;
  531.  
  532.   sprintf(s,get_stringx(1,25),date(),times(),curspeed);
  533.   sl1(0,"");
  534.   sl1(0,s);
  535.   if (status.users>=syscfg.maxusers) {
  536.     nl();
  537.     nl();
  538.     pl(get_string(558));
  539.     pl(get_string(559));
  540.     pl(get_string(560));
  541.     nl();
  542.     hangup=1;
  543.   }
  544.   if (syscfg.closedsystem) {
  545.     nl();
  546.     nl();
  547.     pl(get_string(561));
  548.     pl(get_string(562));
  549.     nl();
  550.     hangup=1;
  551.   }
  552.   if ((syscfg.newuserpw[0]!=0) && (incom)) {
  553.     nl();
  554.     nl();
  555.     ok=0;
  556.     i=0;
  557.     do {
  558.       outstr(get_string(563));
  559.       input(s,20);
  560.       if (strcmp(s,syscfg.newuserpw)==0)
  561.         ok=1;
  562.       else {
  563.         sprintf(s1,get_stringx(1,26),s);
  564.         sl1(0,s1);
  565.       }
  566.     } while ((!ok) && (!hangup) && (i++<4));
  567.     if (!ok)
  568.       hangup=1;
  569.   }
  570.  
  571.   memset(&thisuser, 0, sizeof(userrec));
  572.   memset(qsc, 0, syscfg.qscn_len);
  573.  
  574.   strcpy(thisuser.firston,date());
  575.   strcpy(thisuser.laston,get_string(564));
  576.   strcpy(&thisuser.macros[0][0],get_string(565));
  577.   strcpy(&thisuser.macros[1][0],get_string(566));
  578.   strcpy(&thisuser.macros[2][0],get_string(567));
  579.  
  580.   thisuser.screenlines=25;
  581.   thisuser.screenchars=80;
  582.   screenlinest=25;
  583.  
  584.   thisuser.sl=syscfg.newusersl;
  585.   thisuser.dsl=syscfg.newuserdsl;
  586.  
  587.   thisuser.ontoday=1;
  588.  
  589.   thisuser.restrict=syscfg.newuser_restrict;
  590.  
  591.   *qsc=999;
  592.   memset(qsc_n,0xff,((max_dirs+31)/32)*4);
  593.   memset(qsc_q,0xff,((max_subs+31)/32)*4);
  594.  
  595.   thisuser.sysstatus=sysstatus_pause_on_page | sysstatus_nscan_file_system;
  596.  
  597.   thisuser.gold=syscfg.newusergold;
  598.  
  599.   thisuser.colors[0]=15;
  600.   thisuser.colors[1]=11;
  601.   thisuser.colors[2]=14;
  602.   thisuser.colors[3]=5;
  603.   thisuser.colors[4]=31;
  604.   thisuser.colors[5]=2;
  605.   thisuser.colors[6]=140;
  606.   thisuser.colors[7]=9;
  607.   thisuser.colors[8]=1;
  608.   thisuser.colors[9]=3;
  609.  
  610.   thisuser.bwcolors[0]=7;
  611.   thisuser.bwcolors[1]=15;
  612.   thisuser.bwcolors[2]=15;
  613.   thisuser.bwcolors[3]=15;
  614.   thisuser.bwcolors[4]=112;
  615.   thisuser.bwcolors[5]=15;
  616.   thisuser.bwcolors[6]=143;
  617.   thisuser.bwcolors[7]=7;
  618.   thisuser.bwcolors[8]=7;
  619.   thisuser.bwcolors[9]=7;
  620.  
  621.   reset_act_sl();
  622.  
  623.   for (i=0; i<6; i++) {
  624.     ch=rand() % 36;
  625.     if (ch<10)
  626.       ch+='0';
  627.     else
  628.       ch+='A'-10;
  629.     thisuser.pw[i]=ch;
  630.   }
  631.   thisuser.pw[6]=0;
  632.  
  633.  
  634.   if (!hangup) {
  635.     if (incom) {
  636.       if (printfile("SYSTEM.MSG"))
  637.     sl1(0,get_stringx(1,27));
  638.       if (printfile("NEWUSER.MSG"))
  639.     sl1(0,get_stringx(1,28));
  640.     }
  641.     input_ansistat();
  642.     input_name();
  643.     input_realname();
  644.     input_phone();
  645.     if (syscfg.sysconfig & sysconfig_extended_info) {
  646.       input_street();
  647.       input_city();
  648.       input_state();
  649.       input_country();
  650.       input_zipcode();
  651.       input_dataphone();
  652.     }
  653.     input_callsign();
  654.     input_sex();
  655.     input_age(&thisuser);
  656.     input_comptype();
  657.     input_screensize();
  658.  
  659.     if (numed && (thisuser.sysstatus & sysstatus_ansi)) {
  660.       nl();
  661.       prt(5,get_string(568));
  662.       if (yn())
  663.         select_editor();
  664.     }
  665.  
  666.     prt(5,get_string(569));
  667.     if (yn()) {
  668.       nl();
  669.       pl(get_string(570));
  670.       nl();
  671.       i=get_protocol(xf_down);
  672.       if (i)
  673.         thisuser.defprot=i;
  674.     }
  675. /*    input_ptag();
  676.     input_sexp();*/
  677.     nl();
  678.     outstr(get_string(571)); pl(thisuser.pw);
  679.     nl();
  680.     prt(5,get_string(572));
  681.     if (yn())
  682.       input_pw();
  683.   }
  684.  
  685.   if (!hangup)
  686.     do {
  687.       nl();
  688.       nl();
  689.       outstr(get_string(573)); pl(thisuser.name);
  690.       outstr(get_string(574)); pl(thisuser.realname);
  691.       outstr(get_string(575)); pl(thisuser.callsign);
  692.       outstr(get_string(576)); pl(thisuser.phone);
  693.       outstr(get_string(577)); npr("%c\r\n",thisuser.sex);
  694.       outstr(get_string(578)); npr("%02d/%02d/%02d\r\n",
  695.         (int) thisuser.month, (int) thisuser.day, (int) thisuser.year);
  696.       outstr(get_string(579)); pl(ctypes[thisuser.comp_type]);
  697.       outstr(get_string(580)); npr("%d X %d\r\n",
  698.         thisuser.screenchars, thisuser.screenlines);
  699.       outstr(get_string(581)); pl(thisuser.pw);
  700.       if (syscfg.sysconfig & sysconfig_extended_info) {
  701.         outstr(get_string(582)); pl(thisuser.street);
  702.         outstr(get_string(583)); pl(thisuser.city);
  703.         outstr(get_string(584)); pl(thisuser.state);
  704.         outstr(get_string(585)); pl(thisuser.country);
  705.         outstr(get_string(586)); pl(thisuser.zipcode);
  706.         outstr(get_string(587)); pl(thisuser.dataphone);
  707.       }
  708.       nl();
  709.       pl(get_string(588));
  710.       nl();
  711.       nl();
  712.       if (syscfg.sysconfig & sysconfig_extended_info) {
  713.         prt(2,get_string(589));
  714.         ch=onek("Q123456789ABCDEF");
  715.       } else {
  716.         prt(2,get_string(590));
  717.         ch=onek("Q123456789");
  718.       }
  719.       ok=0;
  720.       switch(ch) {
  721.         case 'Q': ok=1; break;
  722.         case '1': input_name(); break;
  723.         case '2': input_realname(); break;
  724.         case '3': input_callsign(); break;
  725.         case '4': input_phone(); break;
  726.         case '5': input_sex(); break;
  727.         case '6': input_age(&thisuser); break;
  728.         case '7': input_comptype(); break;
  729.         case '8': input_screensize(); break;
  730.         case '9': input_pw(); break;
  731.         case 'A': input_street(); break;
  732.         case 'B': input_city(); break;
  733.         case 'C': input_state(); break;
  734.         case 'D': input_country(); break;
  735.         case 'E': input_zipcode(); break;
  736.         case 'F': input_dataphone(); break;
  737.       }
  738.     } while ((!ok) && (!hangup));
  739.  
  740.   if (!hangup) {
  741.  
  742.     nl();
  743.     pl(get_string(26));
  744.     nl();
  745.     read_user(0,&u);
  746.     l1=number_userrecs();
  747.     if (l1==(long) status.users) {
  748.       usernum=status.users+1;
  749.     } else {
  750.       usernum=1;
  751.       do {
  752.         read_user(usernum,&u);
  753.         if ((u.inact & inact_deleted)==0)
  754.           ++usernum;
  755.       } while (((u.inact & inact_deleted)==0) && ((long)usernum<=l1));
  756.     }
  757.     write_user(usernum,&thisuser);
  758.     close_user();
  759.     write_qscn(usernum, qsc, 0);
  760.     isr(usernum,thisuser.name);
  761.     ok=0;
  762.     topscreen();
  763.     do {
  764.       nl();
  765.       nl();
  766.       outstr(get_string(591)); pln(usernum);
  767.       outstr(get_string(592)); pl(thisuser.pw);
  768.       nl();
  769.       pl(get_string(593));
  770.       pl(get_string(594));
  771.       pl(get_string(595));
  772.       pl(get_string(596));
  773.       nl();
  774.       outstr(get_string(357));
  775.       echo=0;
  776.       input(s,8);
  777.       if (strcmp(s,thisuser.pw)==0)
  778.         ok=1;
  779.     } while ((!ok) && (!hangup));
  780.     changedsl();
  781.     checkit=0;
  782.     if (incom) {
  783.       if (printfile("FEEDBACK"))
  784.         sl1(0,get_stringx(1,29));
  785.       sprintf(irt,get_stringx(1,30),syscfg.maxusers-status.users);
  786.       irt_name[0]=0;
  787.       grab_quotes(NULL, NULL);
  788.       email(71,0,71,0);
  789.     }
  790.     if (syscfg.newuser_c[0]) {
  791.       stuff_in(s,syscfg.newuser_c,create_chain_file("CHAIN.TXT"),"","","","");
  792.       full_external(s,0,1);
  793.     }
  794.   }
  795. }
  796.  
  797.