home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / BBS / WSYS15.ZIP / FMD-40.MOD < prev    next >
Text File  |  1995-04-17  |  44KB  |  1,566 lines

  1.  
  2.    ┌┬─── ──  ─   ─  ── ───────────────────────────────────────────────────┬─ ∙∙
  3.    ││                    Alternative Worlds Presents                      │
  4.    └┼─────────────────────────────────────────────────────────────────────┐
  5.    ││ Mod Name       » FMD-40.MOD                                         │∙
  6.    ││ Difficulty     » ███▒▒▒▒▒▒▒▒ (3/10)                                 │:
  7.    ││ WWIV Version   » 4.23 / v4.24                                       ││
  8.    ││ Date Affected  » 01/01/95                                           ││
  9.    :│ Files Affected » SYSOPF.C / BBS.C / BBSOVL1.C / READMAIL.C          ││
  10.    ∙│ Description    » Use WWIVsys Inside WWIV - DGROUP Saver             ││
  11.     └─────────────────────────────────────────────────────────────────────┼┐
  12.     │       A French Mod Division Release - (C) 1995 FMD Software         ││
  13. ∙∙ ─┴─────────────────────────────────────────────────── ──  ─   ─  ── ───└┘
  14.  
  15.  
  16.  ┌┬══════════════════┐
  17.  ││ Long Description ││
  18.   └══════════════════┴┘
  19.  
  20.     This modification will allow WWIVsys registered users to use WWIVsys from
  21. inside their WWIV and to replace all internal sysop functions.
  22.  
  23.     You will be able to remove internal functions also if you don't have any
  24. remote SysOp, so it will save you a lot of Dgroup and will discrease the size
  25. of your BBS.EXE and you will have more memory available.
  26.  
  27. AUTHOR'S NOTE: WWIVsys will load much faster once WWIV v4.24 will be out with
  28.                the new spawing functions.
  29.  
  30. ──────────────────────────────────────────────────────────────────────────────
  31.                                    Legend
  32.                           ╔═══╤══════════════════┐
  33.                           │ + │ Add This Line    │
  34.                           │ - │ Delete This Line │
  35.                           │ * │ Modify This Line │
  36.                           │ = │ Existing Line    │
  37.                           └═══╧══════════════════╝
  38. ───[Step 0]────────────────────────────────────────────────────────────────────
  39.  
  40. **Backup your source code, due to this being the 1st release, there is a huge
  41.   possibility that it isn't perfect and that it may contains bugs.
  42.  
  43. ───[Step 1]────────────────────────────────────────────────────────────────────
  44.  
  45. Load SYSOPF.C and do the following changes:
  46.  
  47. =#include "vars.h"
  48. =
  49. =#pragma hdrstop
  50. =
  51. +#include "wwivsys.h"
  52.  
  53. And add the following function at the end of the file:
  54.  
  55. void wwivsys(int fcns)
  56. {
  57.   char s[81];
  58.   int i, f;
  59.  
  60.   if (incom) {
  61.     npr("\r\nCannot load WWIVsys from remote.\r\n\r\n");
  62.     return;
  63.   }
  64.   save_status();
  65.   save_config();
  66.  
  67.   switch(fcns)
  68.   {
  69.     case 0:
  70.       sprintf(s, "SYS.EXE");
  71.     break;
  72.     case ZLOG:
  73.       sprintf(s, "SYS.EXE -ZL");
  74.     break;
  75.     case AUTOVAL:
  76.       sprintf(s, "SYS.EXE -AV");
  77.     break;
  78.     case BBSINFO:
  79.       sprintf(s, "SYS.EXE -BI");
  80.     break;
  81.     case CONFDIR:
  82.       save_confs(CONF_DIRS, -1, NULL);
  83.       sprintf(s, "SYS.EXE -CD");
  84.     break;
  85.     case DEFRAG:
  86.       save_subs();
  87.       sprintf(s, "SYS.EXE -DF");
  88.     break;
  89.     case DIREDIT:
  90.       sprintf(s, "SYS.EXE -DE");
  91.     break;
  92.     case CHAINEDIT:
  93.       sprintf(s, "SYS.EXE -CE");
  94.     break;
  95.     case FSED:
  96.       save_config();
  97.       sprintf(s, "SYS.EXE -FSED");
  98.     break;
  99.     case EXTERNAL:
  100.       save_config();
  101.       sprintf(s, "SYS.EXE -EP");
  102.     break;
  103.     case FILEEDIT:
  104.       sprintf(s, "SYS.EXE -FE");
  105.     break;
  106.     case GFILES:
  107.       sprintf(s, "SYS.EXE -GF");
  108.     break;
  109.     case GFILEEDITOR:
  110.       sprintf(s, "SYS.EXE -GE");
  111.     break;
  112.     case INSTANCE:
  113.       sprintf(s, "SYS.EXE -IE");
  114.     break;
  115.     case LANGUAGE:
  116.       sprintf(s, "SYS.EXE -LE");
  117.     break;
  118.     case MODEM:
  119.       sprintf(s, "SYS.EXE -ME");
  120.     break;
  121.     case NETEDITOR:
  122.       sprintf(s, "SYS.EXE -NE");
  123.     break;
  124.     case PATH:
  125.       sprintf(s, "SYS.EXE -PATH");
  126.     break;
  127.     case PROTOCOL:
  128.       sprintf(s, "SYS.EXE -PE");
  129.     break;
  130.     case SLRECEDIT:
  131.       sprintf(s, "SYS.EXE -SE");
  132.     break;
  133.     case CONFIG:
  134.       sprintf(s, "SYS.EXE -CFG");
  135.     break;
  136.     case SSMEDITOR:
  137.       sprintf(s, "SYS.EXE -SSM");
  138.     break;
  139.     case STATISTICS:
  140.       sprintf(s, "SYS.EXE -STAT");
  141.     break;
  142.     case STRINGEDIT:
  143.       close_strfiles();
  144.       sprintf(s, "SYS.EXE -ESE");
  145.     break;
  146.     case CONFBOARD:
  147.       save_confs(CONF_SUBS, -1, NULL);
  148.       save_subs();
  149.       sprintf(s, "SYS.EXE -CB");
  150.     break;
  151.     case BOARDEDIT:
  152.       save_subs();
  153.       sprintf(s, "SYS.EXE -BE");
  154.     break;
  155.     case SUBLIST:
  156.       save_subs();
  157.       sprintf(s, "SYS.EXE -SL");
  158.     break;
  159.     case TETRIX:
  160.       sprintf(s, "SYS.EXE -TE");
  161.     break;
  162.     case UEDIT:
  163.       sprintf(s, "SYS.EXE -UE");
  164.     break;
  165.     case IVOTE:
  166.       sprintf(s, "SYS.EXE -IV");
  167.     break;
  168.     case INISWITCH:
  169.       sprintf(s, "SYS.EXE -INI");
  170.     break;
  171.     case INIEDITOR:
  172.       sprintf(s, "SYS.EXE -INIE");
  173.     break;
  174.   }
  175. #ifdef WWIV424
  176.   extern_prog(s, EFLAG_SHRINK|EFLAG_INTERNAL|EFLAG_TOPSCREEN);
  177. #else
  178.   shrink_out(s, 1, 0, 1, 1);
  179. #endif
  180.   read_config();
  181.   read_status();
  182.   switch(fcns)
  183.   {
  184.     case CONFDIR:
  185.       read_in_conferences(CONF_DIRS);
  186.       read_dirs();
  187.     break;
  188.     case DEFRAG:
  189.       read_subs();
  190.     break;
  191.     case DIREDIT:
  192.       read_dirs();
  193.     break;
  194.     case CHAINEDIT:
  195.       read_chains();
  196.     break;
  197.     case GFILES:
  198.       read_gfile();
  199.     break;
  200.     case CONFIG:
  201. #ifdef WWIV424
  202.       read_ini_info();
  203. #endif
  204.     break;
  205.     case STRINGEDIT:
  206.       set_language(thisuser.language);
  207.     break;
  208.     case CONFBOARD:
  209.       read_in_conferences(CONF_SUBS);
  210.       read_subs();
  211.     break;
  212.     case BOARDEDIT:
  213.       read_subs();
  214.     break;
  215.     case SUBLIST:
  216.       read_subs();
  217.     break;
  218.     case IVOTE:
  219.       read_voting();
  220.     break;
  221.     case INISWITCH:
  222.     case INIEDITOR:
  223. #ifdef WWIV424
  224.       read_ini_info();
  225. #endif
  226.     break;
  227.   }
  228. }
  229.  
  230.  
  231.  
  232. Save SYSOPF.C
  233.  
  234. ───[Step 2]────────────────────────────────────────────────────────────────────
  235.  
  236. Now you have to select if you would like to remove internal functions or not.
  237. If you have remote SysOps, you shouldn't remove them, and if you do remove
  238. them, you will save a lot of Dgroup space, but in another hand, if you remove
  239. them you will ALWAYS use WWIVsys, so you better think about it.
  240.  
  241. Step 2a is to keep internal functions.
  242.  
  243. Step 2b is to remove all internal SysOp functions.
  244.  
  245.  
  246. ───[Step 2a]───────────────────────────────────────────────────────────────────
  247.  
  248. Load BBS.C and do the following changes:
  249.  
  250. =#pragma hdrstop
  251. =
  252. =#define _DEFINE_GLOBALS_
  253. =#include "vars.h"
  254. =#include "subxtr.h"
  255. +#include "wwivsys.h"
  256. =
  257. =#include <math.h>
  258.  
  259. And now in function mainmenu:
  260.  
  261. /**************************************************/
  262. =  if (so()) {
  263. =#ifdef OPT_FAST_SEARCH
  264. =    if ((strcmp(s,"ALLOWEDIT")==0) || (strcmp(s,"AE")==0))
  265. =      edit_database();
  266. =#endif
  267. =    if ((strcmp(s,"INSTEDIT")==0) || (strcmp(s,"IE")==0))
  268. =      instance_edit();
  269. =    if ((strcmp(s,"CONFEDIT")==0) || (strcmp(s,"JE")==0)) {
  270. =      write_inst(INST_LOC_CONFEDIT,0,INST_FLAGS_ONLINE);
  271. =      edit_confs();
  272. =    }
  273. =    if ((strcmp(s,"BOARDEDIT")==0) || (strcmp(s,"BE")==0)) {
  274. =      write_inst(INST_LOC_BOARDEDIT,0,INST_FLAGS_ONLINE);
  275. =      sysoplog(get_stringx(1,2));
  276. +      if (incom)
  277. =        boardedit();
  278. +      else
  279. +        wwivsys(BOARDEDIT);
  280. =    }
  281. =    if ((strcmp(s,"CHAINEDIT")==0) || (strcmp(s,"CE")==0)) {
  282. =      write_inst(INST_LOC_CHAINEDIT,0,INST_FLAGS_ONLINE);
  283. =      sysoplog(get_stringx(1,4));
  284. +      if (incom)
  285. =        chainedit();
  286. +      else
  287. +        wwivsys(CHAINEDIT);
  288. =    }
  289. =    if (strcmp(s, "CHAT")==0) {
  290. =      nl();
  291. =      pl(((*(char far *)0x00000417L ^= 0x10) & 0x10) ?
  292. =                       get_string(21) :
  293. =                       get_string(22));
  294. =      sysoplog(get_stringx(1,9));
  295. =      topscreen();
  296. =    }
  297. =    if ((strcmp(s,"CHUSER")==0) || (strcmp(s,"CU")==0)) {
  298. =      write_inst(INST_LOC_CHUSER,0,INST_FLAGS_ONLINE);
  299. =      chuser();
  300. =    }
  301. =    if (strcmp(s,"CLOUT")==0) {
  302. =      npr("\r\nNot Yet.\r\n");
  303. =    /*  force_callout(2); */
  304. =    }
  305. =    if (strncmp(s,"DEBUG",5)==0) {
  306. =      if((s[5]) && (s[5]!=' '))
  307. =        debuglevel=s[5]-'0';
  308. =      else if(s[6])
  309. =        debuglevel=s[6]-'0';
  310. =    }
  311. =    if ((strcmp(s,"DIREDIT")==0) || (strcmp(s,"DE")==0)) {
  312. =      write_inst(INST_LOC_DIREDIT,0,INST_FLAGS_ONLINE);
  313. =      sysoplog(get_stringx(1,3));
  314. +      if (incom)
  315. =        dlboardedit();
  316. +      else
  317. +        wwivsys(DIREDIT);
  318. =    }
  319. =    if (strcmp(s,"DOS")==0) {
  320. =      if (checkpw()) {
  321. =        write_inst(INST_LOC_DOS,0,INST_FLAGS_ONLINE);
  322. =        sysoplog(get_stringx(1,6));
  323. =        shrink_out(getenv("COMSPEC"),1,1,1,0);
  324. =        topscreen();
  325. =      }
  326. =    }
  327. =    if ((strcmp(s,"EDIT")==0)) {
  328. =      if (checkpw()) {
  329. =        write_inst(INST_LOC_TEDIT,0,INST_FLAGS_ONLINE);
  330. =        nl();
  331. =        prt(2,get_string(7));
  332. =        input(s1,50);
  333. =        if (s1[0]) {
  334. =          if ((okansi()) && (thisuser.defed))
  335. =            external_edit(s1,"",thisuser.defed-1,500,".",s1,1);
  336. =          else
  337. =            tedit(s1);
  338. =        }
  339. =      }
  340. =    }
  341. =    if ((strcmp(s,"GFILEEDIT")==0) || (strcmp(s,"GE")==0)) {
  342. =      write_inst(INST_LOC_GFILEEDIT,0,INST_FLAGS_ONLINE);
  343. =      sysoplog(get_stringx(1,5));
  344. +      if (incom)
  345. =        gfileedit();
  346. +      else
  347. +        wwivsys(GFILEEDITOR);
  348. =    }
  349. =    if (strcmp(s,"LOAD")==0) {
  350. =      nl();
  351. =      prt(2,get_string(7));
  352. =      input(s1,50);
  353. =      if (s1[0]) {
  354. =        nl();
  355. =        prt(5,get_string(17));
  356. =        if (yn()) {
  357. =          nl();
  358. =          load_workspace(s1,0);
  359. =        } else {
  360. =          nl();
  361. =          load_workspace(s1,1);
  362. =        }
  363. =      }
  364. =    }
  365. =    if (strcmp(s,"MAILR")==0) {
  366. =      if (checkpw()) {
  367. =        write_inst(INST_LOC_MAILR,0,INST_FLAGS_ONLINE);
  368. =        sysoplog(get_stringx(1,8));
  369. =        mailr();
  370. =      }
  371. =    }
  372. =    if ((strcmp(s,"REBOOT")==0) && (checkpw())) {
  373. =      write_inst(INST_LOC_REBOOT,0,INST_FLAGS_ONLINE);
  374. =      dtr(0);
  375. =      sysoplog(get_stringx(1,7));
  376. =      logoff();
  377. =      sl1(1,"");
  378. =      if (ok_modem_stuff)
  379. =        closeport();
  380. =      close_strfiles();
  381. =      wait(3.0);
  382. =      setvect(0xff,(void interrupt (*) ()) MK_FP(0xffff,0x0000));
  383. =      geninterrupt(0xff);
  384. =    }
  385. =    if (strcmp(s,"RELOAD")==0) {
  386. =      write_inst(INST_LOC_RELOAD,0,INST_FLAGS_ONLINE);
  387. =      read_new_stuff();
  388. =    }
  389. =    if (strcmp(s,"RESETF")==0) {
  390. =      write_inst(INST_LOC_RESETF,0,INST_FLAGS_ONLINE);
  391. =      reset_files();
  392. =    }
  393. =    if (strcmp(s, "RESETQSCAN")==0) {
  394. =      prt(5,get_string(970));
  395. =      if (yn()) {
  396. =        write_inst(INST_LOC_RESETQSCAN,0,INST_FLAGS_ONLINE);
  397. =        memset(qsc, 0, syscfg.qscn_len);
  398. =        *qsc=999;
  399. =        memset(qsc_n,0xff,((max_dirs+31)/32)*4);
  400. =        memset(qsc_q,0xff,((max_subs+31)/32)*4);
  401. =        close_qscn();
  402. =        sprintf(s1,"%sUSER.QSC", syscfg.datadir);
  403. =        unlink(s1);
  404. =        for (i=0; i<=number_userrecs(); i++) {
  405. =          write_qscn(i, qsc, 1);
  406. =        }
  407. =        close_qscn();
  408. =      }
  409. =    }
  410. =    if (strcmp(s,"STAT")==0) {
  411. =      read_status();
  412. =      nl();
  413. =      outstr(get_string(18));
  414. =      pln(_stklen);
  415. =      outstr(get_string(19));
  416. =      npr("%dk\r\n", (int) (farcoreleft()/1024));
  417. =      outstr(get_string(20));
  418. =      npr("%d%%\r\n", cachestat());
  419. =      outstr(get_string(938));
  420. =      npr("%lu\r\n",status.qscanptr);
  421. =      nl();
  422. =    }
  423. =  }
  424. =/**************************************************/
  425. =  if (cs()) {
  426. =    if (strcmp(s,"IVOTES")==0) {
  427. =      write_inst(INST_LOC_VOTE,0,INST_FLAGS_ONLINE);
  428. =      sysoplog(get_stringx(1,11));
  429. +      if (incom)
  430. =        ivotes();
  431. +      else
  432. +        wwivsys(IVOTE);
  433. =    }
  434. =    if (strcmp(s,"LOG")==0) {
  435. =      slname(date(), s1);
  436. =      print_local_file(s1,"");
  437. =    }
  438. =    if (strcmp(s,"NLOG")==0) {
  439. =      print_local_file("NET.LOG","");
  440. =    }
  441. =    if (strcmp(s,"PENDING")==0) {
  442. =      print_pending_list();
  443. =    }
  444. =    if (strcmp(s,"STATUS")==0) {
  445. =      prstatus();
  446. =    }
  447. =    if (strcmp(s,"TEDIT")==0) {
  448. =      write_inst(INST_LOC_TEDIT,0,INST_FLAGS_ONLINE);
  449. =      sysoplog(get_stringx(1,12));
  450. =      text_edit();
  451. =    }
  452. =    if ((strcmp(s,"UEDIT")==0) || (strcmp(s,"UE")==0)) {
  453. =      write_inst(INST_LOC_UEDIT,0,INST_FLAGS_ONLINE);
  454. =      sysoplog(get_stringx(1,10));
  455. +      if (incom)
  456. =        uedit(usernum,0);
  457. +      else
  458. +        wwivsys(UEDIT);
  459. =    }
  460. =    if (strcmp(s,"VOTEPRINT")==0) {
  461. =      write_inst(INST_LOC_VOTEPRINT,0,INST_FLAGS_ONLINE);
  462. =      voteprint();
  463. =    }
  464. =    if (strcmp(s,"YLOG")==0) {
  465. =      read_status();
  466. =      print_local_file(status.log1,"");
  467. =    }
  468. =    if (strcmp(s,"ZLOG")==0) {
  469. +      if (incom)
  470. =        zlog();
  471. +      else
  472. +        wwivsys(ZLOG);
  473. =    }
  474. +    if (strcmp(s, "WWIVSYS")==0) {
  475. +      if (!incom)
  476. +        wwivsys(0);
  477. +    }
  478. =    if ((strcmp(s,",")==0) && ((net_sysnum>0) || (net_num_max>1))) {
  479. =      nl();
  480. =      prt(2,get_string(23));
  481. =      ch=onek("Q012");
  482. =      switch(ch) {
  483. =        case '0': print_local_file(get_string(1027),""); break;
  484. =        case '1': print_local_file(get_string(1028),""); break;
  485. =        case '2': print_local_file(get_string(1029),""); break;
  486. =      }
  487. =    }
  488. =    if (strcmp(s,"/?")==0) {
  489. =      printmenu(5);
  490. =    }
  491. =  }
  492. =/*************************************************/
  493.  
  494. Lower in function dlmainmenu:
  495.  
  496. =    if ((strcmp(s,"DIREDIT")==0) || (strcmp(s,"DE")==0)) {
  497. =      sysoplog(get_stringx(1,3));
  498. +      if (incom)
  499. =        dlboardedit();
  500. +      else
  501. +        wwivsys(DIREDIT);
  502. =    }
  503. =
  504. =    if (strncmp(s,"DEBUG",5)==0) {
  505.  
  506. Lower in function getcaller:
  507.  
  508. =        case 'B':
  509. =          okskey=1;
  510. =          if (ok_local()) {
  511. =            write_inst(INST_LOC_BOARDEDIT,0,INST_FLAGS_NONE);
  512. =            holdphone(1);
  513. *            wwivsys(BOARDEDIT);
  514. =            cleanup_net();
  515. =            holdphone(0);
  516. =          }
  517. =          okskey=0;
  518. =          break;
  519. =        case 'C':
  520. =          okskey=1;
  521. =          if (ok_local()) {
  522. =            write_inst(INST_LOC_CHAINEDIT,0,INST_FLAGS_NONE);
  523. =            holdphone(1);
  524. *            wwivsys(CHAINEDIT);
  525. =            holdphone(0);
  526. =          }
  527. =          okskey=0;
  528. =          break;
  529. =        case 'D':
  530. =          okskey=1;
  531. =          if (ok_local()) {
  532. =            write_inst(INST_LOC_DIREDIT,0,INST_FLAGS_NONE);
  533. =            holdphone(1);
  534. *            wwivsys(DIREDIT);
  535. =            holdphone(0);
  536. =          }
  537. =          okskey=0;
  538. =          break;
  539. =        case 'W':
  540. =          okskey=1;
  541. =          if (ok_local()) {
  542. =            write_inst(INST_LOC_TEDIT,0,INST_FLAGS_NONE);
  543. =            holdphone(1);
  544. =            text_edit();
  545. =            holdphone(0);
  546. =          }
  547. =          okskey=0;
  548. =          break;
  549. =        case 'F':
  550. =          if (ok_local()) {
  551. =            write_inst(INST_LOC_DOS,0,INST_FLAGS_NONE);
  552. =            holdphone(1);
  553. =            nl();
  554. =            pl(get_string(43));
  555. =            nl();
  556. =            setvect(save_dos,NULL);
  557. =            do_remote(getenv("COMSPEC"),0);
  558. =            setvect(save_dos, getvect(INT_REAL_DOS));
  559. =            out1ch(12);
  560. =            cleanup_net();
  561. =            holdphone(0);
  562. =          }
  563. =          break;
  564. =        case 'G':
  565. =          okskey=1;
  566. =          if (ok_local()) {
  567. =            write_inst(INST_LOC_GFILEEDIT,0,INST_FLAGS_NONE);
  568. =            holdphone(1);
  569. *            wwivsys(GFILEEDITOR);
  570. =            holdphone(0);
  571. =          }
  572. =          okskey=0;
  573. =          break;
  574. =        case 'I':
  575. =          okskey=1;
  576. =          if (ok_local()) {
  577. =            write_inst(INST_LOC_VOTEEDIT,0,INST_FLAGS_NONE);
  578. =            holdphone(1);
  579. *            wwivsys(IVOTE);
  580. =            holdphone(0);
  581. =          }
  582. =          okskey=0;
  583. =          break;
  584. =        case 'J':
  585. =          if (ok_local()) {
  586. =            holdphone(1);
  587. =            edit_confs();
  588. =            holdphone(0);
  589. =          }
  590. =          break;
  591. =        case 'K':
  592. =          if (ok_local()) {
  593. =            usernum=1;
  594. =            useron=1;
  595. =            holdphone(1);
  596. =            okskey=1;
  597. =            prt(2,get_string(44));
  598. =            input(s,50);
  599. =            load_workspace(s,0);
  600. =            send_email();
  601. =            okskey=0;
  602. =            useron=0;
  603. =            write_user(1,&thisuser);
  604. =            cleanup_net();
  605. =            holdphone(0);
  606. =          }
  607. =          break;
  608. =        case 'L':
  609. =          if (ok_local()) {
  610. =            read_status();
  611. =            slname(date(), s);
  612. =            print_local_file(s,status.log1);
  613. =          }
  614. =          break;
  615. =        case 'M':
  616. =          okskey=1;
  617. =          if (ok_local()) {
  618. =            write_inst(INST_LOC_MAILR,0,INST_FLAGS_NONE);
  619. =            holdphone(1);
  620. =            mailr();
  621. =            holdphone(0);
  622. =          }
  623. =          okskey=0;
  624. =          break;
  625. =        case 'N':
  626. =          if (ok_local())
  627. =            print_local_file("NET.LOG","NETDAT*.LOG");
  628. =          break;
  629. =        case 'P':
  630. =          if (ok_local())
  631. =            print_pending_list();
  632. =          break;
  633. =        case 'Q':
  634. =          end_bbs(QUIT_LEVEL);
  635. =          break;
  636. =        case 27:
  637. =          outstr(get_string(1043));
  638. =          if (yn())
  639. =            end_bbs(QUIT_LEVEL);
  640. =          clrscrb();
  641. =          break;
  642. =        case 'R':
  643. =          if (ok_local()) {
  644. =            usernum=1;
  645. =            holdphone(1);
  646. =            okskey=1;
  647. =            readmail();
  648. =            okskey=0;
  649. =            write_user(1,&thisuser);
  650. =            cleanup_net();
  651. =            holdphone(0);
  652. =          }
  653. =          break;
  654. =        case 'S':
  655. =          if (ok_local()) {
  656. =            prstatus();
  657. =            getkey();
  658. =          }
  659. =          break;
  660. =        case 'T':
  661. =          if ((ok_local()) && (syscfg.terminal[0])) {
  662. =            if (syscfg.sysconfig & sysconfig_shrink_term)
  663. =              shrink_out(syscfg.terminal,0,0,0,1);
  664. =            else
  665. =              run_external(syscfg.terminal);
  666. =            imodem(1);
  667. =            imodem(0);
  668. =          }
  669. =          break;
  670. =        case 'U':
  671. =          okskey=1;
  672. =          if (ok_local()) {
  673. =            write_inst(INST_LOC_UEDIT,0,INST_FLAGS_NONE);
  674. =            holdphone(1);
  675. +            wwivsys(UEDIT);
  676. =            holdphone(0);
  677. =          }
  678. =          okskey=0;
  679. =          break;
  680. =        case 'E':
  681. =          if (ok_local()) {
  682. =            usernum=1;
  683. =            useron=1;
  684. =            holdphone(1);
  685. =            okskey=1;
  686. =            send_email();
  687. =            okskey=0;
  688. =            useron=0;
  689. =            write_user(1,&thisuser);
  690. =            cleanup_net();
  691. =            holdphone(0);
  692. =          }
  693. =          break;
  694. =        case 'X':
  695. =          for(i=0;i<50;i++) {
  696. =            if(xenviron[i]!=NULL)
  697. =              npr("\r\nxenv %d=%s",i,xenviron[i]);
  698. =          }
  699. =          npr("\r\nreal=%x, new=%x",INT_REAL_DOS,save_dos);
  700. =          nl();
  701. =          pausescr();
  702. =        break;
  703. =        case 'Y':
  704. =          if (ok_local()) {
  705. =            read_status();
  706. =            slname(date(), s);
  707. =            print_local_file(status.log1,s);
  708. =          }
  709. =          break;
  710. =        case 'Z':
  711. =          if (ok_local()) {
  712. *            wwivsys(ZLOG);
  713. =            nl();
  714. =            getkey();
  715. =          }
  716. =          break;
  717. =        case '/':
  718. =          if ((net_sysnum) && (ok_local()))
  719. =            force_callout(0);
  720. =          break;
  721. =        case '.':
  722. =          if ((net_sysnum) && (ok_local()))
  723. =            force_callout(1);
  724. =          break;
  725. =        case ',':
  726. =          if ((net_sysnum>0) || (net_num_max>1) && ok_local()) {
  727. =            nl();
  728. =            prt(2,get_string(23));
  729. =            ch=onek("Q012");
  730. =            switch (ch) {
  731. =              case '0':
  732. =                print_local_file(get_string(1027),"");
  733. =                break;
  734. =              case '1':
  735. =                print_local_file(get_string(1028),"");
  736. =                break;
  737. =              case '2':
  738. =                print_local_file(get_string(1029),"");
  739. =                break;
  740. =            }
  741. =          }
  742. =          break;
  743. =        case '`':
  744. =          if ((net_sysnum) && (ok_local())) {
  745. =            holdphone(1);
  746. =            print_net_listing(1);
  747. =            holdphone(0);
  748. =          }
  749. =          break;
  750. =        case 9:
  751. =          if (ok_local()) {
  752. =            holdphone(1);
  753. =            instance_edit();
  754. =            holdphone(0);
  755. =          }
  756. =          break;
  757. +        case '@':
  758. +          if (ok_local()) {
  759. +            holdphone(1);
  760. +            wwivsys(0);
  761. +            holdphone(0);
  762. +          }
  763. +          break;
  764. =      }
  765. =      if (!incom && !lokb) {
  766.  
  767.  
  768. Save BBS.C
  769.  
  770. ───[Step 2b]───────────────────────────────────────────────────────────────────
  771.  
  772. Load BBS.C and do the following changes:
  773.  
  774. =#pragma hdrstop
  775. =
  776. =#define _DEFINE_GLOBALS_
  777. =#include "vars.h"
  778. =#include "subxtr.h"
  779. +#include "wwivsys.h"
  780. =
  781. =#include <math.h>
  782.  
  783. And now in function mainmenu:
  784.  
  785. /**************************************************/
  786. =  if (so()) {
  787. =#ifdef OPT_FAST_SEARCH
  788. =    if ((strcmp(s,"ALLOWEDIT")==0) || (strcmp(s,"AE")==0))
  789. =      edit_database();
  790. =#endif
  791. =    if ((strcmp(s,"INSTEDIT")==0) || (strcmp(s,"IE")==0))
  792. =      instance_edit();
  793. =    if ((strcmp(s,"CONFEDIT")==0) || (strcmp(s,"JE")==0)) {
  794. =      write_inst(INST_LOC_CONFEDIT,0,INST_FLAGS_ONLINE);
  795. =      edit_confs();
  796. =    }
  797. =    if ((strcmp(s,"BOARDEDIT")==0) || (strcmp(s,"BE")==0)) {
  798. =      write_inst(INST_LOC_BOARDEDIT,0,INST_FLAGS_ONLINE);
  799. =      sysoplog(get_stringx(1,2));
  800. +      wwivsys(BOARDEDIT);
  801. =    }
  802. =    if ((strcmp(s,"CHAINEDIT")==0) || (strcmp(s,"CE")==0)) {
  803. =      write_inst(INST_LOC_CHAINEDIT,0,INST_FLAGS_ONLINE);
  804. =      sysoplog(get_stringx(1,4));
  805. +      wwivsys(CHAINEDIT);
  806. =    }
  807. =    if (strcmp(s, "CHAT")==0) {
  808. =      nl();
  809. =      pl(((*(char far *)0x00000417L ^= 0x10) & 0x10) ?
  810. =                       get_string(21) :
  811. =                       get_string(22));
  812. =      sysoplog(get_stringx(1,9));
  813. =      topscreen();
  814. =    }
  815. =    if ((strcmp(s,"CHUSER")==0) || (strcmp(s,"CU")==0)) {
  816. =      write_inst(INST_LOC_CHUSER,0,INST_FLAGS_ONLINE);
  817. =      chuser();
  818. =    }
  819. =    if (strcmp(s,"CLOUT")==0) {
  820. =      npr("\r\nNot Yet.\r\n");
  821. =    /*  force_callout(2); */
  822. =    }
  823. =    if (strncmp(s,"DEBUG",5)==0) {
  824. =      if((s[5]) && (s[5]!=' '))
  825. =        debuglevel=s[5]-'0';
  826. =      else if(s[6])
  827. =        debuglevel=s[6]-'0';
  828. =    }
  829. =    if ((strcmp(s,"DIREDIT")==0) || (strcmp(s,"DE")==0)) {
  830. =      write_inst(INST_LOC_DIREDIT,0,INST_FLAGS_ONLINE);
  831. =      sysoplog(get_stringx(1,3));
  832. +      wwivsys(DIREDIT);
  833. =    }
  834. =    if (strcmp(s,"DOS")==0) {
  835. =      if (checkpw()) {
  836. =        write_inst(INST_LOC_DOS,0,INST_FLAGS_ONLINE);
  837. =        sysoplog(get_stringx(1,6));
  838. =        shrink_out(getenv("COMSPEC"),1,1,1,0);
  839. =        topscreen();
  840. =      }
  841. =    }
  842. =    if ((strcmp(s,"EDIT")==0)) {
  843. =      if (checkpw()) {
  844. =        write_inst(INST_LOC_TEDIT,0,INST_FLAGS_ONLINE);
  845. =        nl();
  846. =        prt(2,get_string(7));
  847. =        input(s1,50);
  848. =        if (s1[0]) {
  849. =          if ((okansi()) && (thisuser.defed))
  850. =            external_edit(s1,"",thisuser.defed-1,500,".",s1,1);
  851. =          else
  852. =            tedit(s1);
  853. =        }
  854. =      }
  855. =    }
  856. =    if ((strcmp(s,"GFILEEDIT")==0) || (strcmp(s,"GE")==0)) {
  857. =      write_inst(INST_LOC_GFILEEDIT,0,INST_FLAGS_ONLINE);
  858. =      sysoplog(get_stringx(1,5));
  859. +      wwivsys(GFILEEDITOR);
  860. =    }
  861. =    if (strcmp(s,"LOAD")==0) {
  862. =      nl();
  863. =      prt(2,get_string(7));
  864. =      input(s1,50);
  865. =      if (s1[0]) {
  866. =        nl();
  867. =        prt(5,get_string(17));
  868. =        if (yn()) {
  869. =          nl();
  870. =          load_workspace(s1,0);
  871. =        } else {
  872. =          nl();
  873. =          load_workspace(s1,1);
  874. =        }
  875. =      }
  876. =    }
  877. =    if (strcmp(s,"MAILR")==0) {
  878. =      if (checkpw()) {
  879. =        write_inst(INST_LOC_MAILR,0,INST_FLAGS_ONLINE);
  880. =        sysoplog(get_stringx(1,8));
  881. =        mailr();
  882. =      }
  883. =    }
  884. =    if ((strcmp(s,"REBOOT")==0) && (checkpw())) {
  885. =      write_inst(INST_LOC_REBOOT,0,INST_FLAGS_ONLINE);
  886. =      dtr(0);
  887. =      sysoplog(get_stringx(1,7));
  888. =      logoff();
  889. =      sl1(1,"");
  890. =      if (ok_modem_stuff)
  891. =        closeport();
  892. =      close_strfiles();
  893. =      wait(3.0);
  894. =      setvect(0xff,(void interrupt (*) ()) MK_FP(0xffff,0x0000));
  895. =      geninterrupt(0xff);
  896. =    }
  897. =    if (strcmp(s,"RELOAD")==0) {
  898. =      write_inst(INST_LOC_RELOAD,0,INST_FLAGS_ONLINE);
  899. =      read_new_stuff();
  900. =    }
  901. =    if (strcmp(s,"RESETF")==0) {
  902. =      write_inst(INST_LOC_RESETF,0,INST_FLAGS_ONLINE);
  903. =      reset_files();
  904. =    }
  905. =    if (strcmp(s, "RESETQSCAN")==0) {
  906. =      prt(5,get_string(970));
  907. =      if (yn()) {
  908. =        write_inst(INST_LOC_RESETQSCAN,0,INST_FLAGS_ONLINE);
  909. =        memset(qsc, 0, syscfg.qscn_len);
  910. =        *qsc=999;
  911. =        memset(qsc_n,0xff,((max_dirs+31)/32)*4);
  912. =        memset(qsc_q,0xff,((max_subs+31)/32)*4);
  913. =        close_qscn();
  914. =        sprintf(s1,"%sUSER.QSC", syscfg.datadir);
  915. =        unlink(s1);
  916. =        for (i=0; i<=number_userrecs(); i++) {
  917. =          write_qscn(i, qsc, 1);
  918. =        }
  919. =        close_qscn();
  920. =      }
  921. =    }
  922. =    if (strcmp(s,"STAT")==0) {
  923. =      read_status();
  924. =      nl();
  925. =      outstr(get_string(18));
  926. =      pln(_stklen);
  927. =      outstr(get_string(19));
  928. =      npr("%dk\r\n", (int) (farcoreleft()/1024));
  929. =      outstr(get_string(20));
  930. =      npr("%d%%\r\n", cachestat());
  931. =      outstr(get_string(938));
  932. =      npr("%lu\r\n",status.qscanptr);
  933. =      nl();
  934. =    }
  935. =  }
  936. =/**************************************************/
  937. =  if (cs()) {
  938. =    if (strcmp(s,"IVOTES")==0) {
  939. =      write_inst(INST_LOC_VOTE,0,INST_FLAGS_ONLINE);
  940. =      sysoplog(get_stringx(1,11));
  941. +      wwivsys(IVOTE);
  942. =    }
  943. =    if (strcmp(s,"LOG")==0) {
  944. =      slname(date(), s1);
  945. =      print_local_file(s1,"");
  946. =    }
  947. =    if (strcmp(s,"NLOG")==0) {
  948. =      print_local_file("NET.LOG","");
  949. =    }
  950. =    if (strcmp(s,"PENDING")==0) {
  951. =      print_pending_list();
  952. =    }
  953. =    if (strcmp(s,"STATUS")==0) {
  954. =      prstatus();
  955. =    }
  956. =    if (strcmp(s,"TEDIT")==0) {
  957. =      write_inst(INST_LOC_TEDIT,0,INST_FLAGS_ONLINE);
  958. =      sysoplog(get_stringx(1,12));
  959. =      text_edit();
  960. =    }
  961. =    if ((strcmp(s,"UEDIT")==0) || (strcmp(s,"UE")==0)) {
  962. =      write_inst(INST_LOC_UEDIT,0,INST_FLAGS_ONLINE);
  963. =      sysoplog(get_stringx(1,10));
  964. +      wwivsys(UEDIT);
  965. =    }
  966. =    if (strcmp(s,"VOTEPRINT")==0) {
  967. =      write_inst(INST_LOC_VOTEPRINT,0,INST_FLAGS_ONLINE);
  968. =      voteprint();
  969. =    }
  970. =    if (strcmp(s,"YLOG")==0) {
  971. =      read_status();
  972. =      print_local_file(status.log1,"");
  973. =    }
  974. =    if (strcmp(s,"ZLOG")==0) {
  975. +      wwivsys(ZLOG);
  976. =    }
  977. +    if (strcmp(s, "WWIVSYS")==0) {
  978. +        wwivsys(0);
  979. +    }
  980. =    if ((strcmp(s,",")==0) && ((net_sysnum>0) || (net_num_max>1))) {
  981. =      nl();
  982. =      prt(2,get_string(23));
  983. =      ch=onek("Q012");
  984. =      switch(ch) {
  985. =        case '0': print_local_file(get_string(1027),""); break;
  986. =        case '1': print_local_file(get_string(1028),""); break;
  987. =        case '2': print_local_file(get_string(1029),""); break;
  988. =      }
  989. =    }
  990. =    if (strcmp(s,"/?")==0) {
  991. =      printmenu(5);
  992. =    }
  993. =  }
  994. =/*************************************************/
  995.  
  996. Lower in function dlmainmenu:
  997.  
  998. =    if ((strcmp(s,"DIREDIT")==0) || (strcmp(s,"DE")==0)) {
  999. =      sysoplog(get_stringx(1,3));
  1000. +      wwivsys(DIREDIT);
  1001. =    }
  1002. =
  1003. =    if (strncmp(s,"DEBUG",5)==0) {
  1004.  
  1005. Lower in function getcaller:
  1006.  
  1007. =        case 'B':
  1008. =          okskey=1;
  1009. =          if (ok_local()) {
  1010. =            write_inst(INST_LOC_BOARDEDIT,0,INST_FLAGS_NONE);
  1011. =            holdphone(1);
  1012. *            wwivsys(BOARDEDIT);
  1013. =            cleanup_net();
  1014. =            holdphone(0);
  1015. =          }
  1016. =          okskey=0;
  1017. =          break;
  1018. =        case 'C':
  1019. =          okskey=1;
  1020. =          if (ok_local()) {
  1021. =            write_inst(INST_LOC_CHAINEDIT,0,INST_FLAGS_NONE);
  1022. =            holdphone(1);
  1023. *            wwivsys(CHAINEDIT);
  1024. =            holdphone(0);
  1025. =          }
  1026. =          okskey=0;
  1027. =          break;
  1028. =        case 'D':
  1029. =          okskey=1;
  1030. =          if (ok_local()) {
  1031. =            write_inst(INST_LOC_DIREDIT,0,INST_FLAGS_NONE);
  1032. =            holdphone(1);
  1033. *            wwivsys(DIREDIT);
  1034. =            holdphone(0);
  1035. =          }
  1036. =          okskey=0;
  1037. =          break;
  1038. =        case 'W':
  1039. =          okskey=1;
  1040. =          if (ok_local()) {
  1041. =            write_inst(INST_LOC_TEDIT,0,INST_FLAGS_NONE);
  1042. =            holdphone(1);
  1043. =            text_edit();
  1044. =            holdphone(0);
  1045. =          }
  1046. =          okskey=0;
  1047. =          break;
  1048. =        case 'F':
  1049. =          if (ok_local()) {
  1050. =            write_inst(INST_LOC_DOS,0,INST_FLAGS_NONE);
  1051. =            holdphone(1);
  1052. =            nl();
  1053. =            pl(get_string(43));
  1054. =            nl();
  1055. =            setvect(save_dos,NULL);
  1056. =            do_remote(getenv("COMSPEC"),0);
  1057. =            setvect(save_dos, getvect(INT_REAL_DOS));
  1058. =            out1ch(12);
  1059. =            cleanup_net();
  1060. =            holdphone(0);
  1061. =          }
  1062. =          break;
  1063. =        case 'G':
  1064. =          okskey=1;
  1065. =          if (ok_local()) {
  1066. =            write_inst(INST_LOC_GFILEEDIT,0,INST_FLAGS_NONE);
  1067. =            holdphone(1);
  1068. *            wwivsys(GFILEEDITOR);
  1069. =            holdphone(0);
  1070. =          }
  1071. =          okskey=0;
  1072. =          break;
  1073. =        case 'I':
  1074. =          okskey=1;
  1075. =          if (ok_local()) {
  1076. =            write_inst(INST_LOC_VOTEEDIT,0,INST_FLAGS_NONE);
  1077. =            holdphone(1);
  1078. *            wwivsys(IVOTE);
  1079. =            holdphone(0);
  1080. =          }
  1081. =          okskey=0;
  1082. =          break;
  1083. =        case 'J':
  1084. =          if (ok_local()) {
  1085. =            holdphone(1);
  1086. =            edit_confs();
  1087. =            holdphone(0);
  1088. =          }
  1089. =          break;
  1090. =        case 'K':
  1091. =          if (ok_local()) {
  1092. =            usernum=1;
  1093. =            useron=1;
  1094. =            holdphone(1);
  1095. =            okskey=1;
  1096. =            prt(2,get_string(44));
  1097. =            input(s,50);
  1098. =            load_workspace(s,0);
  1099. =            send_email();
  1100. =            okskey=0;
  1101. =            useron=0;
  1102. =            write_user(1,&thisuser);
  1103. =            cleanup_net();
  1104. =            holdphone(0);
  1105. =          }
  1106. =          break;
  1107. =        case 'L':
  1108. =          if (ok_local()) {
  1109. =            read_status();
  1110. =            slname(date(), s);
  1111. =            print_local_file(s,status.log1);
  1112. =          }
  1113. =          break;
  1114. =        case 'M':
  1115. =          okskey=1;
  1116. =          if (ok_local()) {
  1117. =            write_inst(INST_LOC_MAILR,0,INST_FLAGS_NONE);
  1118. =            holdphone(1);
  1119. =            mailr();
  1120. =            holdphone(0);
  1121. =          }
  1122. =          okskey=0;
  1123. =          break;
  1124. =        case 'N':
  1125. =          if (ok_local())
  1126. =            print_local_file("NET.LOG","NETDAT*.LOG");
  1127. =          break;
  1128. =        case 'P':
  1129. =          if (ok_local())
  1130. =            print_pending_list();
  1131. =          break;
  1132. =        case 'Q':
  1133. =          end_bbs(QUIT_LEVEL);
  1134. =          break;
  1135. =        case 27:
  1136. =          outstr(get_string(1043));
  1137. =          if (yn())
  1138. =            end_bbs(QUIT_LEVEL);
  1139. =          clrscrb();
  1140. =          break;
  1141. =        case 'R':
  1142. =          if (ok_local()) {
  1143. =            usernum=1;
  1144. =            holdphone(1);
  1145. =            okskey=1;
  1146. =            readmail();
  1147. =            okskey=0;
  1148. =            write_user(1,&thisuser);
  1149. =            cleanup_net();
  1150. =            holdphone(0);
  1151. =          }
  1152. =          break;
  1153. =        case 'S':
  1154. =          if (ok_local()) {
  1155. =            prstatus();
  1156. =            getkey();
  1157. =          }
  1158. =          break;
  1159. =        case 'T':
  1160. =          if ((ok_local()) && (syscfg.terminal[0])) {
  1161. =            if (syscfg.sysconfig & sysconfig_shrink_term)
  1162. =              shrink_out(syscfg.terminal,0,0,0,1);
  1163. =            else
  1164. =              run_external(syscfg.terminal);
  1165. =            imodem(1);
  1166. =            imodem(0);
  1167. =          }
  1168. =          break;
  1169. =        case 'U':
  1170. =          okskey=1;
  1171. =          if (ok_local()) {
  1172. =            write_inst(INST_LOC_UEDIT,0,INST_FLAGS_NONE);
  1173. =            holdphone(1);
  1174. +            wwivsys(UEDIT);
  1175. =            holdphone(0);
  1176. =          }
  1177. =          okskey=0;
  1178. =          break;
  1179. =        case 'E':
  1180. =          if (ok_local()) {
  1181. =            usernum=1;
  1182. =            useron=1;
  1183. =            holdphone(1);
  1184. =            okskey=1;
  1185. =            send_email();
  1186. =            okskey=0;
  1187. =            useron=0;
  1188. =            write_user(1,&thisuser);
  1189. =            cleanup_net();
  1190. =            holdphone(0);
  1191. =          }
  1192. =          break;
  1193. =        case 'X':
  1194. =          for(i=0;i<50;i++) {
  1195. =            if(xenviron[i]!=NULL)
  1196. =              npr("\r\nxenv %d=%s",i,xenviron[i]);
  1197. =          }
  1198. =          npr("\r\nreal=%x, new=%x",INT_REAL_DOS,save_dos);
  1199. =          nl();
  1200. =          pausescr();
  1201. =        break;
  1202. =        case 'Y':
  1203. =          if (ok_local()) {
  1204. =            read_status();
  1205. =            slname(date(), s);
  1206. =            print_local_file(status.log1,s);
  1207. =          }
  1208. =          break;
  1209. =        case 'Z':
  1210. =          if (ok_local()) {
  1211. *            wwivsys(ZLOG);
  1212. =            nl();
  1213. =            getkey();
  1214. =          }
  1215. =          break;
  1216. =        case '/':
  1217. =          if ((net_sysnum) && (ok_local()))
  1218. =            force_callout(0);
  1219. =          break;
  1220. =        case '.':
  1221. =          if ((net_sysnum) && (ok_local()))
  1222. =            force_callout(1);
  1223. =          break;
  1224. =        case ',':
  1225. =          if ((net_sysnum>0) || (net_num_max>1) && ok_local()) {
  1226. =            nl();
  1227. =            prt(2,get_string(23));
  1228. =            ch=onek("Q012");
  1229. =            switch (ch) {
  1230. =              case '0':
  1231. =                print_local_file(get_string(1027),"");
  1232. =                break;
  1233. =              case '1':
  1234. =                print_local_file(get_string(1028),"");
  1235. =                break;
  1236. =              case '2':
  1237. =                print_local_file(get_string(1029),"");
  1238. =                break;
  1239. =            }
  1240. =          }
  1241. =          break;
  1242. =        case '`':
  1243. =          if ((net_sysnum) && (ok_local())) {
  1244. =            holdphone(1);
  1245. =            print_net_listing(1);
  1246. =            holdphone(0);
  1247. =          }
  1248. =          break;
  1249. =        case 9:
  1250. =          if (ok_local()) {
  1251. =            holdphone(1);
  1252. =            instance_edit();
  1253. =            holdphone(0);
  1254. =          }
  1255. =          break;
  1256. +        case '@':
  1257. +          if (ok_local()) {
  1258. +            holdphone(1);
  1259. +            wwivsys(0);
  1260. +            holdphone(0);
  1261. +          }
  1262. +          break;
  1263. =      }
  1264. =      if (!incom && !lokb) {
  1265.  
  1266. ───[Step 3]────────────────────────────────────────────────────────────────────
  1267.  
  1268. Load BBSOVL1.C and do the following addition:
  1269.  
  1270. =#include "vars.h"
  1271. =
  1272. =#pragma hdrstop
  1273. =
  1274. =#include "subxtr.h"
  1275. +#include "wwivsys.h"
  1276. =
  1277. =#define FRAME 7
  1278.  
  1279.  
  1280. Same here, step A is if you keep internal functions, step B is if you wish to
  1281. remove them.
  1282.  
  1283.  
  1284. ───[Step 3a]───────────────────────────────────────────────────────────────────
  1285.  
  1286. Load BBSOVL1.C and replace function edit_confs:
  1287.  
  1288. void edit_confs(void)
  1289. {
  1290.   char ch;
  1291.  
  1292.   if (!checkpw())
  1293.     return;
  1294.  
  1295.   nln(2);
  1296.   pl(get_string(1023));
  1297.   nl();
  1298.   pl(get_string(1024));
  1299.   pl(get_string(1025));
  1300.   nl();
  1301.   outstr(get_string(1026));
  1302.   ch=onek("12Q");
  1303.   switch (ch) {
  1304.     case '1':
  1305.       if (incom)
  1306.         conf_edit(CONF_SUBS);
  1307.       else
  1308.         wwivsys(CONFBOARD);
  1309.       break;
  1310.     case '2':
  1311.       if (incom)
  1312.         conf_edit(CONF_DIRS);
  1313.       else
  1314.         wwivsys(CONFDIR);
  1315.       break;
  1316.     default:
  1317.       break;
  1318.   }
  1319. }
  1320.  
  1321. Save BBSOVL1.C
  1322.  
  1323. ───[Step 3b]───────────────────────────────────────────────────────────────────
  1324.  
  1325. Load BBSOVL1.C and replace function edit_confs:
  1326.  
  1327. void edit_confs(void)
  1328. {
  1329.   char ch;
  1330.  
  1331.   if (!checkpw())
  1332.     return;
  1333.  
  1334.   nln(2);
  1335.   pl(get_string(1023));
  1336.   nl();
  1337.   pl(get_string(1024));
  1338.   pl(get_string(1025));
  1339.   nl();
  1340.   outstr(get_string(1026));
  1341.   ch=onek("12Q");
  1342.   switch (ch) {
  1343.     case '1':
  1344.       wwivsys(CONFBOARD);
  1345.       break;
  1346.     case '2':
  1347.       wwivsys(CONFDIR);
  1348.       break;
  1349.     default:
  1350.       break;
  1351.   }
  1352. }
  1353.  
  1354. Save BBSOVL1.C
  1355.  
  1356. ───[Step 4]────────────────────────────────────────────────────────────────────
  1357.  
  1358. =#include "vars.h"
  1359. =
  1360. =#pragma hdrstop
  1361. =
  1362. +#include "wwivsys.h"
  1363.  
  1364. Same here, step A is if you keep internal functions, step B is if you wish to
  1365. remove them.
  1366.  
  1367. ───[Step 4a]───────────────────────────────────────────────────────────────────
  1368.  
  1369. Load READMAIL.C and edit function readmail:
  1370.  
  1371. =              valuser(m.fromuser);
  1372. *            else if (ch=='U') {
  1373. +              if (incom)
  1374. =                uedit(m.fromuser,0);
  1375. +              else
  1376. +                wwivsys(UEDIT);
  1377. *            } else {
  1378. +              if (incom)
  1379. =                uedit(m.fromuser,3);
  1380. +              else
  1381. +                wwivsys(UEDIT);
  1382. +            }
  1383. =          else if (cs()) {
  1384. =            nl();
  1385. =            pl(get_string(722));
  1386.  
  1387. Save READMAIL.C
  1388.  
  1389. ───[Step 4b]───────────────────────────────────────────────────────────────────
  1390.  
  1391. Load READMAIL.C and edit function readmail:
  1392.  
  1393. =              valuser(m.fromuser);
  1394. *            else if (ch=='U') {
  1395. +              wwivsys(UEDIT);
  1396. *            } else {
  1397. +              wwivsys(UEDIT);
  1398. +            }
  1399. =          else if (cs()) {
  1400. =            nl();
  1401. =            pl(get_string(722));
  1402.  
  1403. Save READMAIL.C
  1404.  
  1405. ───[Step 5]────────────────────────────────────────────────────────────────────
  1406.  
  1407. If you have selected to remove internal function, here is a list of the
  1408. functions you can now delete. Simply search for those functions and delete
  1409. them entirely. DO NOT remove the other functions in the file, if there is no
  1410. more functions in the C file, you can remove it from the makefile if you wish.
  1411.  
  1412. /* File: SUBEDIT.C */
  1413.  
  1414. void boarddata(int n, char *s);
  1415. void showsubs(void);
  1416. void modify_sub(int n);
  1417. void swap_subs(int sub1, int sub2);
  1418. void insert_sub(int n);
  1419. void delete_sub(int n);
  1420. void boardedit(void);
  1421.  
  1422. /* File: CHNEDIT.C */
  1423.  
  1424. void chaindata(int n, char *s);
  1425. void showchains(void);
  1426. void modify_chain(int n);
  1427. void insert_chain(int n);
  1428. void delete_chain(int n);
  1429. void chainedit(void);
  1430.  
  1431. /* File: DIREDIT.C */
  1432.  
  1433. void dirdata(int n, char *s);
  1434. void showdirs(void);
  1435. void modify_dir(int n);
  1436. void swap_dirs(int dir1, int dir2);
  1437. void insert_dir(int n);
  1438. void delete_dir(int n);
  1439. void dlboardedit(void);
  1440.  
  1441.  
  1442. /* File: GFLEDIT.C */
  1443.  
  1444. void gfiledata(int n, char *s);
  1445. void showsec(void);
  1446. int exist_dir(char *s);
  1447. void modify_sec(int n);
  1448. void insert_sec(int n);
  1449. void delete_sec(int n);
  1450. void gfileedit(void);
  1451.  
  1452.  
  1453. /* File: VOTEEDIT.C */
  1454.  
  1455. void print_quests(void);
  1456. void set_question(int ii);
  1457. void ivotes(void);
  1458.  
  1459. /* File: UEDIT.C */
  1460.  
  1461. void print_data(int un, userrec *u, int lng, int cls);
  1462. int matchuser(int un);
  1463. int match_user(userrec *u);
  1464. void changeopt(void);
  1465. void uedit(int usern, int other);
  1466.  
  1467.  
  1468. /* File: SYSOPF.C */
  1469.  
  1470. void zlog(void);
  1471.  
  1472. ───[Step 6]────────────────────────────────────────────────────────────────────
  1473.  
  1474. Decode WWIVSYS.H and place it in your source directory
  1475.  
  1476. section 1 of 1 of file wwivsys.h  < uuencode 5.32 by R.E.M. >
  1477.  
  1478. begin 644 wwivsys.h
  1479. M+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
  1480. M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*@T*#0H@("`@("`@
  1481. M("`@("`@("`@("!75TE6<WES+D@@+2!&=6YC=&EO;B!(86YD96QI;F<@3&EB
  1482. M<F%I<GD-"B`@("`@("`@("`@("`@("`@*$,I(#$Y.30M,3DY-2!&<F5N8V@@
  1483. M36]D($1I=FES:6]N(%-O9G1W87)E#0H-"BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
  1484. M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
  1485. M*BHJ*BHJ*BHJ*BHJ*B\-"@T*#0HC9&5F:6YE(%I,3T<@("`@("`@("`Q("`@
  1486. M("`@("`@("`@("`@("`@("`@("\O($%C=&EV:71Y($QO9PT*(V1E9FEN92!!
  1487. M551/5D%,("`@("`@,B`@("`@("`@("`@("`@("`@("`@("`O+R!!=71O(%9A
  1488. M;&ED871I;VX@2V5Y<PT*(V1E9FEN92!"0E-)3D9/("`@("`@,R`@("`@("`@
  1489. M("`@("`@("`@("`@("`O+R!"0E,@26YF;W)M871I;VYS#0HC9&5F:6YE($-/
  1490. M3D9$25(@("`@("`T("`@("`@("`@("`@("`@("`@("`@("\O($1I<F5C=&]R
  1491. M>2!#;VYF97)E;F-E($5D:71O<@T*(V1E9FEN92!$149204<@("`@("`@-2`@
  1492. M("`@("`@("`@("`@("`@("`@("`O+R!3=6(@0V]M<')E<W-O<@T*(V1E9FEN
  1493. M92!$25)%1$E4("`@("`@-B`@("`@("`@("`@("`@("`@("`@("`O+R!$:7)E
  1494. M8W1O<GD@161I=&]R#0HC9&5F:6YE($-(04E.141)5"`@("`W("`@("`@("`@
  1495. M("`@("`@("`@("`@("\O($-H86EN<R!%9&ET;W(-"B-D969I;F4@1E-%1"`@
  1496. M("`@("`@(#@@("`@("`@("`@("`@("`@("`@("`@+R\@1E-%1"!%9&ET;W(-
  1497. M"B-D969I;F4@15A415).04P@("`@(#D@("`@("`@("`@("`@("`@("`@("`@
  1498. M+R\@17AT97)N86P@4')O9W)A;7,-"B-D969I;F4@1DE,145$250@("`@,3`@
  1499. M("`@("`@("`@("`@("`@("`@("`@+R\@1FEL92!%9&ET;W(-"B-D969I;F4@
  1500. M1T9)3$53("`@("`@,3$@("`@("`@("`@("`@("`@("`@("`@+R\@1V9I;&4@
  1501. M161I=&]R#0HC9&5F:6YE($=&24Q%141)5$]2(#$R("`@("`@("`@("`@("`@
  1502. M("`@("`@("\O($=F:6QE(%-E8W1I;VX@161I=&]R#0HC9&5F:6YE($E.4U1!
  1503. M3D-%("`@(#$S("`@("`@("`@("`@("`@("`@("`@("\O($EN<W1A;F-E($5D
  1504. M:71O<@T*(V1E9FEN92!,04Y'54%'12`@("`Q-"`@("`@("`@("`@("`@("`@
  1505. M("`@("`O+R!,86YG=6%G92!%9&ET;W(-"B-D969I;F4@34]$14T@("`@("`@
  1506. M,34@("`@("`@("`@("`@("`@("`@("`@+R\@36]D96T@161I=&]R#0HC9&5F
  1507. M:6YE($Y%5$5$251/4B`@(#$V("`@("`@("`@("`@("`@("`@("`@("\O($YE
  1508. M="!%9&ET;W(-"B-D969I;F4@4$%42"`@("`@("`@,3<@("`@("`@("`@("`@
  1509. M("`@("`@("`@+R\@4&%T:"!%9&ET;W(-"B-D969I;F4@4%)/5$]#3TP@("`@
  1510. M,3@@("`@("`@("`@("`@("`@("`@("`@+R\@4')O=&]C;VP@161I=&]R#0HC
  1511. M9&5F:6YE(%-,4D5#141)5"`@(#$Y("`@("`@("`@("`@("`@("`@("`@("\O
  1512. M(%-E8W5R:71Y($QE=F5L($5D:71O<@T*(V1E9FEN92!#3TY&24<@("`@("`R
  1513. M,"`@("`@("`@("`@("`@("`@("`@("`O+R!75TE6<WES($-O;F9I9PT*(V1E
  1514. M9FEN92!34TU%1$E43U(@("`R,2`@("`@("`@("`@("`@("`@("`@("`O+R!3
  1515. M4TT@161I=&]R#0HC9&5F:6YE(%-4051)4U1)0U,@(#(R("`@("`@("`@("`@
  1516. M("`@("`@("`@("\O(%-T871I<W1I8W,-"B-D969I;F4@4U1224Y'141)5"`@
  1517. M,C,@("`@("`@("`@("`@("`@("`@("`@+R\@4W1R:6YG($5D:71O<@T*(V1E
  1518. M9FEN92!#3TY&0D]!4D0@("`R-"`@("`@("`@("`@("`@("`@("`@("`O+R!3
  1519. M=6(@0V]N9F5R96YC92!%9&ET;W(-"B-D969I;F4@0D]!4D1%1$E4("`@,C4@
  1520. M("`@("`@("`@("`@("`@("`@("`@+R\@0F]A<F0@161I=&]R#0HC9&5F:6YE
  1521. M(%-50DQ)4U0@("`@(#(V("`@("`@("`@("`@("`@("`@("`@("\O(%-U8G,@
  1522. M3&ES="!396QE8W1O<@T*(V1E9FEN92!4151225@@("`@("`R-R`@("`@("`@
  1523. M("`@("`@("`@("`@("`O+R!4971R:7@-"B-D969I;F4@545$250@("`@("`@
  1524. M,C@@("`@("`@("`@("`@("`@("`@("`@+R\@57-E<B!%9&ET;W(-"B-D969I
  1525. M;F4@259/5$4@("`@("`@,CD@("`@("`@("`@("`@("`@("`@("`@+R\@5F]T
  1526. M92!%9&ET;W(-"B-D969I;F4@24Y)4U=)5$-(("`@,S`@("`@("`@("`@("`@
  1527. M("`@("`@("`@+R\@26YI($9L86=S($5D:71O<@T*(V1E9FEN92!)3DE%1$E4
  1528. M3U(@("`S,2`@("`@("`@("`@("`@("`@("`@("`O+R!);FD@161I=&]R#0HC
  1529. M9&5F:6YE($-!3$Q/550@("`@(#,R("`@("`@("`@("`@("`@("`@("`@("\O
  1530. 1($-A;&QO=70@161I=&]R#0H@
  1531. `
  1532. end
  1533. sum -r/size 48906/3214 section (from "begin" to "end")
  1534. sum -r/size 18056/2312 entire input file
  1535.  
  1536.  
  1537. ───[Step 7]────────────────────────────────────────────────────────────────────
  1538.  
  1539. That's it, simply do a MAKE FCNS and recompile the entire system.
  1540.  
  1541. To use WWIVsys command internally, it is quite simple, simply use:
  1542.  
  1543.                            wwivsys(CODENAME);
  1544.  
  1545. The list of the code names is available in WWIVSYS.H or by doing SYS -?.
  1546. Custumize them as you wish.
  1547.  
  1548. If you are running WWIV v4.24, put the following line at the end of the file:
  1549.  
  1550. #define WWIV424
  1551.  
  1552. Nothing to do if you use WWIV v4.23.
  1553.  
  1554. French Proverb: La fortune vient en dormant.
  1555.  
  1556. For comments, bug report and suggestion, e-mail at the following address:
  1557.  
  1558.        Spotnick    1@20397.WWIVnet       Dark Shadow 1@20305.WWIVnet
  1559.        SysOp of Alternative Worlds       SysOp of French Mod Division HQ
  1560.  
  1561.  
  1562.                  =>   French Mod Division Support Sub   <=
  1563.                                 SubType: ESE
  1564.                    Host: @20397 (WWIVnet) / @5497 Others
  1565. ───[EOF]──────────────────────────────────────────────────────────────────────
  1566.