aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fetchmail.c2
-rw-r--r--fetchmail.h2
-rw-r--r--rcfile_y.y4
-rw-r--r--transact.c9
4 files changed, 10 insertions, 7 deletions
diff --git a/fetchmail.c b/fetchmail.c
index e4a8cb72..6b26a6b2 100644
--- a/fetchmail.c
+++ b/fetchmail.c
@@ -1106,6 +1106,8 @@ static int load_params(int argc, char **argv, int optind)
exit(PS_SYNTAX);
}
#endif /* SSL_ENABLE */
+ /* one global gets treated specially */
+ DEFAULT(run.showdots, run.poll_interval==0 || nodetach);
#undef DEFAULT
/*
diff --git a/fetchmail.h b/fetchmail.h
index edcb57c8..f13b1205 100644
--- a/fetchmail.h
+++ b/fetchmail.h
@@ -508,7 +508,7 @@ void stuff_warning();
void close_warning_by_mail(struct query *, struct msgblk *);
/* rfc822.c: RFC822 header parsing */
-unsigned char *reply_hack(unsigned char *, const unsigned char *);
+unsigned char *reply_hack(unsigned char *, const unsigned char *, int *);
unsigned char *nxtaddr(const unsigned char *);
/* uid.c: UID support */
diff --git a/rcfile_y.y b/rcfile_y.y
index bd5faa6d..48f75ee4 100644
--- a/rcfile_y.y
+++ b/rcfile_y.y
@@ -106,8 +106,8 @@ statement : SET LOGFILE optmap STRING {run.logfile = prependdir ($4, rcfiledir);
| SET NO SYSLOG {run.use_syslog = FALSE;}
| SET INVISIBLE {run.invisible = TRUE;}
| SET NO INVISIBLE {run.invisible = FALSE;}
- | SET SHOWDOTS {run.showdots = TRUE;}
- | SET NO SHOWDOTS {run.showdots = FALSE;}
+ | SET SHOWDOTS {run.showdots = FLAG_TRUE;}
+ | SET NO SHOWDOTS {run.showdots = FLAG_FALSE;}
/*
* The way the next two productions are written depends on the fact that
diff --git a/transact.c b/transact.c
index 69053b56..49cffc08 100644
--- a/transact.c
+++ b/transact.c
@@ -448,7 +448,7 @@ int readheaders(int sock,
*/
if ( n && buf[n-1] != '\n' ) {
overlong = TRUE;
- rline = (char *) realloc(line, linelen);
+ rline = (char *) realloc(line, linelen + 1);
if (rline == NULL)
{
free (line);
@@ -456,6 +456,7 @@ int readheaders(int sock,
}
line = rline;
memcpy(line + linelen - n, buf, n);
+ line[linelen] = '\0';
ch = ' '; /* So the next iteration starts */
continue;
}
@@ -551,7 +552,7 @@ int readheaders(int sock,
sizeticker += linelen;
while (sizeticker >= SIZETICKER)
{
- if ((!run.use_syslog && !isafile(1)) || run.showdots)
+ if (outlevel > O_SILENT && run.showdots)
{
fputc('.', stdout);
fflush(stdout);
@@ -693,7 +694,7 @@ int readheaders(int sock,
}
if (ctl->rewrite)
- line = reply_hack(line, ctl->server.truename);
+ line = reply_hack(line, ctl->server.truename, &linelen);
/*
* OK, this is messy. If we're forwarding by SMTP, it's the
@@ -1337,7 +1338,7 @@ int readbody(int sock, struct query *ctl, flag forward, int len)
sizeticker += linelen;
while (sizeticker >= SIZETICKER)
{
- if (outlevel > O_SILENT && (((run.poll_interval == 0 || nodetach) && !isafile(1)) || run.showdots))
+ if (outlevel > O_SILENT && run.showdots)
{
fputc('.', stdout);
fflush(stdout);