changeset 270:d6fedc09b052 noffle

[svn] * src/noffle.c: Rearrange initialisation so that a requested usage message will be output before Noffle can fail due to misconfiguration. Introduce routine (currently stub) for checking file ownership and permissions on startup - I suspect a lot of reported errors are due to ownership problems.
author bears
date Sun, 10 Nov 2002 11:30:40 +0000
parents b3a2f710fe2c
children 3477050e8d10
files src/noffle.c
diffstat 1 files changed, 35 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/noffle.c	Fri Oct 25 12:04:57 2002 +0100
+++ b/src/noffle.c	Sun Nov 10 11:30:40 2002 +0000
@@ -10,7 +10,7 @@
   received for some seconds (to allow multiple clients connect at the same
   time).
 
-  $Id: noffle.c 387 2002-06-26 13:15:44Z bears $
+  $Id: noffle.c 402 2002-11-10 11:30:40Z bears $
 */
 
 #if HAVE_CONFIG_H
@@ -553,6 +553,16 @@
 }
 
 /*
+  Check file ownership and permissions.
+  This assumes we have cd'd to the spool directory.
+ */
+static Bool
+checkFileOwnership( void )
+{
+    return TRUE;
+}
+
+/*
   Allow core files: Change core limit and change working directory
   to spool directory, where news has write permissions.
 */
@@ -573,12 +583,6 @@
         return;
     }
     Log_dbg( LOG_DBG_NOFFLE, "Core limit set to %i", lim.rlim_max );
-    if ( chdir( Cfg_spoolDir() ) != 0 )
-    {
-         Log_err( "Cannot change to directory '%s'", Cfg_spoolDir() );
-         return;
-    }
-    Log_dbg( LOG_DBG_NOFFLE, "Changed to directory '%s'", Cfg_spoolDir() );
 }
 
 static Bool
@@ -587,6 +591,18 @@
     Log_init( "noffle", noffle.lockAtStartup, LOG_NEWS );
     Cfg_read();
     Log_dbg( LOG_DBG_NOFFLE, "NOFFLE version %s", Cfg_version() );
+
+    /* cd to the spool directory */
+    if ( chdir( Cfg_spoolDir() ) != 0 )
+    {
+         Log_err( "Cannot change to directory '%s'", Cfg_spoolDir() );
+         return FALSE;
+    }
+    Log_dbg( LOG_DBG_NOFFLE, "Changed to directory '%s'", Cfg_spoolDir() );
+
+    if ( ! checkFileOwnership() )
+	return FALSE;
+
     if ( noffle.lockAtStartup )
         if ( ! Lock_openDatabases() )
             return FALSE;
@@ -667,7 +683,7 @@
 doInews( int argc, char **argv )
 {
     int result;
-    int flags;
+    unsigned flags;
     FILE *f;
 
     UNUSED( argc );
@@ -818,6 +834,17 @@
     }
 
     noffle.lockAtStartup = ! ( c == 'r' || c == 'h' );
+
+    /*
+      If they asked for help, give it before there's a possibility
+      we could fail on init.
+     */
+    if ( c == 'h' )
+    {
+        printUsage();
+	return EXIT_SUCCESS;
+    }
+
     if ( ! initNoffle() )
         return EXIT_FAILURE;
     result = EXIT_SUCCESS;