slash = Ustrrchr(big_buffer, '/');
Ustrcpy(slash+1, ".");
- alarm(30);
+ ALARM(30);
rc = Ustat(big_buffer, &statbuf);
if (rc != 0 && errno == EACCES && !sigalrm_seen)
{
rc = Ustat(big_buffer, &statbuf);
}
saved_errno = errno;
- alarm(0);
+ ALARM_CLR(0);
DEBUG(D_route) debug_printf("stat(%s)=%d\n", big_buffer, rc);
}
/* This function is passed a forward list string (unexpanded) or the name of a
file (unexpanded) whose contents are the forwarding list. The list may in fact
be a filter program if it starts with "#Exim filter" or "#Sieve filter". Other
-types of filter, with different inital tag strings, may be introduced in due
+types of filter, with different initial tag strings, may be introduced in due
course.
The job of the function is to process the forwarding list or filter. It is
for (addr = *generated; addr; addr = addr->next)
{
int reply_options = 0;
+ int ig_err = addr->prop.ignore_error ? 1 : 0;
if ( rda_write_string(fd, addr->address) != 0
|| write(fd, &addr->mode, sizeof(addr->mode)) != sizeof(addr->mode)
|| write(fd, &addr->flags, sizeof(addr->flags)) != sizeof(addr->flags)
|| rda_write_string(fd, addr->prop.errors_address) != 0
+ || write(fd, &ig_err, sizeof(ig_err)) != sizeof(ig_err)
)
goto bad;
/* Next comes the mode and the flags fields */
- if (read(fd, &addr->mode, sizeof(addr->mode)) != sizeof(addr->mode) ||
- read(fd, &addr->flags, sizeof(addr->flags)) != sizeof(addr->flags) ||
- !rda_read_string(fd, &addr->prop.errors_address)) goto DISASTER;
+ if ( read(fd, &addr->mode, sizeof(addr->mode)) != sizeof(addr->mode)
+ || read(fd, &addr->flags, sizeof(addr->flags)) != sizeof(addr->flags)
+ || !rda_read_string(fd, &addr->prop.errors_address)
+ || read(fd, &i, sizeof(i)) != sizeof(i)
+ )
+ goto DISASTER;
+ addr->prop.ignore_error = (i != 0);
/* Next comes a possible setting for $thisaddress and any numerical
variables for pipe expansion, terminated by a NULL string. The maximum