if (scanner_record == NULL) {
int err = errno;
- pclose(scanner_out);
+ (void) pclose(scanner_out);
signal(SIGCHLD,eximsigchld); signal(SIGPIPE,eximsigpipe);
return m_errlog_defer(scanent,
string_sprintf("opening scanner output file (%s) failed: %s.",
while(fgets(CS linebuffer, sizeof(linebuffer), scanner_out)) {
if ( Ustrlen(linebuffer) > fwrite(linebuffer, 1, Ustrlen(linebuffer), scanner_record) ) {
/* short write */
- pclose(scanner_out);
+ (void) pclose(scanner_out);
signal(SIGCHLD,eximsigchld); signal(SIGPIPE,eximsigpipe);
return m_errlog_defer(scanent,
string_sprintf("short write on scanner output file (%s).", file_name));
}
(void)fclose(scanner_record);
- pclose(scanner_out);
+ sep = pclose(scanner_out);
signal(SIGCHLD,eximsigchld); signal(SIGPIPE,eximsigpipe);
+ if (sep != 0)
+ if (sep == -1)
+ return m_errlog_defer(scanent,
+ string_sprintf("running scanner failed: %s", strerror(sep)));
+ else
+ return m_errlog_defer(scanent,
+ string_sprintf("scanner returned error code: %d", sep));
if (trigger) {
uschar * s;