Many problems with "mailx"
Guy Harris
guy at sun.uucp
Sat Aug 10 08:33:45 AEST 1985
1) "mailx" only supports a message length equal to the largest unsigned
"int". "Mail" was modified after "mailx" split off so that it stored the
message length in a "long".
2) "mailx" doesn't handle RFC822 addresses properly. The routine "skin"
does not understand RFC822 addresses (in fact, the comment at the front
explicitly says it's for RFC733 addresses). Furthermore, "skin" isn't used
to scan things like the "From:" line when a message is being replied to,
even though it should be.
3) If an address begins with a "!", the routine "nameof" returns a pointer
to the "!" rather than the character following it.
4) There are a couple of places where pointers are not checked to see that
they are not NULL before they are dereferenced.
5) "From " lines containing quotes are not handled properly.
6) The user's ".mailrc" is normally not sourced until the mailbox file is
read in, so that if it contains a "cd" it won't invalidate the path for the
mailbox file. However, if the mailbox file is specified as a folder (i.e.,
"+foldername"), the ".mailrc" must be sourced first so that the user's
"folder" directory can be used to find the mailbox file.
7) A couple of routines in "mailx" use pointer variables which have never
been set.
One of the routines (rename) is never used. The code that uses
it has #ifdef OPTIM around it but is also commented out. "mailx"
is badly in need of "lint"ing. There are a lot of unused
variables and functions, a lot of functions which are not properly
declared, a lot of routines whose return value is never used, etc..
8) In one place, "mailx" assumes that a "malloc" will always succeed, which
is a very bad assumption to make.
Here are the fixes.
aux.c:
*** aux.c.orig Fri Aug 9 01:30:38 1985
--- aux.c Fri Aug 9 14:04:24 1985
***************
*** 124,143
}
/*
- * Compute the size in characters of the passed message
- */
-
- unsigned int
- msize(messp)
- struct message *messp;
- {
- register struct message *mp;
-
- mp = messp;
- return(mp->m_size);
- }
-
- /*
* Count the number of arguments in the given string raw list.
*/
--- 124,129 -----
}
/*
* Count the number of arguments in the given string raw list.
*/
***************
*** 527,533
cp2--;
while (cp2 > cp && *cp2 != '!')
cp2--;
! return(cp2);
}
/*
--- 513,521 -----
cp2--;
while (cp2 > cp && *cp2 != '!')
cp2--;
! if (*cp2 == '!')
! return(cp2 + 1);
! return(cp);
}
/*
***************
*** 531,537
}
/*
! * Skin an arpa net address according to the RFC 733 interpretation
* of "host-phrase."
*/
char *
--- 519,525 -----
}
/*
! * Skin an arpa net address according to the RFC 822 interpretation
* of "host-phrase."
*/
char *
***************
*** 542,547
register char *cp, *cp2;
int gotlt, lastsp;
char nbuf[BUFSIZ];
if (name == NOSTR)
return(NOSTR);
--- 530,536 -----
register char *cp, *cp2;
int gotlt, lastsp;
char nbuf[BUFSIZ];
+ int nesting;
if (name == NOSTR)
return(NOSTR);
***************
*** 545,551
if (name == NOSTR)
return(NOSTR);
! if (index(name, '(') == NOSTR && index(name, '<') == NOSTR)
return(name);
gotlt = 0;
lastsp = 0;
--- 534,541 -----
if (name == NOSTR)
return(NOSTR);
! if (index(name, '(') == NOSTR && index(name, '<') == NOSTR
! && index(name, ' ') == NOSTR)
return(name);
gotlt = 0;
lastsp = 0;
***************
*** 549,555
return(name);
gotlt = 0;
lastsp = 0;
! for (cp = name, cp2 = nbuf, c = *cp++; *cp; c = *cp++) {
switch (c) {
case '(':
while (*cp != ')' && *cp != 0)
--- 539,546 -----
return(name);
gotlt = 0;
lastsp = 0;
! bufend = nbuf;
! for (cp = name, cp2 = bufend; c = *cp++; ) {
switch (c) {
case '(':
/*
***************
*** 552,558
for (cp = name, cp2 = nbuf, c = *cp++; *cp; c = *cp++) {
switch (c) {
case '(':
! while (*cp != ')' && *cp != 0)
cp++;
if (*cp)
cp++;
--- 543,554 -----
for (cp = name, cp2 = bufend; c = *cp++; ) {
switch (c) {
case '(':
! /*
! * Start of a "comment".
! * Ignore it.
! */
! nesting = 1;
! while ((c = *cp) != 0) {
cp++;
switch (c) {
case '\\':
***************
*** 554,560
case '(':
while (*cp != ')' && *cp != 0)
cp++;
! if (*cp)
cp++;
break;
--- 550,583 -----
nesting = 1;
while ((c = *cp) != 0) {
cp++;
! switch (c) {
! case '\\':
! if (*cp == 0)
! goto outcm;
! cp++;
! break;
! case '(':
! nesting++;
! break;
!
! case ')':
! --nesting;
! break;
! }
!
! if (nesting <= 0)
! break;
! }
! outcm:
! lastsp = 0;
! break;
!
! case '"':
! /*
! * Start of a "quoted-string".
! * Copy it in its entirety.
! */
! while ((c = *cp) != 0) {
cp++;
switch (c) {
case '\\':
***************
*** 556,561
cp++;
if (*cp)
cp++;
break;
case ' ':
--- 579,597 -----
*/
while ((c = *cp) != 0) {
cp++;
+ switch (c) {
+ case '\\':
+ if ((c = *cp) == 0)
+ goto outqs;
+ cp++;
+ break;
+ case '"':
+ goto outqs;
+ }
+ *cp2++ = c;
+ }
+ outqs:
+ lastsp = 0;
break;
case ' ':
***************
*** 569,576
break;
case '>':
! if (gotlt)
! goto done;
/* Fall into . . . */
--- 605,621 -----
break;
case '>':
! if (gotlt) {
! gotlt = 0;
! while (*cp != ',' && *cp != 0)
! cp++;
! if (*cp == 0 )
! goto done;
! *cp2++ = ',';
! *cp2++ = ' ';
! bufend = cp2;
! break;
! }
/* Fall into . . . */
cmd2.c:
*** cmd2.c.orig Fri Aug 9 01:30:40 1985
--- cmd2.c Fri Aug 9 02:12:22 1985
***************
*** 195,201
char *disp;
FILE *obuf;
struct stat statb;
! int lc, cc, t;
printf("\"%s\" ", file);
flush();
--- 195,202 -----
char *disp;
FILE *obuf;
struct stat statb;
! int lc, t;
! long cc;
printf("\"%s\" ", file);
flush();
***************
*** 207,213
perror("");
return(1);
}
! cc = lc = 0;
for (ip = msgvec; *ip && ip-msgvec < msgCount; ip++) {
mesg = *ip;
touch(mesg);
--- 208,215 -----
perror("");
return(1);
}
! cc = 0L;
! lc = 0;
for (ip = msgvec; *ip && ip-msgvec < msgCount; ip++) {
mesg = *ip;
touch(mesg);
***************
*** 218,224
return(1);
}
lc += t;
! cc += msize(mp);
if (mark)
mp->m_flag |= MSAVED;
}
--- 220,226 -----
return(1);
}
lc += t;
! cc += mp->m_size;
if (mark)
mp->m_flag |= MSAVED;
}
***************
*** 226,232
if (ferror(obuf))
perror(file);
fclose(obuf);
! printf("%s %d/%d\n", disp, lc, cc);
}
/*
--- 228,234 -----
if (ferror(obuf))
perror(file);
fclose(obuf);
! printf("%s %d/%ld\n", disp, lc, cc);
}
/*
***************
*** 241,247
register struct message *mp;
register char *file, *disp;
char linebuf[BUFSIZ];
! int f, *msgvec, lc, cc, t;
FILE *obuf, *mesf;
struct stat statb;
--- 243,250 -----
register struct message *mp;
register char *file, *disp;
char linebuf[BUFSIZ];
! int f, *msgvec, lc, t;
! long cc;
FILE *obuf, *mesf;
struct stat statb;
***************
*** 272,278
perror("");
return(1);
}
! cc = lc = 0;
for (ip = msgvec; *ip && ip-msgvec < msgCount; ip++) {
mesg = *ip;
touch(mesg);
--- 275,282 -----
perror("");
return(1);
}
! cc = 0L;
! lc = 0;
for (ip = msgvec; *ip && ip-msgvec < msgCount; ip++) {
mesg = *ip;
touch(mesg);
***************
*** 283,289
while (t-- > 0) {
fgets(linebuf, BUFSIZ, mesf);
fputs(linebuf, obuf);
! cc += strlen(linebuf);
}
lc += mp->m_lines - 2;
mp->m_flag |= MSAVED;
--- 287,293 -----
while (t-- > 0) {
fgets(linebuf, BUFSIZ, mesf);
fputs(linebuf, obuf);
! cc += (long)strlen(linebuf);
}
lc += mp->m_lines - 2;
mp->m_flag |= MSAVED;
***************
*** 292,298
if (ferror(obuf))
perror(file);
fclose(obuf);
! printf("%s %d/%d\n", disp, lc, cc);
return(0);
}
--- 296,302 -----
if (ferror(obuf))
perror(file);
fclose(obuf);
! printf("%s %d/%ld\n", disp, lc, cc);
return(0);
}
cmd3.c:
*** cmd3.c.orig Fri Aug 9 01:30:41 1985
--- cmd3.c Fri Aug 9 02:14:30 1985
***************
*** 229,236
mp = &message[msgvec[0] - 1];
dot = mp;
! if ((rcv = hfield("from", mp))==NOSTR)
! rcv = nameof(mp, 1);
getrecf(rcv, recfile, useauthor);
replyto = skin(hfield("reply-to", mp));
strcpy(buf, "");
--- 229,236 -----
mp = &message[msgvec[0] - 1];
dot = mp;
! if ((rcv = skin(hfield("from", mp)))==NOSTR)
! rcv = skin(nameof(mp, 1));
getrecf(rcv, recfile, useauthor);
replyto = skin(hfield("reply-to", mp));
strcpy(buf, "");
***************
*** 237,243
if (replyto != NOSTR)
strcpy(buf, replyto);
else {
! cp = hfield("to", mp);
if (cp != NOSTR)
strcpy(buf, cp);
}
--- 237,243 -----
if (replyto != NOSTR)
strcpy(buf, replyto);
else {
! cp = skin(hfield("to", mp));
if (cp != NOSTR)
strcpy(buf, cp);
}
***************
*** 385,391
for (ip = msgvec; *ip != NULL; ip++) {
mesg = *ip;
mp = &message[mesg-1];
! printf("%d: %d\n", mesg, msize(mp));
}
return(0);
}
--- 385,391 -----
for (ip = msgvec; *ip != NULL; ip++) {
mesg = *ip;
mp = &message[mesg-1];
! printf("%d: %ld\n", mesg, mp->m_size);
}
return(0);
}
***************
*** 720,726
struct header head;
struct message *mp;
register int s, *ap;
! register char *cp, *subject;
for (s = 0, ap = msgvec; *ap != 0; ap++) {
mp = &message[*ap - 1];
--- 720,726 -----
struct header head;
struct message *mp;
register int s, *ap;
! register char *cp, *cp2, *subject;
for (s = 0, ap = msgvec; *ap != 0; ap++) {
mp = &message[*ap - 1];
***************
*** 725,731
for (s = 0, ap = msgvec; *ap != 0; ap++) {
mp = &message[*ap - 1];
dot = mp;
! s += strlen(nameof(mp, 2)) + 1;
}
if (s == 0)
return(0);
--- 725,734 -----
for (s = 0, ap = msgvec; *ap != 0; ap++) {
mp = &message[*ap - 1];
dot = mp;
! if ((cp = skin(hfield("from", mp))) != NOSTR)
! s += strlen(cp) + 1;
! else
! s += strlen(nameof(mp, 2)) + 1;
}
if (s == 0)
return(0);
***************
*** 733,739
head.h_to = cp;
for (ap = msgvec; *ap != 0; ap++) {
mp = &message[*ap - 1];
! cp = copy(nameof(mp, 2), cp);
*cp++ = ' ';
}
*--cp = 0;
--- 736,744 -----
head.h_to = cp;
for (ap = msgvec; *ap != 0; ap++) {
mp = &message[*ap - 1];
! if ((cp2 = skin(hfield("from", mp))) == NOSTR)
! cp2 = skin(nameof(mp, 2));
! cp = copy(cp2, cp);
*cp++ = ' ';
}
*--cp = 0;
cmd4.c:
*** cmd4.c.orig Fri Aug 9 01:30:42 1985
--- cmd4.c Fri Aug 9 02:16:06 1985
***************
*** 22,28
register int *ip, mesg;
register struct message *mp;
char *cp, *cmd;
! int f, *msgvec, lc, cc, t, nowait=0;
register int pid;
int page, s, pivec[2], (*sigint)();
char *Shell;
--- 22,29 -----
register int *ip, mesg;
register struct message *mp;
char *cp, *cmd;
! int f, *msgvec, lc, t, nowait=0;
! long cc;
register int pid;
int page, s, pivec[2], (*sigint)();
char *Shell;
***************
*** 88,94
/* send all messages to cmd */
page = (value("page")!=NOSTR);
! cc = lc = 0;
for (ip = msgvec; *ip && ip-msgvec < msgCount; ip++) {
mesg = *ip;
touch(mesg);
--- 89,96 -----
/* send all messages to cmd */
page = (value("page")!=NOSTR);
! cc = 0L;
! lc = 0;
for (ip = msgvec; *ip && ip-msgvec < msgCount; ip++) {
mesg = *ip;
touch(mesg);
***************
*** 98,104
return(1);
}
lc += t;
! cc += msize(mp);
if (page) putc('\f', pio);
}
--- 100,106 -----
return(1);
}
lc += t;
! cc += mp->m_size;
if (page) putc('\f', pio);
}
***************
*** 117,123
}
}
! printf("\"%s\" %d/%d\n", cmd, lc, cc);
return(0);
err:
--- 119,125 -----
}
}
! printf("\"%s\" %d/%ld\n", cmd, lc, cc);
return(0);
err:
collect.c:
*** collect.c.orig Fri Aug 9 01:30:43 1985
--- collect.c Fri Aug 9 02:21:11 1985
***************
*** 736,742
touch(*ip);
printf(" %d", *ip);
if (f == 'm') {
! if (transmit(&message[*ip-1], obuf) < 0) {
perror(tempMail);
return(-1);
}
--- 736,742 -----
touch(*ip);
printf(" %d", *ip);
if (f == 'm') {
! if (transmit(&message[*ip-1], obuf) < 0L) {
perror(tempMail);
return(-1);
}
***************
*** 757,762
* on error.
*/
transmit(mailp, obuf)
struct message *mailp;
FILE *obuf;
--- 757,763 -----
* on error.
*/
+ long
transmit(mailp, obuf)
struct message *mailp;
FILE *obuf;
***************
*** 762,769
FILE *obuf;
{
register struct message *mp;
! register int c, ch;
! int n, bol;
FILE *ibuf;
mp = mailp;
--- 763,771 -----
FILE *obuf;
{
register struct message *mp;
! register int ch;
! register long c, n;
! int bol;
FILE *ibuf;
mp = mailp;
***************
*** 768,774
mp = mailp;
ibuf = setinput(mp);
! c = msize(mp);
n = c;
bol = 1;
while (c-- > 0) {
--- 770,776 -----
mp = mailp;
ibuf = setinput(mp);
! c = mp->m_size;
n = c;
bol = 1;
while (c-- > 0L) {
***************
*** 771,777
c = msize(mp);
n = c;
bol = 1;
! while (c-- > 0) {
if (bol) {
bol = 0;
putc('\t', obuf);
--- 773,779 -----
c = mp->m_size;
n = c;
bol = 1;
! while (c-- > 0L) {
if (bol) {
bol = 0;
putc('\t', obuf);
***************
*** 778,784
n++;
if (ferror(obuf)) {
perror("/tmp");
! return(-1);
}
}
ch = getc(ibuf);
--- 780,786 -----
n++;
if (ferror(obuf)) {
perror("/tmp");
! return(-1L);
}
}
ch = getc(ibuf);
***************
*** 787,793
putc(ch, obuf);
if (ferror(obuf)) {
perror("/tmp");
! return(-1);
}
}
return(n);
--- 789,795 -----
putc(ch, obuf);
if (ferror(obuf)) {
perror("/tmp");
! return(-1L);
}
}
return(n);
edit.c:
*** edit.c.orig Fri Aug 9 01:30:45 1985
--- edit.c Fri Aug 9 02:23:41 1985
***************
*** 53,59
{
register int c;
int *ip, pid, mesg, lines;
! unsigned int ms;
int (*sigint)(), (*sigquit)();
FILE *ibuf, *obuf;
struct message *mp;
--- 53,59 -----
{
register int c;
int *ip, pid, mesg, lines;
! long ms;
int (*sigint)(), (*sigquit)();
FILE *ibuf, *obuf;
struct message *mp;
***************
*** 173,179
size = fsize(otf);
mp->m_block = blockof(size);
mp->m_offset = offsetof(size);
! ms = 0;
lines = 0;
while ((c = getc(ibuf)) != EOF) {
if (c == '\n')
--- 173,179 -----
size = fsize(otf);
mp->m_block = blockof(size);
mp->m_offset = offsetof(size);
! ms = 0L;
lines = 0;
while ((c = getc(ibuf)) != EOF) {
if (c == '\n')
fio.c:
*** fio.c.orig Fri Aug 9 01:30:47 1985
--- fio.c Fri Aug 9 02:27:59 1985
***************
*** 23,29
{
register int c;
register char *cp, *cp2;
! register int count, s, l;
off_t offset;
char linebuf[LINESIZE];
char wbuf[LINESIZE];
--- 23,30 -----
{
register int c;
register char *cp, *cp2;
! register int count, l;
! register long s;
off_t offset;
char linebuf[LINESIZE];
char wbuf[LINESIZE];
***************
*** 35,41
exit(1);
msgCount = 0;
offset = 0;
! s = 0;
l = 0;
maybe = 1;
flag = MUSED|MNEW;
--- 36,42 -----
exit(1);
msgCount = 0;
offset = 0;
! s = 0L;
l = 0;
maybe = 1;
flag = MUSED|MNEW;
***************
*** 89,95
this.m_offset = offsetof(offset);
this.m_size = s;
this.m_lines = l;
! s = 0;
l = 0;
if (append(&this, mestmp)) {
perror(tempSet);
--- 90,96 -----
this.m_offset = offsetof(offset);
this.m_size = s;
this.m_lines = l;
! s = 0L;
l = 0;
if (append(&this, mestmp)) {
perror(tempSet);
***************
*** 114,120
}
}
offset += count;
! s += count;
l++;
maybe = 0;
if (linebuf[0] == 0)
--- 115,121 -----
}
}
offset += count;
! s += (long)count;
l++;
maybe = 0;
if (linebuf[0] == 0)
***************
*** 255,261
m->m_lines = (m+1)->m_lines;
m->m_flag = (m+1)->m_flag;
}
! message[msgCount].m_size = 0;
message[msgCount].m_lines = 0;
}
--- 256,262 -----
m->m_lines = (m+1)->m_lines;
m->m_flag = (m+1)->m_flag;
}
! message[msgCount].m_size = 0L;
message[msgCount].m_lines = 0;
}
head.c:
*** head.c.orig Fri Aug 9 01:30:48 1985
--- head.c Fri Aug 9 02:30:48 1985
***************
*** 85,90
cp = nextword(cp, word);
dp = nextword(cp, word);
if (!equal(word, ""))
hl->l_from = copyin(word, &sp);
if (isname(dp, "tty", 3)) {
--- 85,92 -----
cp = nextword(cp, word);
dp = nextword(cp, word);
+ if (dp == NOSTR)
+ return;
if (!equal(word, ""))
hl->l_from = copyin(word, &sp);
if (isname(dp, "tty", 3)) {
***************
*** 271,277
}
cp2 = wbuf;
while (!any(*cp, " \t") && *cp != '\0')
! *cp2++ = *cp++;
*cp2 = '\0';
while (any(*cp, " \t"))
cp++;
--- 273,286 -----
}
cp2 = wbuf;
while (!any(*cp, " \t") && *cp != '\0')
! if (*cp == '"') {
! *cp2++ = *cp++;
! while (*cp != '\0' && *cp != '"')
! *cp2++ = *cp++;
! if (*cp == '"')
! *cp2++ = *cp++;
! } else
! *cp2++ = *cp++;
*cp2 = '\0';
while (any(*cp, " \t"))
cp++;
lex.c:
*** lex.c.orig Fri Aug 9 01:30:50 1985
--- lex.c Fri Aug 9 02:33:34 1985
***************
*** 478,483
if (msgvec != (int *) 0)
cfree(msgvec);
msgvec = (int *) calloc((unsigned) (sz + 1), sizeof *msgvec);
}
--- 478,485 -----
if (msgvec != (int *) 0)
cfree(msgvec);
+ if (sz < 1)
+ sz = 1; /* need at least one cell for terminating 0 */
msgvec = (int *) calloc((unsigned) (sz + 1), sizeof *msgvec);
}
main.c:
*** main.c.orig Fri Aug 9 01:30:54 1985
--- main.c Fri Aug 9 02:36:36 1985
***************
*** 33,38
register char *ef;
register int i, argp;
int mustsend, uflag, hdrstop(), (*prevint)(), f;
FILE *ibuf, *ftat;
extern char _sobuf[];
struct termio tbuf;
--- 33,39 -----
register char *ef;
register int i, argp;
int mustsend, uflag, hdrstop(), (*prevint)(), f;
+ int loaded = 0;
FILE *ibuf, *ftat;
extern char _sobuf[];
struct termio tbuf;
***************
*** 287,293
* the system mailbox, and open up the right stuff.
*
* Do this before sourcing the MAILRC, because there might be
! * a 'chdir' there that breaks the -f option.
*/
if (ef != NOSTR) {
--- 288,296 -----
* the system mailbox, and open up the right stuff.
*
* Do this before sourcing the MAILRC, because there might be
! * a 'chdir' there that breaks the -f option. But if the
! * file specified with -f is a folder name, go ahead and
! * source the MAILRC anyway so that "folder" will be defined.
*/
if (ef != NOSTR) {
***************
*** 294,299
char *ename;
edit++;
ename = expand(ef);
if (ename != ef) {
ef = (char *) calloc(1, strlen(ename) + 1);
--- 297,306 -----
char *ename;
edit++;
+ if (*ef == '+') {
+ load(Getf("MAILRC"));
+ loaded++;
+ }
ename = expand(ef);
if (ename != ef) {
ef = (char *) calloc(1, strlen(ename) + 1);
***************
*** 306,312
if (setfile(mailname, edit) < 0)
exit(1);
! load(Getf("MAILRC"));
if (msgCount > 0 && !noheader && value("header") != NOSTR) {
if (setjmp(hdrjmp) == 0) {
if ((prevint = sigset(SIGINT, SIG_IGN)) != SIG_IGN)
--- 313,320 -----
if (setfile(mailname, edit) < 0)
exit(1);
! if (!loaded)
! load(Getf("MAILRC"));
if (msgCount > 0 && !noheader && value("header") != NOSTR) {
if (setjmp(hdrjmp) == 0) {
if ((prevint = sigset(SIGINT, SIG_IGN)) != SIG_IGN)
optim.c:
*** optim.c.orig Fri Aug 9 01:30:57 1985
--- optim.c Fri Aug 9 14:49:26 1985
***************
*** 117,122
char buf[BUFSIZ], path[BUFSIZ];
register int c, host;
strcpy(path, "");
for (;;) {
if ((c = *cp++) == 0)
--- 117,123 -----
char buf[BUFSIZ], path[BUFSIZ];
register int c, host;
+ cp = str;
strcpy(path, "");
for (;;) {
if ((c = *cp++) == 0)
***************
*** 724,729
{
register char *cp, *last;
last = NOSTR;
while (*cp) {
if (*cp == mach)
--- 725,731 -----
{
register char *cp, *last;
+ cp = str;
last = NOSTR;
while (*cp) {
if (*cp == mach)
send.c:
*** send.c.orig Fri Aug 9 01:31:00 1985
--- send.c Fri Aug 9 12:29:10 1985
***************
*** 27,33
{
register struct message *mp;
register int t;
! unsigned int c;
FILE *ibuf;
char line[LINESIZE], field[BUFSIZ];
int lc, ishead, infld, fline, dostat;
--- 27,33 -----
{
register struct message *mp;
register int t;
! long c;
FILE *ibuf;
char line[LINESIZE], field[BUFSIZ];
int lc, ishead, infld, fline, dostat;
***************
*** 36,42
mp = mailp;
ibuf = setinput(mp);
! c = msize(mp);
ishead = 1;
dostat = 1;
infld = 0;
--- 36,42 -----
mp = mailp;
ibuf = setinput(mp);
! c = mp->m_size;
ishead = 1;
dostat = 1;
infld = 0;
***************
*** 43,49
fline = 1;
lc = 0;
clearerr(obuf);
! while (c > 0) {
fgets(line, LINESIZE, ibuf);
c -= strlen(line);
lc++;
--- 43,49 -----
fline = 1;
lc = 0;
clearerr(obuf);
! while (c > 0L) {
fgets(line, LINESIZE, ibuf);
c -= (long)strlen(line);
lc++;
***************
*** 45,51
clearerr(obuf);
while (c > 0) {
fgets(line, LINESIZE, ibuf);
! c -= strlen(line);
lc++;
if (ishead) {
/*
--- 45,51 -----
clearerr(obuf);
while (c > 0L) {
fgets(line, LINESIZE, ibuf);
! c -= (long)strlen(line);
lc++;
if (ishead) {
/*
vars.c:
*** vars.c.orig Fri Aug 9 01:31:13 1985
--- vars.c Fri Aug 9 02:49:17 1985
***************
*** 107,113
if (equal(str, ""))
return("");
! top = calloc(strlen(str)+1, 1);
cp = top;
cp2 = str;
while (*cp++ = *cp2++)
--- 107,114 -----
if (equal(str, ""))
return("");
! if ((top = calloc(strlen(str)+1, 1) == NULL)
! panic ("Out of memory");
cp = top;
cp2 = str;
while (*cp++ = *cp2++)
hdr/def.h:
*** hdr/def.h.orig Fri Aug 9 01:30:29 1985
--- hdr/def.h Fri Aug 9 14:03:03 1985
***************
*** 36,42
short m_flag; /* flags, see below */
short m_block; /* block number of this message */
short m_offset; /* offset in block of message */
! unsigned m_size; /* Bytes in the message */
short m_lines; /* Lines in the message */
};
--- 36,42 -----
short m_flag; /* flags, see below */
short m_block; /* block number of this message */
short m_offset; /* offset in block of message */
! long m_size; /* Bytes in the message */
short m_lines; /* Lines in the message */
};
***************
*** 292,295
struct name *usermap();
struct name *verify();
struct var *lookup();
- unsigned int msize();
--- 292,294 -----
struct name *usermap();
struct name *verify();
struct var *lookup();
More information about the Net.bugs.usg
mailing list