comparison src/noffle.c @ 281:5eece4dfd945 noffle

[svn] * src/log.c,src/log.h: Add Log_fatal() for reporting fatal errors and exiting, Log_gdbm_fatal() for the the same but specifically as a GDBM error reporting function, and a new log debug level AUTH for a forthcoming authentication mechanism. * src/database.c,src/group.c: Provide new gdbm error function to all gdbm opens. * src/noffle.c: Add atexit() to always close databases on a program- inspired exit. * src/content.c,src/dynamicstring.c,src/fetchlist.c,src/filter.c, src/itemlist.c,src/log.c,src/log.h,src/over.c,src/protocol.h, src/request.c,src/util.c: Use Log_fatal where appropriate.
author bears
date Fri, 27 Dec 2002 21:48:25 +0000
parents d6fedc09b052
children c02c4eb95f95
comparison
equal deleted inserted replaced
280:9c54bf672ca1 281:5eece4dfd945
8 not as server. If noffle runs as server, locking is performed while 8 not as server. If noffle runs as server, locking is performed while
9 executing NNTP commands, but temporarily released if no new command is 9 executing NNTP commands, but temporarily released if no new command is
10 received for some seconds (to allow multiple clients connect at the same 10 received for some seconds (to allow multiple clients connect at the same
11 time). 11 time).
12 12
13 $Id: noffle.c 402 2002-11-10 11:30:40Z bears $ 13 $Id: noffle.c 413 2002-12-27 21:48:25Z bears $
14 */ 14 */
15 15
16 #if HAVE_CONFIG_H 16 #if HAVE_CONFIG_H
17 #include <config.h> 17 #include <config.h>
18 #endif 18 #endif
611 } 611 }
612 612
613 static void 613 static void
614 closeNoffle( void ) 614 closeNoffle( void )
615 { 615 {
616 if ( noffle.lockAtStartup ) 616 if ( Lock_gotLock() )
617 Lock_closeDatabases(); 617 Lock_closeDatabases();
618 Lock_syncDatabases(); 618 Lock_syncDatabases();
619 } 619 }
620 620
621 static RETSIGTYPE 621 static RETSIGTYPE
728 else 728 else
729 { 729 {
730 f = fopen( argv[0], "r" ); 730 f = fopen( argv[0], "r" );
731 if ( f == NULL ) 731 if ( f == NULL )
732 { 732 {
733 Log_err( "Can't access %s (%s).", argv[0], strerror( errno ) ); 733 fprintf( stderr, "Can't access %s (%s).", argv[0], strerror( errno ) );
734 return EXIT_FAILURE; 734 return EXIT_FAILURE;
735 } 735 }
736 } 736 }
737 737
738 if ( ! initNoffle() ) 738 if ( ! initNoffle() )
743 result = EXIT_FAILURE; 743 result = EXIT_FAILURE;
744 744
745 if ( f != stdin ) 745 if ( f != stdin )
746 fclose( f ); 746 fclose( f );
747 747
748 closeNoffle();
749 return result; 748 return result;
750 } 749 }
751 750
752 static int 751 static int
753 getArgLetter(const char *arg) 752 getArgLetter(const char *arg)
802 int main ( int argc, char **argv ) 801 int main ( int argc, char **argv )
803 { 802 {
804 int c, result; 803 int c, result;
805 const char *cmdname, *p; 804 const char *cmdname, *p;
806 805
806 /* Attempt to ensure databases are properly closed when we exit */
807 atexit( closeNoffle );
808
807 signal( SIGSEGV, bugReport ); 809 signal( SIGSEGV, bugReport );
808 signal( SIGABRT, logSignal ); 810 signal( SIGABRT, logSignal );
809 signal( SIGFPE, logSignal ); 811 signal( SIGFPE, logSignal );
810 signal( SIGILL, logSignal ); 812 signal( SIGILL, logSignal );
811 signal( SIGINT, logSignal ); 813 signal( SIGINT, logSignal );
1009 printf( "NNTP server NOFFLE, version %s.\n", Cfg_version() ); 1011 printf( "NNTP server NOFFLE, version %s.\n", Cfg_version() );
1010 break; 1012 break;
1011 default: 1013 default:
1012 abort(); /* Never reached */ 1014 abort(); /* Never reached */
1013 } 1015 }
1014 closeNoffle();
1015 return result; 1016 return result;
1016 } 1017 }