diff -urN -x .svn ../../vendor/vpopmail/vpopmail.c ./vpopmail.c
--- ../../vendor/vpopmail/vpopmail.c 2007-10-07 23:44:14.000000000 +0300
+++ ./vpopmail.c 2007-10-08 11:53:36.000000000 +0300
@@ -1559,7 +1559,7 @@
i++;
}
-k = strlen(s) - i - 1;
+k = strlen(s) - i;
if( i>0 ) {
for( j=0; j<k; j++ ) {
@@ -1571,7 +1571,7 @@
// trim spaces and tabs from end
i = strlen(s) - 1;
-while(( s[i] == ' ' ) || ( s[i] == '\t' )) {
+while(i >= 0 && ( s[i] == ' ' ) || ( s[i] == '\t' )) {
i--;
}
@@ -4127,11 +4127,19 @@
}
else if ( pid > 0 )
{
- wait(&rv);
- return(rv);
+ if (waitpid ( pid, &rv, 0 ) < 0 ||
+ !WIFEXITED( rv ) || WEXITSTATUS( rv ) != 0 ) {
+ fprintf(stderr,
+ "ONCHANGE script %s did not exit gracefully.\n",
+ path);
+ return(rv);
+ }
+ return(0);
}
- fprintf(stderr, "ONCHANGE script %s unable to fork.\n", path);
- return(0);
+ rv = errno;
+ fprintf(stderr, "ONCHANGE script %s unable to fork: %s\n", path,
+ strerror(rv));
+ return(rv);
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1