that would need to be duplicated here. So we simply do some ungetc
trickery.
*/
- fseek(fout, -1, SEEK_CUR);
- if (fgetc(fout) == '\n') return END_DOT;
+ if (fout)
+ {
+ if (fseek(fout, -1, SEEK_CUR) < 0) return END_PROTOCOL;
+ if (fgetc(fout) == '\n') return END_DOT;
+ }
if (linelength == -1) /* \r already seen (see below) */
{
else
{
message_size++;
- if (fout != NULL && fputc('\n', fout) == EOF) return END_WERROR;
+ if (fout && fputc('\n', fout) == EOF) return END_WERROR;
(void) cutthrough_put_nl();
if (ch == '\r') continue; /* don't write CR */
ch_state = MID_LINE;
NOTE: If ever the format of message ids is changed, the regular expression for
checking that a string is in this format must be updated in a corresponding
way. It appears in the initializing code in exim.c. The macro MESSAGE_ID_LENGTH
-must also be changed to reflect the correct string length. Then, of course,
-other programs that rely on the message id format will need updating too. */
+must also be changed to reflect the correct string length. The queue-sort code
+needs to know the layout. Then, of course, other programs that rely on the
+message id format will need updating too. */
Ustrncpy(message_id, string_base62((long int)(message_id_tv.tv_sec)), 6);
message_id[6] = '-';