On Mon, 2007-04-16 at 12:17 +0800, M1 wrote:
Apr 16 12:11:17 mx postfix/pipe[2588]: C8D9B121BC7: to=steve@xyz.com, relay=dovecot, delay=0.12, delays=0.06/0.01/0/0.05, dsn=5.3.0, status=bounced (Command died with status 2: "/usr/libexec/dovecot/deliver". Command output: input in flex scanner failed )
I'm not sure if I should hate libsieve, flex or both, but this error message is horrible. I had no idea what it meant before looking at the sources. The code that produces it is in src/libsieve/sieve-lex.c:
while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
{ \
if( errno != EINTR) \
{ \
YY_FATAL_ERROR( "input in flex scanner failed" ); \
break; \
} \
So fread() fails, but it doesn't bother telling why. You could change the YY_FATAL_ERROR() to something like:
fprintf(stderr, "input in flex scanner failed: %s", strerror(errno));
That could give additional information. Although I've no idea why fread() would fail here.