Category : BBS Programs+Doors
Archive   : TONSMOD.ZIP
Filename : MUSTMOD.MOD

 
Output of file : MUSTMOD.MOD contained in archive : TONSMOD.ZIP
MOD!!!!
Hippie #2 @3115
Sun Oct 04 15:55:04 1992
RE: Yes yes yes yes yes yes yes



This modification will read NNALL.NET (if present) or NN*.NET, and N*.NET
and send a text file to the #1 account at each node. It's a little sloppy,
having to read the file in for each e-mail, but it works.

Enjoy..........



In BBS.C, add this near /E, /O, etc....

/*********************/
if (strcmp(s, "/M") == 0)
{
nl();
prt(1, "Mail hosts or subscribers? (Q/H/S)");
ch = onek("QHS");
switch(ch)
{
case 'Q':
return;
case 'S':
nl();
prt(2, "Subscribers");
net_m_mail(0);
break;
case 'H':
nl();
prt(2, "Hosts");
net_m_mail(1);
break;
}
}
/***********************/

In MULTMAIL.C, add this block at the top.........

/*******************************/
#define NET 0 /* <<<<<<<---------- If WWIV is not the first */
/* net in init, change this */

typedef struct
{
int thisuser,
thisnode,
thisnet;
} adds;
/*********************************/

And add this function at the bottom.....

/**********************************/
void net_m_mail(int which)
/****** which ---- 1 = hosts, 0 = subscribers ******/
{
char s[81], s1[81], *ss, *in, ch;
int i, f, q, max = 0;
adds a[100];
struct ffblk ff;
FILE *fp;
long len1, len2;

nl();
ansic(1);
npr("(*> Mail All %s <*)", ((which) ? "Hosts" : "Subscribers"));
nl();
nl();
pl("Reading in Files: ");
if (which)
{
sprintf(s,"%sNNALL.NET", net_data);
if (exist(s))
{
i=open(s, O_RDONLY | O_BINARY);
in = malloca(filelength(i));
if ((i != -1) && (in != NULL))
{
read(i, (void *)in, filelength(i));
close(i);
q = 0;
do
{
if (q)
{
ss = strtok(NULL, " ");
}
else
{
ss=strtok(in," ");
q = 1;
}
if (ss)
{
ss=strtok(NULL," ");
if (ss)
{
a[max].thisnode = (unsigned short) atol(ss);
a[max].thisuser = 1;
a[max++].thisnet = NET;
}
ss = strtok(NULL, "\n");
}
} while (ss != NULL);
}
}
else
{
sprintf(s,"%sNN*.NET",net_data);
i = findfirst(s, &ff, 0);
while (!i)
{
sprintf(s1, "%s%s", net_data, ff.ff_name);
f = open(s1, O_RDONLY | O_BINARY);
if (f != -1)
{
len1=filelength(f);
if ((in=malloca(100L))!=NULL)
{
lseek(f,0L,SEEK_SET);
read(f,(void *)in,len1);
in[len1]=0;
close(f);
a[max].thisnode = atoi(in);
a[max].thisuser = 1;
a[max++].thisnet = NET;
}
}
farfree(in);
i = findnext(&ff);
}
}
}
else
{
sprintf(s, "%sN*.NET", net_data);
i = findfirst(s, &ff, 0);
while (!i)
{
if (ff.ff_name[1] == 'N')
{
i = findnext(&ff);
continue;
}
sprintf(s1, "%s%s", net_data, ff.ff_name);
q = open(s1, O_RDONLY | O_BINARY);
in = malloca(filelength(q));
read(q, (void *)in, filelength(q));
close(q);
f = 0;
do
{
if (f)
ss = strtok(NULL, "\n");
else
{
f = 1;
ss = strtok(in, "\n");
}
a[max].thisuser = 1;
a[max].thisnode = atoi(ss);
a[max++].thisnet = 0;
} while (ss);
i = findnext(&ff);
}
}
nl();
for (i = 0; i < max; i++)
{
if (a[i].thisnode)
npr("User - %3d Node - %3d Net - %3d\r\n", a[i].thisuser,
a[i].thisnode,
a[i].thisnet);
}
nl();
npr("\r\n\nTotal Addresses: %i\r\n",max);
nl();
prt(1, "Enter filename to send: ");
input(s1, 80);
if (exist(s1))
{
for (i=0;i {
if (a[i].thisnode)
{
load_workspace(s1, 1);
email(a[i].thisuser, a[i].thisnode, -1, 0);
}
}
nl();
prt(2, "Done!\r\n\r\n");
}
else
pl("File not found");
}


2Enjoy......


  3 Responses to “Category : BBS Programs+Doors
Archive   : TONSMOD.ZIP
Filename : MUSTMOD.MOD

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/