+
+ if (been_here)
+ return;
+ been_here = 1;
+
+#ifdef LOG_NDELAY
+ options |= LOG_NDELAY;
+#endif
+
+#ifdef LOG_DAEMON
+ openlog("rsyncd", options, lp_syslog_facility());
+#else
+ openlog("rsyncd", options);
+#endif
+
+#ifndef LOG_NDELAY
+ logit(LOG_INFO, "rsyncd started\n");
+#endif
+}
+
+static void logfile_open(void)
+{
+ extern int orig_umask;
+ int old_umask = umask(022 | orig_umask);
+ logfile = fopen(logfname, "a");
+ umask(old_umask);
+ if (!logfile) {
+ int fopen_errno = errno;
+ /* Rsync falls back to using syslog on failure. */
+ syslog_init();
+ rsyserr(FERROR, fopen_errno,
+ "failed to open log-file %s", logfname);
+ rprintf(FINFO, "Ignoring \"log file\" setting.\n");
+ }
+}
+
+void log_init(void)
+{