#endif
"\t-V\t\tprint version info (-VV exit afterwards, -VVV print\n"
"\t\t\tinfo about static overlays and backends)\n"
-#ifndef HAVE_WINSOCK
- "\t-w Wait for database startup before exiting\n"
-#endif
);
}
#endif
#ifndef HAVE_WINSOCK
- int pid, wait_for_start = 0, waitfds[2];
+ int pid, waitfds[2];
#endif
int g_argc = argc;
char **g_argv = argv;
#endif
#if defined(HAVE_SETUID) && defined(HAVE_SETGID)
"u:g:"
-#endif
-#ifndef HAVE_WINSOCK
- "w"
#endif
)) != EOF ) {
switch ( i ) {
version++;
break;
-#ifndef HAVE_WINSOCK
- case 'w':
- wait_for_start = 1;
- break;
-#endif
-
case 'T':
if ( firstopt == 0 ) {
fprintf( stderr, "warning: \"-T %s\" "
#endif
#ifndef HAVE_WINSOCK
- if ( wait_for_start ) {
+ if ( !no_detach ) {
if ( lutil_pair( waitfds ) < 0 ) {
Debug( LDAP_DEBUG_ANY,
"main: lutil_pair failed: %d\n",
rc = 1;
goto destroy;
}
- }
- pid = lutil_detach( no_detach, 0 );
- if ( pid ) {
- rc = EXIT_SUCCESS;
- if ( wait_for_start ) {
+ pid = lutil_detach( no_detach, 0 );
+ if ( pid ) {
char buf[4];
+ rc = EXIT_SUCCESS;
close( waitfds[1] );
if ( read( waitfds[0], buf, 1 ) != 1 )
rc = EXIT_FAILURE;
- }
- _exit( rc );
- } else {
- if ( wait_for_start ) {
+ _exit( rc );
+ } else {
close( waitfds[0] );
}
}
Debug( LDAP_DEBUG_ANY, "slapd starting\n", 0, 0, 0 );
#ifndef HAVE_WINSOCK
- if ( wait_for_start ) {
+ if ( !no_detach ) {
write( waitfds[1], "1", 1 );
close( waitfds[1] );
}