home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / BBS / MISC / XDEV_117.ZIP / XCONF2.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-11-12  |  18.2 KB  |  695 lines

  1. #include "msgg.h"
  2. #include "twindow.h"
  3. #include "keys.h"
  4. #include "scrntitl.h"
  5.  
  6. extern char msk78[];
  7. extern char mskdate[];
  8. extern char mskphone[];
  9. #define msk5  "_____"
  10. #define msk35 msk78+43
  11. #define msk36 msk78+42
  12. #define mskst msk35+33
  13. #define mskzip msk35+30
  14. #define mskcit msk35+11
  15. #define msk1 msk78+77
  16. #define msk2 msk78+76
  17. #define msk3 msk35+32
  18. #define msk4 msk35+31
  19. #define msk6 msk35+29
  20. #define msk47 msk78+31
  21. #define msk63 msk78+15
  22. #define msk15 msk78+63
  23. #define msk12 msk78+66
  24. #define msk58 msk78+20
  25. #define msk46 msk78+32
  26.  
  27.  
  28. void readconfig (void);
  29. void configure(void);
  30. void saveconfig(void);
  31. void newuserr(void);
  32. void bbs(void);
  33. void matrix(void);
  34. void setdefaults(void);
  35. void prompts(void);
  36. void miscel(void);
  37. void paths(void);
  38. void prepare_config(void);
  39. int window1(void);
  40. int window2(void);
  41. int window3(void);
  42. int window4(void);
  43. int prompt1(void);
  44. int prompt2(void);
  45. int prompt3(void);
  46. int addbackslash(char *,int);
  47. char * rstrip(char *);
  48. void quit(void);
  49. void quitnosave(void);
  50. void quitsave(void);
  51. int elevell(char *,int);
  52. int shltype(char *,int);
  53. int yesorno(char *,int);
  54. void fboardd(void);
  55. void mboardd(void);
  56. void params(void);
  57. void printscreen(void);
  58. void jumptodos(void);
  59.  
  60.  
  61. /* Global variables */
  62.  
  63. extern struct _config conf;  /* System configuration read from CONFIG.BBS */
  64. extern struct _user newuser;
  65. extern struct _logconfig logconf;
  66. extern char   nonstop;
  67. extern unsigned char usemouse;
  68. extern int VERSION;
  69.  
  70.  
  71.  
  72. void saveconfig (void) {
  73.  
  74. FILE *fp;
  75. struct ffblk f;
  76. char both=0;
  77. register int x;
  78.  
  79. newuser.pointid=0;
  80.  
  81. conf.version=VERSION;
  82.  
  83. if (!nonstop) {
  84.     clear_message();
  85.     cursor(0,25);
  86.     prepare_config();
  87. }
  88.  
  89. remove("config.bak");
  90. rename("config.bbs","config.bak");
  91.  
  92. if(!(fp=fopen("config.bbs","wb")))
  93.   {
  94.    if (!nonstop) {
  95.        goto savenew;
  96.    }
  97.    else {
  98.         printf("Error writing config file");
  99.         exit(1);
  100.    }
  101.   }
  102.  
  103.    rewind(fp);
  104.    fwrite(&conf,sizeof(struct _config),1,fp);
  105.    both=1;
  106.  
  107.    fclose(fp);
  108.  
  109. savenew:
  110.  
  111. if (nonstop==1) return;
  112.  
  113. if(!logconf.loglimit) {
  114.     error_message(" Awful hard to log on in 0 minutes... ");
  115.     sleep(1);
  116.     clear_message();
  117. }
  118. if(conf.nolmrs<50 || conf.nolmrs>10000) {
  119.     error_message(" I'd check your number of LMRs if I were you... ");
  120.     sleep(1);
  121.     clear_message();
  122. }
  123. if(conf.packsize<1024) {
  124.     error_message(" Ludicrous msg compression size. ");
  125.     conf.packsize=1024;
  126.     sleep(1);
  127.     clear_message();
  128. }
  129. if(conf.commport>64) {
  130.     error_message(" Ludicrous commport value...expect lockups. ");
  131.     sleep(2);
  132.     clear_message();
  133. }
  134. if(strlen(conf.homepath)>78 || strlen(conf.outpath)>78 || strlen(conf.menupath)>78
  135.     || strlen(conf.messpath)>78 || strlen(conf.sysop)>35
  136.     || strlen(conf.system)>63 || strlen(conf.logfile)>78
  137.     || strlen(conf.edansi)>78 || strlen(conf.edline)>78
  138.     || strlen(conf.edlocal)>78 || strlen(conf.quotestring)>3
  139.     || strlen(conf.lastcaller)>35 || strlen(conf.origin)>58
  140.     || strlen(conf.quote_file)>12 || strlen(conf.domain)>36
  141.     || strlen(conf.alt_domain)>36 || strlen(conf.edgraph)>78
  142.     || strlen(conf.nodelist)>78) {
  143.         error_message(" Incorrectly terminated string field...expect lockups. ");
  144.         sleep(2);
  145.         clear_message();
  146. }
  147. for(x=0;x<10;x++) {
  148.     if(strlen(conf.jumpfile[x])>12 || strlen(conf.subfile[x])>12) {
  149.         error_message(" Incorrectly terminated file string...expect lockups. ");
  150.         sleep(2);
  151.         clear_message();
  152.         break;
  153.     }
  154. }
  155.  
  156. if(!(fp=fopen("newuser.bbs","wb")))
  157.   {
  158.    if (!nonstop) {
  159.        goto Tellem;
  160.    }
  161.    else {
  162.         printf("Error writing logon config file");
  163.         exit(1);
  164.    }
  165.   }
  166.  
  167.    rewind(fp);
  168.    fwrite(&newuser,sizeof(struct _user),1,fp);
  169.    fwrite(&logconf,sizeof(struct _logconfig),1,fp);
  170.  
  171.    fclose(fp);
  172.    both=both+2;
  173.  
  174. Tellem:
  175.  
  176.    if (nonstop) return;
  177.    clear_message();
  178.    switch (both) {
  179.     case 3: any_message(" Saved Logon & Main configurations ");
  180.             break;
  181.     case 2: any_message(" Saved Logon configuration ");
  182.             break;
  183.     case 1: any_message(" Saved Main configuration ");
  184.             break;
  185.     case 0: any_message(" No configurations saved! ");
  186.    }
  187.  
  188. }
  189.  
  190.  
  191. char * rstrip(char *a) {
  192.  
  193.   while ((strlen(a)!=0) and (a[strlen(a)-1]==' ')) a[strlen(a)-1]=0;
  194.   return a;
  195. }
  196.  
  197.  
  198. void prepare_config(void) {
  199.  
  200.   int register x;
  201.  
  202.  rstrip(newuser.name);
  203.  rstrip(newuser.handle);
  204.  rstrip(newuser.city);
  205.  rstrip(newuser.state);
  206.  rstrip(conf.homepath);
  207.  rstrip(conf.mailpath);
  208.  rstrip(conf.filepath);
  209.  rstrip(conf.outpath);
  210.  rstrip(conf.menupath);
  211.  rstrip(conf.messpath);
  212.  rstrip(conf.sysop);
  213.  rstrip(conf.system);
  214.  rstrip(conf.logfile);
  215.  rstrip(conf.edansi);
  216.  rstrip(conf.edline);
  217.  rstrip(conf.edlocal);
  218.  rstrip(conf.edgraph);
  219.  rstrip(conf.lastcaller);
  220.  rstrip(conf.mboard.name);
  221.  rstrip(conf.mboard.forceto);
  222.  rstrip(conf.nodelist);
  223.  for(x=0;x<10;x++) {
  224.     rstrip(conf.subfile[x]);
  225.     rstrip(conf.jumpfile[x]);
  226.     rstrip(conf.subkey[x]);
  227.     rstrip(conf.jumpkey[x]);
  228.  }
  229.  rstrip(conf.fboard.name);
  230.  rstrip(conf.fboard.dpath);
  231.  rstrip(conf.fboard.upath);
  232.  rstrip(conf.origin);
  233.  if(conf.nolmrs>4095) {
  234.     conf.nolmrs=4095;
  235.     error_message(" High probability you screwed up your reconfiguration.  RTFM. ");
  236.     sleep(2);
  237.  }
  238. }
  239.  
  240.  
  241.  
  242. void jumptodos(void) {
  243.  
  244. char middle[82];
  245. int  drive;
  246. char dir[MAXDIR];
  247.  
  248.        printf("\x1b[2J Type `EXIT' to return to XCONFIG.\n");
  249.        drive=getdisk();
  250.        getcurdir(++drive,dir);
  251.        spawnlp (P_WAIT,"command.com",NULL);
  252.        setdisk (--drive);
  253.        strcpy(middle,"\\");
  254.        strcat(middle,dir);
  255.        chdir(middle);
  256.        printscreen();
  257.        if(usemouse) {
  258.             _AX=0;
  259.             geninterrupt(0x33);
  260.             _AX=2;
  261.             geninterrupt(0x33);
  262.        }
  263. }
  264.  
  265. void printscreen (void) {
  266.  
  267.   int register x;
  268.  
  269.   printf("\x1b[2J");
  270.   textattr(CYAN);
  271.   cursor(0,1);
  272.   cprintf("%s\r\n",TOP);
  273.   cprintf("%s\r\n",ROW2);
  274.   cprintf("%s\r\n",BOTTOM);
  275.   cprintf("%s\r\n",TOP);
  276.   for (x=5;x<22;x++) cprintf("%s\r\n",MIDDLE);
  277.   cprintf("%s\r\n",BOTTOM);
  278.   cprintf("%s\r\n",ROW23);
  279.   cprintf("%s\r\n",ROW24);
  280.   cputs(ROW25);
  281.  
  282. }
  283.  
  284.  
  285.  
  286.  
  287. int prompt1(void) {
  288.  
  289.     WINDOW *wnd;
  290.     FIELD *fld;
  291.     int exitcode;
  292.  
  293.     char name [2];
  294.     char handle [2];
  295.     char phone1 [2];
  296.     char phone2[2];
  297.     char graphics[2];
  298.     char ansiedit[2];
  299.     char scrnclr[2];
  300.     char pagepause[2];
  301.     char commflag[2];
  302.     char zipcode[2];
  303.     char city[2];
  304.     char state[2];
  305.     char pass[2];
  306.     char birth[2];
  307.     char length[2];
  308.     char width[2];
  309.  
  310.     if (logconf.name) strcpy(name,"X");
  311.     else strcpy(name,"-");
  312.     if (logconf.handle) strcpy(handle,"X");
  313.     else strcpy(handle,"-");
  314.     if (logconf.phone1) strcpy(phone1,"X");
  315.     else strcpy(phone1,"-");
  316.     if (logconf.phone2) strcpy(phone2,"X");
  317.     else strcpy(phone2,"-");
  318.     if (logconf.graphics) strcpy(graphics,"X");
  319.     else strcpy(graphics,"-");
  320.     if (logconf.ansiedit) strcpy(ansiedit,"X");
  321.     else strcpy(ansiedit,"-");
  322.     if (logconf.scrnclr) strcpy(scrnclr,"X");
  323.     else strcpy(scrnclr,"-");
  324.     if (logconf.pagepause) strcpy(pagepause,"X");
  325.     else strcpy(pagepause,"-");
  326.     if (logconf.commflag) strcpy(commflag,"X");
  327.     else strcpy(commflag,"-");
  328.     if (logconf.zipcode) strcpy(zipcode,"X");
  329.     else strcpy(zipcode,"-");
  330.     if (logconf.city) strcpy(city,"X");
  331.     else strcpy(city,"-");
  332.     if (logconf.state) strcpy(state,"X");
  333.     else strcpy(state,"-");
  334.     if (logconf.pass) strcpy(pass,"X");
  335.     else strcpy(pass,"-");
  336.     if (logconf.birth) strcpy(birth,"X");
  337.     else strcpy(birth,"-");
  338.     if (logconf.length) strcpy(length,"X");
  339.     else strcpy(length,"-");
  340.     if (logconf.width) strcpy(width,"X");
  341.     else strcpy(width,"-");
  342.  
  343.     wnd=establish_window(0,2,20,35);
  344.     set_title(wnd," Logon Prompts ");
  345.     set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
  346.     set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
  347.     display_window(wnd);
  348.     wprompt(wnd,2,1,"Ask for Real Name?");
  349.     wprompt(wnd,2,2,"Ask for Handle?");
  350.     wprompt(wnd,2,3,"Ask for Phone#1?");
  351.     wprompt(wnd,2,4,"Ask for Phone#2?");
  352.     wprompt(wnd,2,5,"Ask for ANSI?");
  353.     wprompt(wnd,2,6,"Ask for ANSI Editor?");
  354.     wprompt(wnd,2,7,"Ask for Screen Clearing?");
  355.     wprompt(wnd,2,8,"Ask for Page Pausing?");
  356.     wprompt(wnd,2,9,"Ask for Special Flag?");
  357.     wprompt(wnd,2,10,"Ask for Zip Code?");
  358.     wprompt(wnd,2,11,"Ask for City?");
  359.     wprompt(wnd,2,12,"Ask for State?");
  360.     wprompt(wnd,2,13,"Ask for Password?");
  361.     wprompt(wnd,2,14,"Ask for Birthdate?");
  362.     wprompt(wnd,2,15,"Ask for Length?");
  363.     wprompt(wnd,2,16,"Ask for Width?");
  364.     init_template(wnd);
  365.     fld=establish_field(wnd,28,1,msk1,name,'O');
  366.     field_window(fld,"namep     ",40,10);
  367.     fld=establish_field(wnd,28,2,msk1,handle,'O');
  368.     field_window(fld,"handlep   ",40,10);
  369.     fld=establish_field(wnd,28,3,msk1,phone1,'O');
  370.     field_window(fld,"phone1p   ",40,10);
  371.     fld=establish_field(wnd,28,4,msk1,phone2,'O');
  372.     field_window(fld,"phone2p   ",40,10);
  373.     fld=establish_field(wnd,28,5,msk1,graphics,'O');
  374.     field_window(fld,"ansip     ",40,10);
  375.     fld=establish_field(wnd,28,6,msk1,ansiedit,'O');
  376.     field_window(fld,"ansiedp   ",40,10);
  377.     fld=establish_field(wnd,28,7,msk1,scrnclr,'O');
  378.     field_window(fld,"scrnclrp  ",40,10);
  379.     fld=establish_field(wnd,28,8,msk1,pagepause,'O');
  380.     field_window(fld,"pagep     ",40,10);
  381.     fld=establish_field(wnd,28,9,msk1,commflag,'O');
  382.     field_window(fld,"specp     ",40,10);
  383.     fld=establish_field(wnd,28,10,msk1,zipcode,'O');
  384.     field_window(fld,"zipp      ",40,10);
  385.     fld=establish_field(wnd,28,11,msk1,city,'O');
  386.     field_window(fld,"cityp     ",40,10);
  387.     fld=establish_field(wnd,28,12,msk1,state,'O');
  388.     field_window(fld,"statep    ",40,10);
  389.     fld=establish_field(wnd,28,13,msk1,pass,'O');
  390.     field_window(fld,"passp     ",40,10);
  391.     fld=establish_field(wnd,28,14,msk1,birth,'O');
  392.     field_window(fld,"birthp    ",40,10);
  393.     fld=establish_field(wnd,28,15,msk1,length,'O');
  394.     field_window(fld,"lengthp   ",40,10);
  395.     fld=establish_field(wnd,28,16,msk1,width,'O');
  396.     field_window(fld,"widthp    ",40,10);
  397.     prep_template(wnd);
  398.     exitcode=data_entry(wnd);
  399.  
  400.     logconf.name=(*name=='X');
  401.     logconf.handle=(*handle=='X');
  402.     logconf.phone1=(*phone1=='X');
  403.     logconf.phone2=(*phone2=='X');
  404.     logconf.graphics=(*graphics=='X');
  405.     logconf.ansiedit=(*ansiedit=='X');
  406.     logconf.scrnclr=(*scrnclr=='X');
  407.     logconf.pagepause=(*pagepause=='X');
  408.     logconf.commflag=(*commflag=='X');
  409.     logconf.zipcode=(*zipcode=='X');
  410.     logconf.city=(*city=='X');
  411.     logconf.state=(*state=='X');
  412.     logconf.pass=(*pass=='X');
  413.     logconf.birth=(*birth=='X');
  414.     logconf.length=(*length=='X');
  415.     logconf.width=(*width=='X');
  416.  
  417.     delete_window(wnd);
  418.     return (exitcode);
  419.  
  420. }
  421.  
  422.  
  423. void miscel(void)
  424.  
  425. {
  426.  
  427.     WINDOW *wnd;
  428.     FIELD *fld;
  429.     char locallog[2];
  430.     char loglimit[4];
  431.     char nameattempts[4];
  432.     char passattempts[4];
  433.     char minbaud[6];
  434.     char ansibaud[6];
  435.     WINDOW *instruct;
  436.  
  437.     clear_message();
  438.     instruct=establish_window(25,22,3,21);
  439.     set_border(instruct,2);
  440.     set_title(instruct,"Logon Miscellaneous");
  441.     set_colors(instruct,ALL,GREEN,BLACK,DIM);
  442.     set_colors(instruct,ACCENT,GREEN,WHITE,BRIGHT);
  443.     display_window(instruct);
  444.     wprintf(instruct,"   [F1] for help  ");
  445.  
  446.     sprintf(nameattempts,"%-hu",logconf.nameattempts);
  447.     sprintf(passattempts,"%-hu",logconf.passattempts);
  448.     sprintf(minbaud,"%-u",logconf.minbaud);
  449.     sprintf(ansibaud,"%-u",conf.ansibaud);
  450.     if (logconf.locallog==1) strcpy(locallog,"Y");
  451.     else strcpy(locallog,"N");
  452.  
  453.     wnd=establish_window(6,6,10,54);
  454.     set_border(wnd,3);
  455.     set_title(wnd," Logon Miscellaneous ");
  456.     set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
  457.     set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
  458.     display_window(wnd);
  459.     wprompt(wnd,2,1,"Do automatic logon in local mode? ");
  460.     wprompt(wnd,2,2,"Minutes for logon procedure:");
  461.     wprompt(wnd,2,3,"Number of attempts allowed to enter name:");
  462.     wprompt(wnd,2,4,"Number of attempts allowed to enter password:");
  463.     wprompt(wnd,2,5,"Minimum baud rate for callers:");
  464.     wprompt(wnd,2,6,"Minimum baud rate for ANSI:");
  465.     init_template(wnd);
  466.     fld=establish_field(wnd,36,1,msk1,locallog,'A');
  467.     field_window(fld,"local     ",52,10);
  468.     field_validate(fld,yesorno);
  469.     fld=establish_field(wnd,31,2,mskst,loglimit,'N');
  470.     field_window(fld,"loglim    ",52,12);
  471.     fld=establish_field(wnd,44,3,mskst,nameattempts,'N');
  472.     field_window(fld,"namea     ",52,1);
  473.     fld=establish_field(wnd,48,4,mskst,passattempts,'N');
  474.     field_window(fld,"passa     ",52,2);
  475.     fld=establish_field(wnd,33,5,mskzip,minbaud,'N');
  476.     field_window(fld,"minbaud   ",52,2);
  477.     fld=establish_field(wnd,33,6,mskzip,ansibaud,'N');
  478.     field_window(fld,"ansibaud  ",52,3);
  479.  
  480.     sprintf(loglimit,"%-2hu",logconf.loglimit);
  481.     prep_template(wnd);
  482.     data_entry(wnd);
  483.     delete_window(wnd);
  484.     logconf.loglimit=(byte)atoi(loglimit);
  485.     logconf.nameattempts=(byte)atoi(nameattempts);
  486.     logconf.passattempts=(byte)atoi(passattempts);
  487.     logconf.minbaud=(word)atol(minbaud);
  488.     conf.ansibaud=(word)atol(ansibaud);
  489.     if (*locallog=='Y')logconf.locallog=1;
  490.     else logconf.locallog=0;
  491.     delete_window(instruct);
  492.  
  493. }
  494.  
  495.  
  496.  
  497. void bbs(void)
  498.  
  499. {
  500.  
  501.     WINDOW *wnd;
  502.     FIELD *fld;
  503.     WINDOW *instruct;
  504.  
  505.     clear_message();
  506.     instruct=establish_window(25,22,3,21);
  507.     set_border(instruct,2);
  508.     set_title(instruct," General BBS ");
  509.     set_colors(instruct,ALL,GREEN,BLACK,DIM);
  510.     set_colors(instruct,ACCENT,GREEN,WHITE,BRIGHT);
  511.     display_window(instruct);
  512.     wprintf(instruct,"   [F1] for help  ");
  513.  
  514.     wnd=establish_window(0,4,17,80);
  515.     set_border(wnd,3);
  516.     set_title(wnd," General BBS ");
  517.     set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
  518.     set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
  519.     display_window(wnd);
  520.     wprompt(wnd,2,1,"SysOp's name:");
  521.     wprompt(wnd,2,2,"System name:");
  522.     wprompt(wnd,2,3,"Path/Name of Logfile:");
  523.     wprompt(wnd,2,5,"Line Editor String:");
  524.     wprompt(wnd,2,7,"Full Screen Editor String:");
  525.     wprompt(wnd,2,9,"Local Editor String:");
  526.     wprompt(wnd,2,11,"Graphics Editor String:");
  527.     wprompt(wnd,2,13,"Last Caller:");
  528.     init_template(wnd);
  529.     fld=establish_field(wnd,17,1,msk35,conf.sysop,'a');
  530.     field_window(fld,"sysop     ",42,10);
  531.     fld=establish_field(wnd,17,2,msk63,conf.system,'a');
  532.     field_window(fld,"system    ",42,12);
  533.     fld=establish_field(wnd,0,4,msk78,conf.logfile,'A');
  534.     field_window(fld,"logfile   ",42,14);
  535.     fld=establish_field(wnd,0,6,msk78,conf.edline,'a');
  536.     field_window(fld,"edline    ",42,2);
  537.     fld=establish_field(wnd,0,8,msk78,conf.edansi,'a');
  538.     field_window(fld,"edansi    ",42,4);
  539.     fld=establish_field(wnd,0,10,msk78,conf.edlocal,'a');
  540.     field_window(fld,"edlocal   ",42,5);
  541.     fld=establish_field(wnd,0,12,msk78,conf.edgraph,'a');
  542.     field_window(fld,"edgraph   ",42,6);
  543.     fld=establish_field(wnd,16,13,msk35,conf.lastcaller,'a');
  544.     field_window(fld,"lastcaller",42,7);
  545.  
  546.     prep_template(wnd);
  547.     data_entry(wnd);
  548.     delete_window(wnd);
  549.     delete_window(instruct);
  550. }
  551.  
  552.  
  553.  
  554. void matrix(void)
  555.  
  556. {
  557.  
  558.     WINDOW *wnd;
  559.     FIELD *fld;
  560.     char net[6];
  561.     char node[6];
  562.     char zone[6];
  563.     char altnet[6];
  564.     char altnode[6];
  565.     char altzone[6];
  566.     char netmailboard[6];
  567.     char altnetboard[6];
  568.     char domain[37];
  569.     char altdomain[37];
  570.     WINDOW *instruct;
  571.  
  572.     clear_message();
  573.     instruct=establish_window(25,22,3,19);
  574.     set_border(instruct,2);
  575.     set_title(instruct," Matrix ");
  576.     set_colors(instruct,ALL,GREEN,BLACK,DIM);
  577.     set_colors(instruct,ACCENT,GREEN,WHITE,BRIGHT);
  578.     display_window(instruct);
  579.     wprintf(instruct,"  [F1] for help  ");
  580.  
  581.     sprintf(net,"%-u",conf.net);
  582.     sprintf(node,"%-u",conf.node);
  583.     sprintf(zone,"%-hu",conf.zone);
  584.     sprintf(altnet,"%-u",conf.alt_net);
  585.     sprintf(altnode,"%-u",conf.alt_node);
  586.     sprintf(altzone,"%-hu",conf.alt_zone);
  587.     sprintf(netmailboard,"%-u",conf.netmailboard);
  588.     sprintf(altnetboard,"%-u",conf.altnetboard);
  589.     strcpy(domain,conf.domain);
  590.     strcpy(altdomain,conf.alt_domain);
  591.  
  592.     wnd=establish_window(2,6,11,68);
  593.     set_border(wnd,2);
  594.     set_title(wnd," Matrix Information ");
  595.     set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
  596.     set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
  597.     display_window(wnd);
  598.     wprompt(wnd,2,1,"Zone:");
  599.     wprompt(wnd,17,1,"Net:");
  600.     wprompt(wnd,31,1,"Node:");
  601.     wprompt(wnd,2,2,"Net Mail Board #:");
  602.     wprompt(wnd,2,3,"Alternate Zone:");
  603.     wprompt(wnd,27,3,"Alternate Net:");
  604.     wprompt(wnd,2,4,"Alternate Node:");
  605.     wprompt(wnd,27,4,"Alternate Net Mail Board #:");
  606.     wprompt(wnd,2,5,"Primary address' domain:");
  607.     wprompt(wnd,2,7,"Alternate address' domain:");
  608.     init_template(wnd);
  609.     fld=establish_field(wnd,9,1,mskzip,zone,'N');
  610.     field_window(fld,"net       ",52,13);
  611.     fld=establish_field(wnd,23,1,mskzip,net,'N');
  612.     field_window(fld,"net       ",52,13);
  613.     fld=establish_field(wnd,38,1,mskzip,node,'N');
  614.     field_window(fld,"net       ",52,13);
  615.     fld=establish_field(wnd,21,2,mskzip,netmailboard,'N');
  616.     field_window(fld,"netboard  ",52,13);
  617.     fld=establish_field(wnd,19,3,mskzip,altzone,'N');
  618.     field_window(fld,"net       ",52,13);
  619.     fld=establish_field(wnd,43,3,mskzip,altnet,'N');
  620.     field_window(fld,"net       ",52,13);
  621.     fld=establish_field(wnd,19,4,mskzip,altnode,'N');
  622.     field_window(fld,"net       ",52,13);
  623.     fld=establish_field(wnd,56,4,mskzip,altnetboard,'N');
  624.     field_window(fld,"altboard  ",52,13);
  625.     fld=establish_field(wnd,1,6,msk36,domain,'a');
  626.     field_window(fld,"domain    ",52,3);
  627.     fld=establish_field(wnd,1,8,msk36,altdomain,'a');
  628.     field_window(fld,"altdomain ",52,3);
  629.  
  630.     prep_template(wnd);
  631.     data_entry(wnd);
  632.     delete_window(wnd);
  633.     conf.zone=(byte)atoi(zone);
  634.     conf.net=(word)atoi(net);
  635.     conf.node=(word)atoi(node);
  636.     conf.alt_zone=(byte)atoi(altzone);
  637.     conf.alt_net=(word)atoi(altnet);
  638.     conf.alt_node=(word)atoi(altnode);
  639.     conf.netmailboard=(word)atoi(netmailboard);
  640.     conf.altnetboard=(word)atoi(altnetboard);
  641.     lstrip(domain);
  642.     rstrip(domain);
  643.     lstrip(altdomain);
  644.     rstrip(altdomain);
  645.     strcpy(conf.domain,domain);
  646.     strcpy(conf.alt_domain,altdomain);
  647.     delete_window(instruct);
  648.  
  649. }
  650.  
  651.  
  652. void newuserr (void)
  653.  
  654. {
  655.  
  656.     int exitcode;
  657.     signed char which=1;
  658.     WINDOW *instruct;
  659.  
  660.     clear_message();
  661.     instruct=establish_window(4,20,3,55);
  662.     set_border(instruct,2);
  663.     set_title(instruct,"Setup NewUsers");
  664.     set_colors(instruct,ALL,GREEN,BLACK,DIM);
  665.     set_colors(instruct,ACCENT,GREEN,WHITE,BRIGHT);
  666.     display_window(instruct);
  667.     wprintf(instruct," [PGUP] and [PGDN] to toggle windows, [F1] for help ");
  668.  
  669.     exitcode=window1();
  670. Loop:
  671.     if (exitcode==ESC) {
  672.         delete_window(instruct);
  673.         return;
  674.     }
  675.     if (exitcode==PGUP) which--;
  676.     if (exitcode==PGDN) which++;
  677.     if (which<1) which=4;
  678.     if (which>4) which=1;
  679.  
  680.     switch (which) {
  681.         case 1:    exitcode=window1();
  682.                  break;
  683.         case 2: exitcode=window2();
  684.                 break;
  685.         case 3: exitcode=window3();
  686.                 break;
  687.         case 4: exitcode=window4();
  688.                 break;
  689.     }
  690.  
  691.     goto Loop;
  692.  
  693. }
  694.  
  695.