Signed / unsigned fixes and function prototypes
[freeradius.git] / src / main / radiusd.c
index 3104d02..cffb826 100644 (file)
@@ -57,7 +57,7 @@ RCSID("$Id$")
  *  Global variables.
  */
 const char *progname = NULL;
-const char *radius_dir = NULL;
+char *radius_dir = NULL;
 const char *radacct_dir = NULL;
 const char *radlog_dir = NULL;
 const char *radlib_dir = NULL;
@@ -174,6 +174,12 @@ int main(int argc, char *argv[])
                                }
                                mainconfig.log_file = strdup(optarg);
                                mainconfig.radlog_dest = RADLOG_FILES;
+                               mainconfig.radlog_fd = open(mainconfig.log_file,
+                                                           O_WRONLY | O_APPEND | O_CREAT, 0640);
+                               if (mainconfig.radlog_fd < 0) {
+                                       fprintf(stderr, "radiusd: Failed to open log file %s: %s\n", mainconfig.log_file, strerror(errno));
+                                       exit(1);
+                               }
                                break;            
 
                        case 'i':
@@ -304,10 +310,12 @@ int main(int argc, char *argv[])
                dup2(devnull, STDIN_FILENO);
                if (mainconfig.radlog_dest == RADLOG_STDOUT) {
                        mainconfig.radlog_fd = dup(STDOUT_FILENO);
+                       setlinebuf(stdout);
                }
                dup2(devnull, STDOUT_FILENO);
                if (mainconfig.radlog_dest == RADLOG_STDERR) {
                        mainconfig.radlog_fd = dup(STDERR_FILENO);
+                       setlinebuf(stdout);
                }
                dup2(devnull, STDERR_FILENO);
                close(devnull);
@@ -366,7 +374,9 @@ int main(int argc, char *argv[])
                exit(0);
        }
 
+#ifdef WITH_STATS
        radius_stats_init(0);
+#endif
 
        /*
         *  Only write the PID file if we're running as a daemon.
@@ -396,8 +406,9 @@ int main(int argc, char *argv[])
         *      Process requests until HUP or exit.
         */
        while ((rcode = radius_event_process()) == 0x80) {
+#ifdef WITH_STATS
                radius_stats_init(1);
-               radlog(L_INFO, "Received HUP.");
+#endif
                hup_mainconfig();
        }