allow extra message in errors

This commit is contained in:
Pierangelo Masarati 2006-04-08 11:01:01 +00:00
parent 037d513aee
commit 484ba6834b
9 changed files with 59 additions and 50 deletions

View file

@ -208,19 +208,19 @@ addmodifyop( LDAPMod ***pmodsp, int modop, char *attr, char *value, int vlen )
if ( pmods == NULL || pmods[ i ] == NULL ) { if ( pmods == NULL || pmods[ i ] == NULL ) {
if (( pmods = (LDAPMod **)realloc( pmods, (i + 2) * if (( pmods = (LDAPMod **)realloc( pmods, (i + 2) *
sizeof( LDAPMod * ))) == NULL ) { sizeof( LDAPMod * ))) == NULL ) {
tester_perror( "realloc" ); tester_perror( "realloc", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
*pmodsp = pmods; *pmodsp = pmods;
pmods[ i + 1 ] = NULL; pmods[ i + 1 ] = NULL;
if (( pmods[ i ] = (LDAPMod *)calloc( 1, sizeof( LDAPMod ))) if (( pmods[ i ] = (LDAPMod *)calloc( 1, sizeof( LDAPMod )))
== NULL ) { == NULL ) {
tester_perror( "calloc" ); tester_perror( "calloc", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
pmods[ i ]->mod_op = modop; pmods[ i ]->mod_op = modop;
if (( pmods[ i ]->mod_type = strdup( attr )) == NULL ) { if (( pmods[ i ]->mod_type = strdup( attr )) == NULL ) {
tester_perror( "strdup" ); tester_perror( "strdup", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
} }
@ -235,20 +235,20 @@ addmodifyop( LDAPMod ***pmodsp, int modop, char *attr, char *value, int vlen )
if (( pmods[ i ]->mod_bvalues = if (( pmods[ i ]->mod_bvalues =
(struct berval **)ber_memrealloc( pmods[ i ]->mod_bvalues, (struct berval **)ber_memrealloc( pmods[ i ]->mod_bvalues,
(j + 2) * sizeof( struct berval * ))) == NULL ) { (j + 2) * sizeof( struct berval * ))) == NULL ) {
tester_perror( "ber_memrealloc" ); tester_perror( "ber_memrealloc", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
pmods[ i ]->mod_bvalues[ j + 1 ] = NULL; pmods[ i ]->mod_bvalues[ j + 1 ] = NULL;
if (( bvp = (struct berval *)ber_memalloc( sizeof( struct berval ))) if (( bvp = (struct berval *)ber_memalloc( sizeof( struct berval )))
== NULL ) { == NULL ) {
tester_perror( "ber_memalloc" ); tester_perror( "ber_memalloc", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
pmods[ i ]->mod_bvalues[ j ] = bvp; pmods[ i ]->mod_bvalues[ j ] = bvp;
bvp->bv_len = vlen; bvp->bv_len = vlen;
if (( bvp->bv_val = (char *)malloc( vlen + 1 )) == NULL ) { if (( bvp->bv_val = (char *)malloc( vlen + 1 )) == NULL ) {
tester_perror( "malloc" ); tester_perror( "malloc", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
AC_MEMCPY( bvp->bv_val, value, vlen ); AC_MEMCPY( bvp->bv_val, value, vlen );
@ -321,7 +321,7 @@ do_addel(
retry:; retry:;
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
@ -336,7 +336,7 @@ retry:;
rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL ); rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_sasl_bind_s" ); tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_BUSY: case LDAP_BUSY:
case LDAP_UNAVAILABLE: case LDAP_UNAVAILABLE:
@ -359,7 +359,7 @@ retry:;
/* add the entry */ /* add the entry */
rc = ldap_add_ext_s( ld, entry, attrs, NULL, NULL ); rc = ldap_add_ext_s( ld, entry, attrs, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_add_ext_s" ); tester_ldap_error( ld, "ldap_add_ext_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_ALREADY_EXISTS: case LDAP_ALREADY_EXISTS:
/* NOTE: this likely means /* NOTE: this likely means
@ -392,7 +392,7 @@ retry:;
/* now delete the entry again */ /* now delete the entry again */
rc = ldap_delete_ext_s( ld, entry, NULL, NULL ); rc = ldap_delete_ext_s( ld, entry, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_delete_ext_s" ); tester_ldap_error( ld, "ldap_delete_ext_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_NO_SUCH_OBJECT: case LDAP_NO_SUCH_OBJECT:
/* NOTE: this likely means /* NOTE: this likely means

View file

@ -201,7 +201,7 @@ do_bind( char *uri, char *dn, struct berval *pass, int maxloop,
int version = LDAP_VERSION3; int version = LDAP_VERSION3;
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
rc = -1; rc = -1;
break; break;
} }
@ -228,7 +228,7 @@ do_bind( char *uri, char *dn, struct berval *pass, int maxloop,
/* fallthru */ /* fallthru */
default: default:
tester_ldap_error( ld, "ldap_sasl_bind_s" ); tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
} }
if ( !noinit ) { if ( !noinit ) {
@ -280,7 +280,7 @@ do_base( char *uri, struct berval *base, struct berval *pass, int maxloop,
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
@ -290,14 +290,14 @@ do_base( char *uri, struct berval *base, struct berval *pass, int maxloop,
rc = ldap_sasl_bind_s( ld, NULL, LDAP_SASL_SIMPLE, &pw, NULL, NULL, NULL ); rc = ldap_sasl_bind_s( ld, NULL, LDAP_SASL_SIMPLE, &pw, NULL, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_sasl_bind_s" ); tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
rc = ldap_search_ext( ld, base->bv_val, LDAP_SCOPE_ONE, rc = ldap_search_ext( ld, base->bv_val, LDAP_SCOPE_ONE,
filter, attrs, 0, NULL, NULL, 0, 0, &msgid ); filter, attrs, 0, NULL, NULL, 0, 0, &msgid );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_search_ext" ); tester_ldap_error( ld, "ldap_search_ext", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }

View file

@ -51,7 +51,7 @@ tester_uri( char *uri, char *host, int port )
} }
void void
tester_ldap_error( LDAP *ld, const char *fname ) tester_ldap_error( LDAP *ld, const char *fname, const char *msg )
{ {
int err; int err;
char *text = NULL; char *text = NULL;
@ -62,9 +62,10 @@ tester_ldap_error( LDAP *ld, const char *fname )
ldap_get_option( ld, LDAP_OPT_ERROR_STRING, (void *)&text ); ldap_get_option( ld, LDAP_OPT_ERROR_STRING, (void *)&text );
} }
fprintf( stderr, "%s: %s: %s (%d) %s\n", fprintf( stderr, "%s: %s: %s (%d) %s %s\n",
progname, fname, ldap_err2string( err ), err, progname, fname, ldap_err2string( err ), err,
text == NULL ? "" : text ); text == NULL ? "" : text,
msg ? msg : "" );
if ( text ) { if ( text ) {
ldap_memfree( text ); ldap_memfree( text );
@ -111,14 +112,15 @@ tester_ldap_error( LDAP *ld, const char *fname )
} }
void void
tester_perror( const char *fname ) tester_perror( const char *fname, const char *msg )
{ {
int save_errno = errno; int save_errno = errno;
char buf[ BUFSIZ ]; char buf[ BUFSIZ ];
fprintf( stderr, "%s: %s: (%d) %s\n", fprintf( stderr, "%s: %s: (%d) %s %s\n",
progname, fname, save_errno, progname, fname, save_errno,
AC_STRERROR_R( save_errno, buf, sizeof( buf ) ) ); AC_STRERROR_R( save_errno, buf, sizeof( buf ) ),
msg ? msg : "" );
} }
void void

View file

@ -23,7 +23,7 @@
extern void tester_init( const char *pname ); extern void tester_init( const char *pname );
extern char * tester_uri( char *uri, char *host, int port ); extern char * tester_uri( char *uri, char *host, int port );
extern void tester_error( const char *msg ); extern void tester_error( const char *msg );
extern void tester_perror( const char *fname ); extern void tester_perror( const char *fname, const char *msg );
extern void tester_ldap_error( LDAP *ld, const char *fname ); extern void tester_ldap_error( LDAP *ld, const char *fname, const char *msg );
#endif /* SLAPD_COMMON_H */ #endif /* SLAPD_COMMON_H */

View file

@ -215,7 +215,7 @@ do_modify( char *uri, char *manager,
retry:; retry:;
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
@ -230,7 +230,7 @@ retry:;
rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL ); rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_sasl_bind_s" ); tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_BUSY: case LDAP_BUSY:
case LDAP_UNAVAILABLE: case LDAP_UNAVAILABLE:
@ -252,7 +252,7 @@ retry:;
mod.mod_op = LDAP_MOD_ADD; mod.mod_op = LDAP_MOD_ADD;
rc = ldap_modify_ext_s( ld, entry, mods, NULL, NULL ); rc = ldap_modify_ext_s( ld, entry, mods, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_modify_ext_s" ); tester_ldap_error( ld, "ldap_modify_ext_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_TYPE_OR_VALUE_EXISTS: case LDAP_TYPE_OR_VALUE_EXISTS:
/* NOTE: this likely means /* NOTE: this likely means
@ -279,7 +279,7 @@ retry:;
mod.mod_op = LDAP_MOD_DELETE; mod.mod_op = LDAP_MOD_DELETE;
rc = ldap_modify_ext_s( ld, entry, mods, NULL, NULL ); rc = ldap_modify_ext_s( ld, entry, mods, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_modify_ext_s" ); tester_ldap_error( ld, "ldap_modify_ext_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_NO_SUCH_ATTRIBUTE: case LDAP_NO_SUCH_ATTRIBUTE:
/* NOTE: this likely means /* NOTE: this likely means

View file

@ -206,7 +206,7 @@ do_modrdn( char *uri, char *manager,
retry:; retry:;
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
@ -221,7 +221,7 @@ retry:;
rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL ); rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_sasl_bind_s" ); tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_BUSY: case LDAP_BUSY:
case LDAP_UNAVAILABLE: case LDAP_UNAVAILABLE:
@ -242,7 +242,7 @@ retry:;
for ( ; i < maxloop; i++ ) { for ( ; i < maxloop; i++ ) {
rc = ldap_rename_s( ld, DNs[0], rdns[0], NULL, 0, NULL, NULL ); rc = ldap_rename_s( ld, DNs[0], rdns[0], NULL, 0, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_rename_s" ); tester_ldap_error( ld, "ldap_rename_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_NO_SUCH_OBJECT: case LDAP_NO_SUCH_OBJECT:
/* NOTE: this likely means /* NOTE: this likely means
@ -267,7 +267,7 @@ retry:;
} }
rc = ldap_rename_s( ld, DNs[1], rdns[1], NULL, 1, NULL, NULL ); rc = ldap_rename_s( ld, DNs[1], rdns[1], NULL, 1, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_rename_s" ); tester_ldap_error( ld, "ldap_rename_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_NO_SUCH_OBJECT: case LDAP_NO_SUCH_OBJECT:
/* NOTE: this likely means /* NOTE: this likely means

View file

@ -211,7 +211,7 @@ do_random( char *uri, char *manager, struct berval *passwd,
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
@ -226,7 +226,7 @@ do_random( char *uri, char *manager, struct berval *passwd,
rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL ); rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_sasl_bind_s" ); tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_BUSY: case LDAP_BUSY:
case LDAP_UNAVAILABLE: case LDAP_UNAVAILABLE:
@ -246,7 +246,7 @@ do_random( char *uri, char *manager, struct berval *passwd,
nvalues = ldap_count_entries( ld, res ); nvalues = ldap_count_entries( ld, res );
if ( nvalues == 0 ) { if ( nvalues == 0 ) {
if ( rc ) { if ( rc ) {
tester_ldap_error( ld, "ldap_search_ext_s" ); tester_ldap_error( ld, "ldap_search_ext_s", NULL );
} }
break; break;
} }
@ -272,7 +272,7 @@ do_random( char *uri, char *manager, struct berval *passwd,
break; break;
default: default:
tester_ldap_error( ld, "ldap_search_ext_s" ); tester_ldap_error( ld, "ldap_search_ext_s", NULL );
break; break;
} }
@ -300,7 +300,7 @@ retry:;
if ( ld == NULL ) { if ( ld == NULL ) {
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
@ -315,7 +315,7 @@ retry:;
rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL ); rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_sasl_bind_s" ); tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_BUSY: case LDAP_BUSY:
case LDAP_UNAVAILABLE: case LDAP_UNAVAILABLE:
@ -350,14 +350,14 @@ retry:;
} }
first = 0; first = 0;
} }
tester_ldap_error( ld, "ldap_search_ext_s" ); tester_ldap_error( ld, "ldap_search_ext_s", NULL );
/* fallthru */ /* fallthru */
case LDAP_SUCCESS: case LDAP_SUCCESS:
break; break;
default: default:
tester_ldap_error( ld, "ldap_search_ext_s" ); tester_ldap_error( ld, "ldap_search_ext_s", NULL );
if ( rc == LDAP_BUSY && do_retry > 0 ) { if ( rc == LDAP_BUSY && do_retry > 0 ) {
do_retry--; do_retry--;
goto retry; goto retry;

View file

@ -219,7 +219,7 @@ do_random( char *uri, char *manager, struct berval *passwd,
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
@ -234,7 +234,7 @@ do_random( char *uri, char *manager, struct berval *passwd,
rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL ); rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_sasl_bind_s" ); tester_ldap_error( ld, "ldap_sasl_bind_s", NULL );
switch ( rc ) { switch ( rc ) {
case LDAP_BUSY: case LDAP_BUSY:
case LDAP_UNAVAILABLE: case LDAP_UNAVAILABLE:
@ -253,7 +253,7 @@ do_random( char *uri, char *manager, struct berval *passwd,
case LDAP_SUCCESS: case LDAP_SUCCESS:
if ( ldap_count_entries( ld, res ) == 0 ) { if ( ldap_count_entries( ld, res ) == 0 ) {
if ( rc ) { if ( rc ) {
tester_ldap_error( ld, "ldap_search_ext_s" ); tester_ldap_error( ld, "ldap_search_ext_s", NULL );
} }
break; break;
} }
@ -293,7 +293,7 @@ do_random( char *uri, char *manager, struct berval *passwd,
break; break;
default: default:
tester_ldap_error( ld, "ldap_search_ext_s" ); tester_ldap_error( ld, "ldap_search_ext_s", NULL );
break; break;
} }
@ -317,12 +317,14 @@ do_search( char *uri, char *manager, struct berval *passwd,
int rc = LDAP_SUCCESS; int rc = LDAP_SUCCESS;
int version = LDAP_VERSION3; int version = LDAP_VERSION3;
int first = 1; int first = 1;
char buf[ BUFSIZ ];
retry:; retry:;
if ( ld == NULL ) { if ( ld == NULL ) {
ldap_initialize( &ld, uri ); ldap_initialize( &ld, uri );
if ( ld == NULL ) { if ( ld == NULL ) {
tester_perror( "ldap_initialize" ); tester_perror( "ldap_initialize", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
@ -337,7 +339,9 @@ retry:;
rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL ); rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_sasl_bind_s" ); snprintf( buf, sizeof( buf ),
"bindDN=\"%s\"", manager );
tester_ldap_error( ld, "ldap_sasl_bind_s", buf );
switch ( rc ) { switch ( rc ) {
case LDAP_BUSY: case LDAP_BUSY:
case LDAP_UNAVAILABLE: case LDAP_UNAVAILABLE:
@ -376,14 +380,17 @@ retry:;
} }
first = 0; first = 0;
} }
tester_ldap_error( ld, "ldap_search_ext_s" ); tester_ldap_error( ld, "ldap_search_ext_s", NULL );
/* fallthru */ /* fallthru */
case LDAP_SUCCESS: case LDAP_SUCCESS:
break; break;
default: default:
tester_ldap_error( ld, "ldap_search_ext_s" ); snprintf( buf, sizeof( buf ),
"base=\"%s\" filter=\"%s\"\n",
sbase, filter );
tester_ldap_error( ld, "ldap_search_ext_s", buf );
if ( rc == LDAP_BUSY && do_retry > 0 ) { if ( rc == LDAP_BUSY && do_retry > 0 ) {
ldap_unbind_ext( ld, NULL, NULL ); ldap_unbind_ext( ld, NULL, NULL );
do_retry--; do_retry--;

View file

@ -783,12 +783,12 @@ fork_child( char *prog, char **args )
args = arg2; } args = arg2; }
#endif #endif
execvp( prog, args ); execvp( prog, args );
tester_perror( "execvp" ); tester_perror( "execvp", NULL );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
break; break;
case -1: /* trouble */ case -1: /* trouble */
tester_perror( "fork" ); tester_perror( "fork", NULL );
break; break;
default: /* parent */ default: /* parent */
@ -858,7 +858,7 @@ fork_child( char *prog, char **args )
rc = _spawnvp( _P_NOWAIT, prog, args ); rc = _spawnvp( _P_NOWAIT, prog, args );
if ( rc == -1 ) { if ( rc == -1 ) {
tester_perror( "_spawnvp" ); tester_perror( "_spawnvp", NULL );
} else { } else {
children[nkids++] = (HANDLE)rc; children[nkids++] = (HANDLE)rc;
} }