home *** CD-ROM | disk | FTP | other *** search
- /*--------------------------------------------------------------------------*/
- /* */
- /* XBBS SOURCE CODE copyright (c) 1990 by M. Kimes */
- /* All Rights Reserved */
- /* */
- /* For complete details of the licensing restrictions, please refer */
- /* to the License agreement, which is published in its entirety in */
- /* the in the file LICENSE.XBS. */
- /* */
- /* USE OF THIS FILE IS SUBJECT TO THE RESTRICTIONS CONTAINED IN THE */
- /* XBBS LICENSING AGREEMENT. IF YOU DO NOT FIND THE TEXT OF */
- /* THIS AGREEMENT IN ANY OF THE AFOREMENTIONED FILES, OR IF YOU DO */
- /* NOT HAVE THESE FILES, YOU SHOULD IMMEDIATELY CONTACT M. KIMES */
- /* AT THE ADDRESS LISTED BELOW. IN NO EVENT SHOULD YOU PROCEED TO USE */
- /* THIS FILE WITHOUT HAVING ACCEPTED THE TERMS OF THE XBBS LICENSING */
- /* AGREEMENT, OR SUCH OTHER AGREEMENT AS YOU ARE ABLE TO REACH WITH */
- /* M. KIMES */
- /* */
- /* */
- /* You can contact M. Kimes at the following address: */
- /* */
- /* M. Kimes 1:380/16.0@FidoNet */
- /* 542 Merrick (318)222-3455 data */
- /* Shreveport, LA 71104 */
- /* */
- /* */
- /* Please feel free to contact me at any time to share your comments about */
- /* my software and/or licensing policies. */
- /* */
- /*--------------------------------------------------------------------------*/
- /*======================================================================*/
- /* XBBS Bulletin Board System.....Misc routines used by readfile() */
- /*======================================================================*/
-
- #include "msg.h"
- #include "xext.h"
-
-
- void pascal do_hangup (int handle) {
-
- cclose(handle);
- fossil(DTR,DOWN);
- baud=0;
- logoff();
- userno=0;
- addtolog("Text file hang up");
- exit(254);
- }
-
-
- void pascal setup_file (char *b) {
-
- stripcr(b);
- strncpy(fboard.name,strtok(b,","),48);
- fboard.name[46]=0;
- strncpy(fboard.dpath,strtok(0," ,"),81);
- fboard.dpath[80]=0;
- strncpy(fboard.upath,strtok(0," ,"),81);
- fboard.upath[80]=0;
- fboard.flags=(char)atoi(strtok(0," ,"));
- fboard.age=0;
- fboard.userflags=0;
- b=strtok(0," ,");
- if(b) fboard.leechpercent=(char)atoi(b);
- else fboard.leechpercent=0;
- }
-
-
- void pascal setup_msg (char *b) {
-
- stripcr(b);
- strncpy(mboard.name,strtok(b,","),48);
- mboard.name[47]=0;
- mboard.attr=(word)atoi(strtok(0," ,"));
- mboard.max=(word)atoi(strtok(0," ,"));
- mboard.number=(word)atoi(strtok(0," ,"));
- mboard.substat1=(word)atoi(strtok(0," ,"));
- mboard.substat2=(word)atoi(strtok(0," ,"));
- b=strtok(0,",");
- if(b!=NULL)strncpy(mboard.forceto,b,36);
- else *mboard.forceto=0;
- mboard.forceto[35]=0;
- mboard.age=0;
- mboard.flags=0;
- b=strtok(0,",");
- if(b!=NULL) mboard.minwrite=(word)atol(b);
- else mboard.minwrite=0;
- }
-
-
- char * pascal write_exit (char *b) {
-
- word temp;
- char arg;
-
- temp=(word)atol(b);
- b=strchr(b,' ');
- if (b) b++;
- arg=(char)atoi(b);
- b=strchr(b,' ');
- if (b) b++;
- if (!baud) userinfo(0,arg);
- else userinfo(temp,arg);
- return b;
- }
-
-
- void pascal do_request (char *b) {
-
- if (pages>conf.pages) {
- readfile("getlost.xbs",0,0,1);
- pages++;
- }
- else {
- addtolog("Requested chat.");
- if (conf.sysopin) readfile("chat.xbs",0,0,1);
- else readfile("nochat.xbs",0,0,1);
- pages++;
- }
- }
-
-
- void pascal do_list (char *b) {
-
- char a,arg;
- char c[256];
- char d[256];
-
- arg=*b;
- b++;
- stripcr(b);
- strcpy(c,strtok(b," ,"));
- strcpy(d,strtok(0,","));
- a=*c;
- if (isdigit(a)) strcpy(c,variable[a-'0']);
- a=*d;
- if (isdigit(a)) strcpy(d,variable[a-'0']);
- level=0;
-
- if (arg=='F') {
- if (!find_filearea(c,d,user.stat[(char)atoi(strtok(0,",\n"))])) level=1;
- }
- else if(arg=='M') {
- if (!find_msgarea(c,d,0)) level=1;
- }
- else if(arg=='L') {
- find_msgarea(c,d,2);
- }
- else if(arg=='l') {
- find_filearea(c,"___",user.stat[(char)atoi(strtok(0,",\n"))]);
- }
- else if(arg=='m') {
- if(!find_msgarea(c,d,1)) level=1;
- }
- }
-
-
-
- void pascal do_quote (char *b) {
-
- int a;
-
- a=atoi(b);
- strtok(b," ,");
- b=strtok(0," ,");
- spit(a,stripcr(b));
- }
-
-
- void pascal do_special_ANSI_input (char *b) {
-
- char a,p,arg;
-
- a=(char)atoi(var_trans(strtok(b," ,")));
- p=(char)atoi(var_trans(strtok(0," ,")));
- arg=(char)atoi(var_trans(strtok(0," ,")));
- strcpy(variable[a],ansimenu(p,arg,var_trans(strtok(0,"\n"))));
- }
-
-
- void pascal do_pulldowns (char *b,word *lastlevel) {
-
- char a,p,arg;
- char *cm,*pp;
- char tempause;
-
- a=(char)atoi(strtok(b,","));
- p=(char)atoi(strtok(0,","));
- b=strtok(0,",");
- pp=strtok(0,",\n");
- cm=strtok(0,",\n");
- if(cm) {
- if(*cm=='e') {
- tempause=(char)lastlevel[cm[1]-'0'];
- }
- else if (*cm=='@') {
- tempause=(char)atoi(variable[cm[1]-'0']);
- }
- else tempause=(char)atoi(cm);
- }
- else tempause=0;
- cm=strtok(0,",\n");
- if(cm) {
- if(*cm=='e') {
- arg=(char)lastlevel[cm[1]-'0'];
- }
- else if (*cm=='@') {
- arg=(char)atoi(variable[cm[1]-'0']);
- }
- else arg=(char)atoi(cm);
- }
- else arg=0;
- cm=strtok(0,"\n");
- if(cm) {
- stripcr(cm);
- if(*cm=='@') cm=variable[cm[1]-'0'];
- }
- level=ansimenu2(a,p,b,pp,tempause,arg,cm);
- }
-
-
- void pascal do_alt_addr (char *b) {
-
- conf.alt_zone=(word)atol(var_trans(b));
- conf.alt_net=(word)atol(var_trans(strtok(0,"/")));
- conf.alt_node=(word)atol(var_trans(strtok(0,"@")));
- strncpy(conf.alt_domain,var_trans(strtok(0,"\n")),37);
- conf.alt_domain[36]=0;
- }
-
-
- void pascal change_msgpath (char *b) {
-
- stripcr(b);
- save_lastread();
- strncpy(messpath,var_trans(b),79);
- messpath[78]=0;
- load_lastread();
- }
-
-
- char * pascal do_hyper (char *b) {
-
- char a,arg;
-
- a=*b-'0';
- b++;
- switch ((int)a) {
- case 0: stripcr(b);
- if(!load_topics(convertstring(var_trans(b))))level=1;
- else level=0;
- b=NULL;
- break;
- case 1: stripcr(b);
- if(!set_topic(convertstring(var_trans(b))))level=1;
- else level=0;
- b=NULL;
- break;
- case 2: a=*b-'0';
- b++;
- arg=pauser;
- pauser=0;
- display_topic(user.stat[a],&b);
- pauser=arg;
- break;
- }
- return b;
- }
-
-
- void pascal do_readloop (char *b) {
-
- char *pp;
- char a,arg,p;
- word secl;
-
- pp=var_trans(strtok(b,","));
- a=(char)atoi(var_trans(strtok(0,",")));
- arg=(char)atoi(var_trans(strtok(0,",")));
- p=(char)atoi(var_trans(strtok(0,",")));
- secl=(word)atol(var_trans(strtok(0,",\n")));
- do_all_msg_areas(pp,a,arg,p,secl);
- }
-
-
- char * pascal do_macro_buffer (char *b) {
-
- char a;
-
- a=*b;
- b++;
- if(a=='c') strset(keybuf,0);
- else if (a=='a') {
- if(*b=='@') {
- b++;
- a=*b;
- b++;
- b=variable[a-'0'];
- }
- stripcr(b);
- strncat(keybuf,b,82-strlen(keybuf));
- keybuf[81]=0;
- b=NULL;
- }
- return b;
- }
-