summaryrefslogtreecommitdiff
authorMichael Krelin <hacker@klever.net>2007-07-16 08:36:10 (UTC)
committer Michael Krelin <hacker@klever.net>2007-07-16 08:36:10 (UTC)
commit41205a0ee403d1eee4ca0037738a7ce56b28c87c (patch) (unidiff)
treede3724f66caa45e5fee614c22494587657093de8
parent0f2f877bd115c0f50af3dabae03473515e7ff808 (diff)
downloadopie-41205a0ee403d1eee4ca0037738a7ce56b28c87c.zip
opie-41205a0ee403d1eee4ca0037738a7ce56b28c87c.tar.gz
opie-41205a0ee403d1eee4ca0037738a7ce56b28c87c.tar.bz2
fix missing errno in error printout
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/obex/obexserver.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/core/obex/obexserver.cpp b/core/obex/obexserver.cpp
index a98c64f..59fcb0f 100644
--- a/core/obex/obexserver.cpp
+++ b/core/obex/obexserver.cpp
@@ -396,97 +396,97 @@ bool ObexServer::start(RunMode runmode, Communication comm)
396 // WABA: Note that we use fork() and not vfork() because 396 // WABA: Note that we use fork() and not vfork() because
397 // vfork() has unclear semantics and is not standardized. 397 // vfork() has unclear semantics and is not standardized.
398 pid_ = fork(); 398 pid_ = fork();
399 399
400 if ( 0 == pid_ ) 400 if ( 0 == pid_ )
401 { 401 {
402 if ( fd[ 0 ] ) 402 if ( fd[ 0 ] )
403 close( fd[ 0 ] ); 403 close( fd[ 0 ] );
404 if ( !runPrivileged() ) 404 if ( !runPrivileged() )
405 { 405 {
406 setgid( gid ); 406 setgid( gid );
407#if defined( HAVE_INITGROUPS) 407#if defined( HAVE_INITGROUPS)
408 408
409 if ( pw ) 409 if ( pw )
410 initgroups( pw->pw_name, pw->pw_gid ); 410 initgroups( pw->pw_name, pw->pw_gid );
411#endif 411#endif
412 412
413 setuid( uid ); 413 setuid( uid );
414 } 414 }
415 // The child process 415 // The child process
416 if ( !commSetupDoneC() ) 416 if ( !commSetupDoneC() )
417 qWarning( "Could not finish comm setup in child!" ); 417 qWarning( "Could not finish comm setup in child!" );
418 418
419 setupEnvironment(); 419 setupEnvironment();
420 420
421 // Matthias 421 // Matthias
422 if ( run_mode == DontCare ) 422 if ( run_mode == DontCare )
423 setpgid( 0, 0 ); 423 setpgid( 0, 0 );
424 // restore default SIGPIPE handler (Harri) 424 // restore default SIGPIPE handler (Harri)
425 struct sigaction act; 425 struct sigaction act;
426 sigemptyset( &( act.sa_mask ) ); 426 sigemptyset( &( act.sa_mask ) );
427 sigaddset( &( act.sa_mask ), SIGPIPE ); 427 sigaddset( &( act.sa_mask ), SIGPIPE );
428 act.sa_handler = SIG_DFL; 428 act.sa_handler = SIG_DFL;
429 act.sa_flags = 0; 429 act.sa_flags = 0;
430 sigaction( SIGPIPE, &act, 0L ); 430 sigaction( SIGPIPE, &act, 0L );
431 431
432 // We set the close on exec flag. 432 // We set the close on exec flag.
433 // Closing of fd[1] indicates that the execvp succeeded! 433 // Closing of fd[1] indicates that the execvp succeeded!
434 if ( fd[ 1 ] ) 434 if ( fd[ 1 ] )
435 fcntl( fd[ 1 ], F_SETFD, FD_CLOEXEC ); 435 fcntl( fd[ 1 ], F_SETFD, FD_CLOEXEC );
436 436
437 if (initObex() == 0) { 437 if (initObex() == 0) {
438 if ( fd[ 1 ] ) { 438 if ( fd[ 1 ] ) {
439 ::close(fd[1]); 439 ::close(fd[1]);
440 fd[1] = 0; 440 fd[1] = 0;
441 } 441 }
442 do { 442 do {
443 if (OBEX_HandleInput(m_obex, 60) < 0) { 443 if (OBEX_HandleInput(m_obex, 60) < 0) {
444 fprintf(stderr,"failed to OBEX_HandleInput(), errno=%d\n"); 444 fprintf(stderr,"failed to OBEX_HandleInput(), errno=%d\n",errno);
445 _exit(errno?errno:-1); 445 _exit(errno?errno:-1);
446 } 446 }
447 } while(1); 447 } while(1);
448 } 448 }
449 char resultByte = 1; 449 char resultByte = 1;
450 if ( fd[ 1 ] ) 450 if ( fd[ 1 ] )
451 write( fd[ 1 ], &resultByte, 1 ); 451 write( fd[ 1 ], &resultByte, 1 );
452 _exit( -1 ); 452 _exit( -1 );
453 } 453 }
454 else if ( -1 == pid_ ) 454 else if ( -1 == pid_ )
455 { 455 {
456 // forking failed 456 // forking failed
457 457
458 runs = false; 458 runs = false;
459 return false; 459 return false;
460 } 460 }
461 else 461 else
462 { 462 {
463 if ( fd[ 1 ] ) 463 if ( fd[ 1 ] )
464 close( fd[ 1 ] ); 464 close( fd[ 1 ] );
465 // the parent continues here 465 // the parent continues here
466 466
467 // Discard any data for stdin that might still be there 467 // Discard any data for stdin that might still be there
468 input_data = 0; 468 input_data = 0;
469 469
470 // Check whether client could be started. 470 // Check whether client could be started.
471 if ( fd[ 0 ] ) 471 if ( fd[ 0 ] )
472 for ( ;; ) 472 for ( ;; )
473 { 473 {
474 char resultByte; 474 char resultByte;
475 int n = ::read( fd[ 0 ], &resultByte, 1 ); 475 int n = ::read( fd[ 0 ], &resultByte, 1 );
476 if ( n == 1 ) 476 if ( n == 1 )
477 { 477 {
478 // Error 478 // Error
479 runs = false; 479 runs = false;
480 close( fd[ 0 ] ); 480 close( fd[ 0 ] );
481 pid_ = 0; 481 pid_ = 0;
482 return false; 482 return false;
483 } 483 }
484 if ( n == -1 ) 484 if ( n == -1 )
485 { 485 {
486 if ( ( errno == ECHILD ) || ( errno == EINTR ) ) 486 if ( ( errno == ECHILD ) || ( errno == EINTR ) )
487 continue; // Ignore 487 continue; // Ignore
488 } 488 }
489 break; // success 489 break; // success
490 } 490 }
491 if ( fd[ 0 ] ) 491 if ( fd[ 0 ] )
492 close( fd[ 0 ] ); 492 close( fd[ 0 ] );