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

  1. /*--------------------------------------------------------------------------*/
  2. /*                                                                          */
  3. /*   XBBS SOURCE CODE copyright (c) 1990 by M. Kimes                        */
  4. /*   All Rights Reserved                                                    */
  5. /*                                                                          */
  6. /*    For complete details of the licensing restrictions, please refer      */
  7. /*    to the License agreement, which is published in its entirety in       */
  8. /*    the in the file LICENSE.XBS.                                          */
  9. /*                                                                          */
  10. /*    USE OF THIS FILE IS SUBJECT TO THE RESTRICTIONS CONTAINED IN THE      */
  11. /*    XBBS LICENSING  AGREEMENT.  IF YOU DO NOT FIND THE TEXT OF            */
  12. /*    THIS AGREEMENT IN ANY OF THE AFOREMENTIONED FILES, OR IF YOU DO       */
  13. /*    NOT HAVE THESE FILES, YOU SHOULD IMMEDIATELY CONTACT M. KIMES         */
  14. /*    AT THE ADDRESS LISTED BELOW.  IN NO EVENT SHOULD YOU PROCEED TO USE   */
  15. /*    THIS FILE WITHOUT HAVING ACCEPTED THE TERMS OF THE XBBS LICENSING     */
  16. /*    AGREEMENT, OR SUCH OTHER AGREEMENT AS YOU ARE ABLE TO REACH WITH      */
  17. /*    M. KIMES                                                              */
  18. /*                                                                          */
  19. /*                                                                          */
  20. /* You can contact M. Kimes at the following address:                       */
  21. /*                                                                          */
  22. /* M. Kimes                         1:380/16.0@FidoNet                      */
  23. /* 542 Merrick                      (318)222-3455 data                      */
  24. /* Shreveport, LA  71104                                                    */
  25. /*                                                                          */
  26. /*                                                                          */
  27. /* Please feel free to contact me at any time to share your comments about  */
  28. /* my software and/or licensing policies.                                   */
  29. /*                                                                          */
  30. /*--------------------------------------------------------------------------*/
  31. /*======================================================================*/
  32. /*  XBBS Bulletin Board System.....Misc routines used by readfile()     */
  33. /*======================================================================*/
  34.  
  35. #include "msg.h"
  36. #include "xext.h"
  37.  
  38.  
  39. void pascal do_hangup (int handle) {
  40.  
  41.    cclose(handle);
  42.    fossil(DTR,DOWN);
  43.    baud=0;
  44.    logoff();
  45.    userno=0;
  46.    addtolog("Text file hang up");
  47.    exit(254);
  48. }
  49.  
  50.  
  51. void pascal setup_file (char *b) {
  52.  
  53.    stripcr(b);
  54.    strncpy(fboard.name,strtok(b,","),48);
  55.    fboard.name[46]=0;
  56.    strncpy(fboard.dpath,strtok(0," ,"),81);
  57.    fboard.dpath[80]=0;
  58.    strncpy(fboard.upath,strtok(0," ,"),81);
  59.    fboard.upath[80]=0;
  60.    fboard.flags=(char)atoi(strtok(0," ,"));
  61.    fboard.age=0;
  62.    fboard.userflags=0;
  63.    b=strtok(0," ,");
  64.    if(b) fboard.leechpercent=(char)atoi(b);
  65.    else fboard.leechpercent=0;
  66. }
  67.  
  68.  
  69. void pascal setup_msg (char *b) {
  70.  
  71.            stripcr(b);
  72.            strncpy(mboard.name,strtok(b,","),48);
  73.            mboard.name[47]=0;
  74.            mboard.attr=(word)atoi(strtok(0," ,"));
  75.            mboard.max=(word)atoi(strtok(0," ,"));
  76.            mboard.number=(word)atoi(strtok(0," ,"));
  77.            mboard.substat1=(word)atoi(strtok(0," ,"));
  78.            mboard.substat2=(word)atoi(strtok(0," ,"));
  79.            b=strtok(0,",");
  80.            if(b!=NULL)strncpy(mboard.forceto,b,36);
  81.            else *mboard.forceto=0;
  82.            mboard.forceto[35]=0;
  83.            mboard.age=0;
  84.            mboard.flags=0;
  85.            b=strtok(0,",");
  86.            if(b!=NULL) mboard.minwrite=(word)atol(b);
  87.            else mboard.minwrite=0;
  88. }
  89.  
  90.  
  91. char * pascal write_exit (char *b) {
  92.  
  93.    word temp;
  94.    char arg;
  95.  
  96.    temp=(word)atol(b);
  97.    b=strchr(b,' ');
  98.    if (b) b++;
  99.    arg=(char)atoi(b);
  100.    b=strchr(b,' ');
  101.    if (b) b++;
  102.    if (!baud) userinfo(0,arg);
  103.    else userinfo(temp,arg);
  104.    return b;
  105. }
  106.  
  107.  
  108. void pascal do_request (char *b) {
  109.  
  110.    if (pages>conf.pages) {
  111.      readfile("getlost.xbs",0,0,1);
  112.      pages++;
  113.    }
  114.    else {
  115.        addtolog("Requested chat.");
  116.        if (conf.sysopin) readfile("chat.xbs",0,0,1);
  117.        else readfile("nochat.xbs",0,0,1);
  118.        pages++;
  119.    }
  120. }
  121.  
  122.  
  123. void pascal do_list (char *b) {
  124.  
  125.     char a,arg;
  126.     char c[256];
  127.     char d[256];
  128.  
  129.     arg=*b;
  130.     b++;
  131.     stripcr(b);
  132.     strcpy(c,strtok(b," ,"));
  133.     strcpy(d,strtok(0,","));
  134.     a=*c;
  135.     if (isdigit(a)) strcpy(c,variable[a-'0']);
  136.     a=*d;
  137.     if (isdigit(a)) strcpy(d,variable[a-'0']);
  138.     level=0;
  139.  
  140.     if (arg=='F') {
  141.         if (!find_filearea(c,d,user.stat[(char)atoi(strtok(0,",\n"))])) level=1;
  142.     }
  143.     else if(arg=='M') {
  144.         if (!find_msgarea(c,d,0)) level=1;
  145.     }
  146.     else if(arg=='L') {
  147.         find_msgarea(c,d,2);
  148.     }
  149.     else if(arg=='l') {
  150.         find_filearea(c,"___",user.stat[(char)atoi(strtok(0,",\n"))]);
  151.     }
  152.     else if(arg=='m') {
  153.         if(!find_msgarea(c,d,1)) level=1;
  154.     }
  155. }
  156.  
  157.  
  158.  
  159. void pascal do_quote (char *b) {
  160.  
  161.     int a;
  162.  
  163.       a=atoi(b);
  164.       strtok(b," ,");
  165.       b=strtok(0," ,");
  166.       spit(a,stripcr(b));
  167. }
  168.  
  169.  
  170. void pascal do_special_ANSI_input (char *b) {
  171.  
  172.     char a,p,arg;
  173.  
  174.     a=(char)atoi(var_trans(strtok(b," ,")));
  175.     p=(char)atoi(var_trans(strtok(0," ,")));
  176.     arg=(char)atoi(var_trans(strtok(0," ,")));
  177.     strcpy(variable[a],ansimenu(p,arg,var_trans(strtok(0,"\n"))));
  178. }
  179.  
  180.  
  181. void pascal do_pulldowns (char *b,word *lastlevel) {
  182.  
  183.     char a,p,arg;
  184.     char *cm,*pp;
  185.     char tempause;
  186.  
  187.     a=(char)atoi(strtok(b,","));
  188.     p=(char)atoi(strtok(0,","));
  189.     b=strtok(0,",");
  190.     pp=strtok(0,",\n");
  191.     cm=strtok(0,",\n");
  192.     if(cm) {
  193.         if(*cm=='e') {
  194.             tempause=(char)lastlevel[cm[1]-'0'];
  195.         }
  196.         else if (*cm=='@') {
  197.             tempause=(char)atoi(variable[cm[1]-'0']);
  198.         }
  199.         else tempause=(char)atoi(cm);
  200.     }
  201.     else tempause=0;
  202.     cm=strtok(0,",\n");
  203.     if(cm) {
  204.         if(*cm=='e') {
  205.             arg=(char)lastlevel[cm[1]-'0'];
  206.         }
  207.         else if (*cm=='@') {
  208.             arg=(char)atoi(variable[cm[1]-'0']);
  209.         }
  210.         else arg=(char)atoi(cm);
  211.     }
  212.     else arg=0;
  213.     cm=strtok(0,"\n");
  214.     if(cm) {
  215.         stripcr(cm);
  216.         if(*cm=='@') cm=variable[cm[1]-'0'];
  217.     }
  218.     level=ansimenu2(a,p,b,pp,tempause,arg,cm);
  219. }
  220.  
  221.  
  222. void pascal do_alt_addr (char *b) {
  223.  
  224.     conf.alt_zone=(word)atol(var_trans(b));
  225.     conf.alt_net=(word)atol(var_trans(strtok(0,"/")));
  226.     conf.alt_node=(word)atol(var_trans(strtok(0,"@")));
  227.     strncpy(conf.alt_domain,var_trans(strtok(0,"\n")),37);
  228.     conf.alt_domain[36]=0;
  229. }
  230.  
  231.  
  232. void pascal change_msgpath (char *b) {
  233.  
  234.     stripcr(b);
  235.     save_lastread();
  236.     strncpy(messpath,var_trans(b),79);
  237.     messpath[78]=0;
  238.     load_lastread();
  239. }
  240.  
  241.  
  242. char * pascal do_hyper (char *b) {
  243.  
  244.     char a,arg;
  245.  
  246.     a=*b-'0';
  247.     b++;
  248.     switch ((int)a) {
  249.         case 0:  stripcr(b);
  250.                  if(!load_topics(convertstring(var_trans(b))))level=1;
  251.                  else level=0;
  252.                  b=NULL;
  253.                  break;
  254.         case 1:  stripcr(b);
  255.                  if(!set_topic(convertstring(var_trans(b))))level=1;
  256.                  else level=0;
  257.                  b=NULL;
  258.                  break;
  259.         case 2:  a=*b-'0';
  260.                  b++;
  261.                  arg=pauser;
  262.                  pauser=0;
  263.                  display_topic(user.stat[a],&b);
  264.                  pauser=arg;
  265.                  break;
  266.     }
  267.     return b;
  268. }
  269.  
  270.  
  271. void pascal do_readloop (char *b) {
  272.  
  273.     char *pp;
  274.     char a,arg,p;
  275.     word secl;
  276.  
  277.     pp=var_trans(strtok(b,","));
  278.     a=(char)atoi(var_trans(strtok(0,",")));
  279.     arg=(char)atoi(var_trans(strtok(0,",")));
  280.     p=(char)atoi(var_trans(strtok(0,",")));
  281.     secl=(word)atol(var_trans(strtok(0,",\n")));
  282.     do_all_msg_areas(pp,a,arg,p,secl);
  283. }
  284.  
  285.  
  286. char * pascal do_macro_buffer (char *b) {
  287.  
  288.     char a;
  289.  
  290.     a=*b;
  291.     b++;
  292.     if(a=='c') strset(keybuf,0);
  293.     else if (a=='a') {
  294.         if(*b=='@') {
  295.             b++;
  296.             a=*b;
  297.             b++;
  298.             b=variable[a-'0'];
  299.         }
  300.         stripcr(b);
  301.         strncat(keybuf,b,82-strlen(keybuf));
  302.         keybuf[81]=0;
  303.         b=NULL;
  304.     }
  305.     return b;
  306. }
  307.