home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Devil's Doorknob BBS Capture (1996-2003)
/
devilsdoorknobbbscapture1996-2003.iso
/
Dloads
/
WWIVMODS
/
PRE412.ZIP
/
BILBO85.MOD
< prev
next >
Wrap
Text File
|
1992-12-01
|
28KB
|
801 lines
Tuck #1 @3652
Fri Mar 09 21:28:15 1990
Bilbo Baggins #1 @7303
Thu Mar 08 00:22:34 1990
Version 0.85
- UPDATE LIST: 03-07-90
. Fixed bug in Xmodem and Ymodem downloads
. Cleaned up the doc file. Fixed remaining truncated lines and
removed extra characters that showed up in columns > 80.
The doc file is now printable on 80 columns in normal prt mode.
. Installed in WWIV 4.11. This mod works for both 4.10 and 4.11.
. Optimized a couple of case statements.
. Added Puma and Ymodem-G protocols.
This document was written by Bilbo Baggins, SYSOP of Late Night BBS
who can be reached at 1@7303 or (703)-361-3691. The purpose is to explain
how to modify your transfer section so that your users can both upload
and download in batch mode. This modification can be expanded upon by you
if you know enough to hack a little C code. I have included only Ymodem,
Zmodem, Ymodem-G, Puma and Lynx protocols in my code. You may add others
if you wish, however I must forwarn you that it is not a trivial task,
especially the batch upload portion.
Included in the archive should be BBBATCH.MOD (this file), BATCH.GFL -
the gfile you can use for your users and/or put in your documentation
download area, and BBBATCH.UPD - a file that let's you upgrade from
version one version to the next newer version.
In this mod, I use -I- to signify to insert a line, and -D- to delete
a line, and -M- to modify an existing line.
If you used my old batch DL mod, you may want to remove it and add
this mod in since it is MUCH more efficient. I shrank the DL portion
of the mod considerably. Also note that I got rid of Wayne's internal
Xmodem...at least as much as I dare for now. If you don't have 68K of
free memory and you are in the net, you CANNOT use this mod since Wayne
uses his internal Xmodem if there is not enough room to load DSZ.
The majority of your changes will be to XFER.C and SR.C, although a
few other files are touched minorly. This is a long and complicated
mod, but is easy to install if you follow the instructions closely. If
you have questions, please feel free to send me email, but please
forgive me if I take a while to reply since I am a very busy person.
It would be BEST to ask on the mod net, so I can answer a single ? for
many people.
This mod is in no way completed yet. I have a lot of ideas that I
want to pursue in the future. It is being released at this time for
several reasons. It is fairly much bug free, it is stable enough to
release, and it works as far as I can tell. No major bugs are presently
known. Any bugs you encounter, PLEASE send me e-mail at 1@7303. I will
add other protocols as I have time, but uploading in batch is not as
straight forward to implement with those I have tried (SUPER8K, Jmodem,
etc.). If you add a protocol, please cut it out and send it to me in
e-mail so I can add it to future releases, with due credit.
The mod works as follows:
- user enters xfer sections and scans for new files
- user selects an area and selects a file to DL
- user selects protocol 5 to add file to batch que
- user selects an area and selects a file to UL
- user selects protocol 5 to add file to batch que
- user repeats selections of files to upload and
download in any order and in any area.
- user fills in the descriptions for all uploads (no extended descriptions)
- user selects B from transfer menu to enter the batch menu
- user can remove, list, files in queue as well as clear the que
- user selects X to xfer, and is prompted for the protocol
- user selects Y, Z, or L for Ymodem, Zmodem, or Lynx
- Now if this is the first time user has used the batch upload portion
of this mod, he will be prompted for his protocol path, ul path, and
dl path as well as his COM port. This information is saved to disk
and may be edited any time you are in the batch menu by selecting E
- The user is prompted if he wishes to hangup after the xfer
- The user is prompted if he wishes to receive a file the mod has built
for him named BATCH.BAT. This batch file contains the Lynx or DSZ
commands to transfer everything. He should answer Y and drop to DOS
where he will run BATCH.BAT
- If user selected the hangup option, he may now leave his machine and
catch some ZZZ's. Otherwise he can stick around and toodle around
the board after the batch transfer is complete.
To summarize, the user adds files to two queues (one for UL and one for
DL). He adds descriptions to his uploads as he would if he were doing an
immediate upload. He selects the "BATCH" protocol and receives a
customized batch file to implement the batch transfer. He drops to DOS
and runs the batch file. He can upload to any area except those
which you the sysop has setup as download-only areas. OK, ready your
editor and take off into the world of batch xfers!
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
* Edit file VARS.H
* Search for batchfn[50]
-M- char batchfn[12][13];
-I- char batchdescr[12][59];
-M- int batchdir[12];
-M- float batchfntime[12];
-I- float batchtimeul,batchfntimeul[12];
-I- int numbatchul, batchdirul[12],num_listed;
-I- char batchfnul[12][13],batchpathul[12][59] ;
* Save file VARS.H
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
* Edit file XFER.C
* Search for batchfntime[50]
-M- extern float batchtime,batchfntime[12];
-M- extern int numbatch, batchdir[12];
-M- extern char batchfn[12][13],batchdescr[12][59],batchpathul[12][59] ;
-I- extern float batchtimeul,batchfntimeul[12];
-I- extern int numbatchul, batchdirul[12],num_listed;
-I- extern char batchfnul[12][13];
* Scroll down a bit and add the following typedef:
-I- typedef struct {
-I- char name[31], /* user's name */
-I- protopath[51], /* user's protocol path */
-I- ulpath[51], /* user's ul path */
-I- dlpath[51], /* user's dl path */
-I- comport[2]; /* user's com port */
-I- } batchuser;
* Search for send_file
-M- send_file(s1,&sent,&abort,s,-1,numbytes);
* Search for void upload(int dn)
* where the data is defined for this procedure:
-M- char s[81],s1[81],s2[81],*ss;
* Search for if (numf>=d.maxfiles) {
-M- if (numf>=(d.maxfiles-numbatchul)) {
* Search for if ((ok) && (yn())) {
-D- strcpy(s1,d.path);
-D- strcat(s1,s);
-I- sprintf(s1,"%s%s",d.path,stripfn(s));
* Search for receive_file
-M- receive_file(s,d.path,&ok,u.description,&dn);
* Search for the last else statement in the procedure upload.
You should add an if...endif after the else. Insert the two lines
in the code fragment below:
} else {
-I- if (numbatchul <= 0) {
nl();
nl();
pl("File transmission aborted.");
nl();
-I- } /* endif */
* Search for
if ((printfileinfo(&u,dn)) || (strncmp(u.filename,"WWIV4",5)==0)) {
strcpy(s1,(directories[dn].path));
-M- strcat(s1,stripfn(u.filename)); /* replace fn with stripfn(fn) */
sent=0;
* Search for send_file
-M- send_file(s1,&sent,&abort,u.filename,dn, u.numbytes);
* Search for void listbatch
-M- sprintf(s,"Files - %d Time - %s",numbatch+numbatchul,ctim(batchtime));
* Search down a few more lines and replace the for statement with these two:
-M- for (i=0; (i<numbatch) && (!abort) && (!hangup); i++) {
-M- sprintf(s,"DL #%d. %s %s",i+1,batchfn[i],ctim(batchfntime[i]));
-M- pla(s,&abort);
-M- }
-M- for (i=0; (i<numbatchul) && (!abort) && (!hangup); i++) {
-M- sprintf(s,"UL #%d. %s %s",i+1,batchfnul[i],ctim(batchfntimeul[i]));
-M- pla(s,&abort);
-M- }
* After the procedure listbatch, add the following procedure:
-I- batchuser batchcfg(int edit)
-I- {
-I- batchuser br;
-I- char s[81];
-I- int fhandle,found=0;
-I- long currec;
-I- /* open file BATCH.DAT in read/write mode */
-I- strcpy(s, syscfg.datadir);
-I- strcat(s, "BATCH.DAT");
-I- fhandle = open(s,O_RDWR | O_CREAT | O_BINARY,S_IREAD | S_IWRITE);
-I- currec = filelength(fhandle) / (long)sizeof(batchuser);
-I- /* find user's record */
-I- while ((currec > 0) && (!hangup) && (!found))
-I- {
-I- lseek(fhandle, (currec - 1) * (long)sizeof(batchuser), SEEK_SET);
-I- currec--;
-I- read(fhandle, (void *)(&br), sizeof(batchuser));
-I- if (!strcmp(thisuser.name,br.name)) {
-I- /* position file pointer to rewrite user's record */
-I- lseek(fhandle, (currec) * (long)sizeof(batchuser), SEEK_SET);
-I- /* say we found it */
-I- found = 1;
-I- }
-I- }
-I- /* if not found, add a default record for thisuser */
-I- if (!found) {
-I- close(fhandle);
-I- fhandle = open(s,O_RDWR | O_CREAT | O_APPEND | O_BINARY,
-I- S_IREAD | S_IWRITE);
-I- strcpy(br.name,thisuser.name);
-I- strcpy(br.protopath,"C:");
-I- strcpy(br.ulpath,"C:");
-I- strcpy(br.dlpath,"C:");
-I- strcpy(br.comport,"1");
-I- } /* endif */
-I- if ((!found) || (edit)) {
-I- /* prompt for dsz/ul/dl pathnames, comport, speed showing current values */
-I- prt(2,"Paths should look like C:\\TELIX\\PROTOCOL\\ <--- note
-I- the ending \\!");
-I- nl();
-I- sprintf(s,"Your protocol path (%s) : ",br.protopath);
-I- prt(1,s);
-I- input(s,50);
-I- /* if s not equal br.protopath AND s not equal to blank then */
-I- if ((strcmp(s,br.protopath)) && (strcmp(s,"")) )
-I- strcpy(br.protopath,s);
-I- sprintf(s,"Your UL path (%s) : ",br.ulpath);
-I- prt(1,s);
-I- input(s,50);
-I- if ((strcmp(s,br.ulpath)) && (strcmp(s,"")) )
-I- strcpy(br.ulpath,s);
-I- sprintf(s,"Your DL path (%s) : ",br.dlpath);
-I- prt(1,s);
-I- input(s,50);
-I- if ((strcmp(s,br.dlpath)) && (strcmp(s,"")) )
-I- strcpy(br.dlpath,s);
-I- sprintf(s,"Your COM port (%s) : ",br.comport);
-I- prt(1,s);
-I- input(s,1);
-I- if ((strcmp(s,br.comport)) && (strcmp(s,"")) )
-I- strcpy(br.comport,s);
-I- /* write new record back out to batch config file BATCH.DAT */
-I- write(fhandle, (void *)(&br), sizeof(batchuser));
-I- } /* endif */
-I- close(fhandle);
-I- /* return to caller */
-I- return(br);
-I- }
* In the next procedure, batchdl(), change the following:
-M- int i,abort,done,ok,had,rr;
-M- char s[81],ch,ch2;
* And add
-I- batchuser br;
* And change the second line as follows:
-M- if ((numbatch+numbatchul)==0) {
* Search further down in the procedure for Batch:
-I- helpl=22;
-M- prt(2,"Batch: L,R,C,X,E,Q (?=menu) : ");
-M- ch=onek("Q?ELRCX");
* For the '?' case, add the line:
-I- done=0;
* Add after case 'L'
-I- case 'E':
-I- br=batchcfg(1);
-I- break;
* Change case 'R' as follows...THANKS to my buddy Goose for this change!!
-I- case 'R':
-I- nl();
-I- prt(2,"Remove U)pload or D)ownload? : ");
-I- ch=onek("UD");
-I- prt(2,"Remove which? ");
-I- input(s,2);
-I- i=atoi(s);
-I- switch (ch) {
-I- case 'D':
-I- if ((i>0) && (i<=numbatch))
-I- delbatch(i-1);
-I- break;
-I- case 'U':
-I- if ((i>0) && (i<=numbatchul)) {
-I- --numbatchul;
-I- for (i1=i; i1<=numbatchul; i1++) {
-I- batchdirul[i1]=batchdirul[i1+1];
-I- strcpy((batchfnul[i1]),(batchfnul[i1+1]));
-I- strcpy((batchdescr[i1]),(batchdescr[i1+1]));
-I- strcpy((batchpathul[i1]),(batchpathul[i1]));
-I- }
-I- }
-I- break;
-I- }
-I- if ((numbatch==0) && (numbatchul==0)) {
-I- nl();
-I- pl("Batch queues empty.");
-I- nl();
-I- done=1;
-I- }
-I- break;
* Add to case 'C' after if (yn()) {
if (yn()) {
numbatch=0;
-I- numbatchul=0;
-I- batchtimeul=0.0;
* Delete the rest of the procedure starting at the line case 'D':
-D- case 'D':
-D- if (!incom)
-D- break;
-D- nl();
-D- prt(5,"Hang up after transfer? ");
-D- had=yn();
-D- nl();
-D- sprintf(s,"Transmitting: Files - %d Time - %s",numbatch,ctim(batchtime));
-D- pl(s);
-D- nl();
-D- ok=1;
-D- rr=0;
-D- if ((syscfg.req_ratio>0.0001) && (ratio()<syscfg.req_ratio))
-D- rr=1;
-D- if (thisuser.exempt & exempt_ratio)
-D- rr=0;
-D- if (rr) {
-D- nl();
-D- pl("Sorry, your ratio is too low.");
-D- nl();
-D- break;
-D- }
-D- do {
-D- tleft(1);
-D- if ((syscfg.req_ratio>0.0001) && (ratio()<syscfg.req_ratio))
-D- rr=1;
-D- if (thisuser.exempt & exempt_ratio)
-D- rr=0;
-D- if ((nsl()>=batchfntime[0]) && (!rr)) {
-D- dliscan1(batchdir[0]);
-D- i=recno((batchfn[0]));
-D- if (i<=0) {
-D- delbatch(0);
-D- } else {
-D- sprintf(s,"%d files left, Time left = %s\r\n",numbatch,ctim(batchtime));
-D- outs(s);
-D- SETREC(i);
-D- read(dlf,(void *)&u,sizeof(uploadsrec));
-D- strcpy(s,directories[batchdir[0]].path);
-D- strcat(s,u.filename);
-D- xymodem_send(s,&ok,&percent,u.filetype,1,1,1);
-D- if (ok) {
-D- ++thisuser.downloaded;
-D- thisuser.dk += (int) ((u.numbytes+1023)/1024);
-D- ++u.numdloads;
-D- SETREC(i);
-D- write(dlf,(void *)&u,sizeof(uploadsrec));
-D- strcpy(s,"Downloaded '");
-D- strcat(s,u.filename);
-D- strcat(s,"'");
-D- sysoplog(s);
-D- }
-D- }
-D- closedl();
-D- delbatch(0);
-D- } else
-D- delbatch(0);
-D- } while ((ok) && (!hangup) && (numbatch>0) && (!rr));
-D- if ((ok) && (!hangup))
-D- endbatch();
-D- if (rr) {
-D- nl();
-D- pl("Your ratio is too low to continue the transfer.");
-D- nl();
-D- }
-D- if (had)
-D- hangup=1;
-D- done=1;
-D- break;
-D- }
-D-} while ((!done) && (!hangup));
-D-}
* Then, add in new case 'X' to fill out the rest of the procedure
-I- case 'X':
-I- nl();
-I- pl("Batch Transfer -");
-I- nl();
-I- prt(2, "Batch Protocol: G,L,P,Y,Z,Q (?=menu) : ");
-I- while ((ch2=onek("Q?GLPYZ"))=='?')
-I- {
-I- printmenu(15);
-I- prt(2, "Batch Protocol: G,L,P,Y,Z,Q (?=menu) : ");
-I- }
-I- switch(ch2) {
-I- case 'Q':
-I- done=1;
-I- break;
-I- case 'Z': /* Zmodem batch */
-I- bat_prot(0,&had);
-I- if (had){
-I- hangup=1;
-I- }
-I- done=1;
-I- break;
-I- case 'Y': /* Ymodem Batch */
-I- bat_prot(1,&had);
-I- if (had)
-I- hangup=1;
-I- done=1;
-I- break;
-I- case 'L': /* Lynx Batch */
-I- bat_prot(2,&had);
-I- if (had)
-I- hangup=1;
-I- done=1;
-I- break;
-I- case 'P': /* Puma Batch */
-I- bat_prot(3,&had);
-I- if (had)
-I- hangup=1;
-I- done=1;
-I- break;
-I- case 'G': /* Ymodem-G Batch */
-I- bat_prot(4,&had);
-I- if (had)
-I- hangup=1;
-I- done=1;
-I- break;
-I- }
-I- break;
-I- }
-I- } while ((!done) && (!hangup));
-I- }
* Now insert the following procedure, bat_prot, before procedure arc_l :
int bat_prot(int t, int *had)
{
FILE *f;
int i,abort,done,rr,i2,numb,f1;
directoryrec d;
char s[81],s1[81],s2[81];
double percent;
uploadsrec u,u1;
int i1;
long l;
double ti;
batchuser br;
if (!incom)
{
*had=0;
return(*had);
}
nl();
prt(5,"Hang up after transfer? ");
*had=yn();
nl();
nl();
sprintf(s,"%s is currently online",thisuser.name);
outs(s);
nl();
sprintf(s,"Bilbo Baggins presents...The Batch UL/DL Mod!");
pl(s);
nl();
nl();
sprintf(s,"Transmitting: Files - %d DL Time - %s",numbatch+numbatchul,
ctim(batchtime));
pl(s);
nl();
rr=0;
if ((syscfg.req_ratio>0.0001) && (ratio()<syscfg.req_ratio)
&& (numbatch > 0))
rr=1;
if (thisuser.exempt & exempt_ratio)
rr=0;
if (rr) {
nl();
pl("Sorry, your ratio is too low.");
nl();
*had=0; /* reset hangup to no */
return(*had);
}
/* */
/* RECEIVE USER BATCH UPLOADS */
/* */
/* if there are files in the batch queue */
if ((numbatchul)>0) {
/* Send batch file to uploader */
prt(5,"Receive batch file for upload(s) ? ");
if (yn()) {
br=batchcfg(0);
strcpy(s,"C:\\BBS\\BATCH.BAT");
f = fopen(s,"w");
/* Write the filenames out to a file for protocol to use. */
switch (t)
{
case 0:
sprintf(s1,"%sdsz port %s sz %s",br.protopath,
br.comport,br.ulpath);
break;
case 1:
sprintf(s1,"%sdsz port %s sb %s",br.protopath,
br.comport,br.ulpath);
break;
case 2:
sprintf(s1,"%slynx s /%s /S /H %s",br.protopath,
br.comport,br.ulpath);
break;
case 3:
sprintf(s1,"%spuma P%s s %s",br.protopath,
br.comport,br.ulpath);
break;
case 4:
sprintf(s1,"%sdsz port %s sb -g %s",br.protopath,
br.comport,br.ulpath);
break;
} /* end switch */
for (i=0; (i<numbatchul); i++ ) { /* Writes a "clean" file. */
strcpy(s2,s1);
strcat(s2,stripfn(batchfnul[i]));
fprintf(f,"%s\n",s2);
} /* end for numbatchul */
/* if numbatch (dl) > 0, tack on receive batch to BATCH.BAT */
if (numbatch > 0) {
switch (t)
{
case 0:
sprintf(s1,"%sdsz port %s rz %s",br.protopath,
br.comport,br.dlpath);
fprintf(f,"%s\n",s1);
break;
case 1:
sprintf(s1,"%sdsz port %s rb %s",br.protopath,
br.comport,br.dlpath);
fprintf(f,"%s\n",s1);
break;
case 2:
sprintf(s1,"%slynx r /%s /S /H %s",br.protopath,
br.comport,br.dlpath);
fprintf(f,"%s\n",s1);
break;
case 3:
sprintf(s1,"%spuma P%s r %s",br.protopath,
br.comport,br.dlpath);
fprintf(f,"%s\n",s1);
break;
case 4:
sprintf(s1,"%sdsz port %s rb -g %s",br.protopath,
br.comport,br.dlpath);
fprintf(f,"%s\n",s1);
break;
}
} /* endif */
strcpy(s1,"EXIT\n");
fprintf(f,"%s\n",s1);
fclose(f);
pl("Sending BATCH.BAT file...");
extern_prot(t,s,1);
}
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
* Edit file BBSUTL.C
* Search for extern int numbatch, and modify as follows:
-M- extern int numbatch,numbatchul,numed,lines_listed;
* In the procedure logon, add the following line:
batchsize=0.0;
numbatch=0;
-I- numbatchul=0;
strcpy(xdate,date());
* Search for receive_file
-M- receive_file(s,s,&i1,s,0);
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
* Edit file FCNS.H
* Search for send_file
-M- void send_file(char *fn, int *sent, int *abort, char *sfn, int dn, long fs);
-M- void receive_file(char *fn,char *fn2, int *received, char *descr, int *dn);
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
* Edit file SR.C
* Search for batchtime
-M- extern float batchtime,batchfntime[12];
-M- extern int numbatch, batchdir[12];
-M- extern char batchfn[12][13],batchdescr[12][59],batchpathul[12][59] ;
-I- extern float batchtimeul,batchfntimeul[12];
-I- extern int numbatchul, batchdirul[12],num_listed;
-I- extern char batchfnul[12][13];
* Search for xymodem_send and delete the entire procedure!
* Search for xymodem_receive and delete the entire procedure!
* Search for receive_block and delete the entire procedure!
* Search for the procedure get_protocol and replace the following lines:
-D- if (dl>0)
-D- strcpy(oks,"Q?012345");
-D- else
-D- if (dl<0)
-D- strcpy(oks,"Q?02345");
-D- else
-D- strcpy(oks,"Q?02345");
-I- if (dl>0)
-I- strcpy(oks,"Q?012345");
-I- else
-I- strcpy(oks,"Q?02345");
-D- strcat(s,"YMODEM Batch");
-I- strcat(s,"Batch Xfer");
-D- if (dl==1)
-D- pl("5: YMODEM Batch");
-I- pl("5: Batch Xfer");
* Search for send_file and do the following:
-M- void send_file(char *fn, int *sent, int *abort, char *sfn, int dn, long fs)
* In SR.C, procedure send_file
* Search for the first switch, and replace cases 2/3/4 with the following:
break;
-M- case 2:
-M- case 3:
-M- if (incom) {
-M- sprintf(s,"DSZ port 1 pB4096 sx -z %s",fn);
-M- i = run_external1(s);
-M- }
-M- break;
-M- case 4:
-M- if (incom)
-M- {
-M- sprintf(s,"DSZ port 1 pB4096 sb -z %s",fn);
-M- i = run_external1(s);
-M- }
-M- break;
case 5:
*sent=0;
* Search for if (numbatch>=50) {
-M- if (numbatch>=12) {
* Search for } else {
-D- t=(12.656) / ((double) (modem_speed)) * ((double)(fs));
-I- i1=atoi(curspeed);
-I- if (i1==0)
-I- i1=syscfg.baudrate[syscfg.primaryport];
-I- t=(12.656) / ((double) (i1)) * ((double)(fs));
* Search for pl("Not enough time left in queue.");
-D- nl();
-D- *sent=0;
-D- *abort=0;
-D- } else {
-D- if (dn==-1) {
-D- nl();
-D- pl("Can't add temporary file to batch queue.");
* Search for pl("File added to batch queue.");
-D- pl("File added to batch queue.");
-D- sprintf(s,"Batch: Files - %d Time - %s",numbatch, ctim(batchtime));
-D- nl();
-I- itoa(numbatchul+numbatch,s,10);
-I- strcat(s," file(s) added to batch ques, DL time - ");
-I- strcat(s,ctim(batchtime));
* Search for the three } in a row and delete one of them
-D- }
* Search for if ((*sent==0) && (ok==0)) and insert the following line
BEFORE the if
-I- topscreen();
* Search for receive_file and do the following:
-M- void receive_file(char *fn, char *fn2, int *received, char *descr, int *dn)
* And add a new variable:
-I- char s[81];
* Search for xymodem_receive(fn,ft,received,0);
-D- xymodem_receive(fn,ft,received,0);
-I- sprintf(s,"DSZ port 1 pB4096 rx -z %s%s",fn2,stripfn(fn));
-I- i = run_external1(s);
-D- xymodem_receive(fn,ft,received,1);
-I- sprintf(s,"DSZ port 1 pB4096 rx -z %s%s",fn2,stripfn(fn));
-I- i = run_external1(s);
-D- xymodem_receive(fn,ft,received,1);
-I- sprintf(s,"DSZ port 1 pB4096 rb -z %s%s",fn2,stripfn(fn));
-I- i = run_external1(s);
-I- break;
-I- case 5:
-I- *received=0;
-I- if (numbatchul>=12) {
-I- pl("No room left in batch queue.");
-I- } else {
-I- strcpy(&(batchfnul[numbatchul][0]),fn);
-I- strcpy(&(batchpathul[numbatchul][0]),fn2);
-I- batchdirul[numbatchul]=*dn;
-I- strcpy(&(batchdescr[numbatchul][0]),descr);
-I- numbatchul++;
-I- itoa(numbatchul+numbatch,s,10);
-I- strcat(s," file(s) added to batch que.");
-I- pl(s);
-I- }
* Search for extern_prot(i-6,fn,0);
-D- extern_prot(i-6,fn,0);
-D- *received=exist(fn);
-I- strcpy(s,fn2);
-I- strcat(s,stripfn(fn));
-I- extern_prot(i-6,s,0);
-I- *received=exist(s);
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
OK, now that you have edited and saved the above files, load up Turbo C and
remake the BBS by doing a Build. RECOMPILE THE WHOLE BOARD!
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Add the following menu into your GFILES\MENUS.MSG (note that you may
have to use a different menu number if you have other mods in...:
`15===========================================================================
2G1:Ymodem-G Batch Protocol0
2L1:ynx Batch Protocol0
2P1:uma Batch Protocol0
2Y1:modem Batch Protocol0
2Z1:modem Batch Protocol0
2Q1:uit Protocol Menu0
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
VERY IMPORTANT! You must realize by now (I hope) that this mod depends on
using your external protocols which you setup by running INIT.EXE. The mod
ASSUMES that your board is setup like mine, with the Zmodem being the FIRST
external protocol, Ymodem SECOND, Lynx the THIRD, Puma the FOURTH, and
Ymodem-G the FIFTH!! Either setup your board like mine, or make the neccesary
changes to the code (pretty simple if you are game...).
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
A final word...this is not the last time I will release this mod. I have
a lot of ideas and will be releasing much cleaner versions later. I will
strive to put in a second file in future releases with just what changed
since the last release. I think this will make upgrading simpler.
If there are any problems, contact me at once at Late Night BBS,
703-361-3691 or through the mod net.
Bilbo Baggins 1@7303