summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/kadm5/ChangeLog5
-rw-r--r--src/lib/kadm5/logger.c39
2 files changed, 44 insertions, 0 deletions
diff --git a/src/lib/kadm5/ChangeLog b/src/lib/kadm5/ChangeLog
index 26a14ad6c7..ae8bb7e1b1 100644
--- a/src/lib/kadm5/ChangeLog
+++ b/src/lib/kadm5/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jul 8 04:48:50 1998 Geoffrey J. King <gjking@mit.edu>
+
+ * logger.c: Add the function krb5_klog_reopen() which closes
+ and reopens the log files.
+
Mon Apr 6 19:40:05 1998 Tom Yu <tlyu@voltage-multiplier.mit.edu>
* Makefile.in (includes): Don't call mkdir unless the directory
diff --git a/src/lib/kadm5/logger.c b/src/lib/kadm5/logger.c
index 379b5ffda8..2677e448df 100644
--- a/src/lib/kadm5/logger.c
+++ b/src/lib/kadm5/logger.c
@@ -942,4 +942,43 @@ krb5_klog_syslog(priority, format, va_alist)
va_end(pvar);
return(retval);
}
+
+/*
+ * krb5_klog_reopen() - Close and reopen any open (non-syslog) log files.
+ * This function is called when a SIGHUP is received
+ * so that external log-archival utilities may
+ * alert the Kerberos daemons that they should get
+ * a new file descriptor for the give filename.
+ */
+void
+krb5_klog_reopen(kcontext)
+krb5_context kcontext;
+{
+ int lindex;
+ FILE *f;
+
+ /*
+ * Only logs which are actually files need to be closed
+ * and reopened in response to a SIGHUP
+ */
+ for (lindex = 0; lindex < log_control.log_nentries; lindex++) {
+ if (log_control.log_entries[lindex].log_type == K_LOG_FILE) {
+ fclose(log_control.log_entries[lindex].lfu_filep);
+ /*
+ * In case the old logfile did not get moved out of the
+ * way, open for append to prevent squashing the old logs.
+ */
+ f = fopen(log_control.log_entries[lindex].lfu_fname, "a+");
+ if (f) {
+ log_control.log_entries[lindex].lfu_filep = f;
+ } else {
+ fprintf(stderr, "Couldn't open log file %s: %s\n",
+ log_control.log_entries[lindex].lfu_fname,
+ error_message(errno));
+ }
+ }
+ }
+}
+
#endif /* !defined(_MSDOS) */
+