[launchd-changes] [23091] trunk/launchd/src

source_changes at macosforge.org source_changes at macosforge.org
Tue Feb 20 06:01:29 PST 2007


Revision: 23091
          http://trac.macosforge.org/projects/launchd/changeset/23091
Author:   zarzycki at apple.com
Date:     2007-02-20 06:01:28 -0800 (Tue, 20 Feb 2007)

Log Message:
-----------
More flag decoding.

Modified Paths:
--------------
    trunk/launchd/src/launchd_core_logic.c
    trunk/launchd/src/launchd_runtime.c
    trunk/launchd/src/launchd_runtime.h

Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c	2007-02-20 03:03:53 UTC (rev 23090)
+++ trunk/launchd/src/launchd_core_logic.c	2007-02-20 14:01:28 UTC (rev 23091)
@@ -580,9 +580,12 @@
 	if (jm->parentmgr) {
 		SLIST_REMOVE(&jm->parentmgr->submgrs, jm, jobmgr_s, sle);
 	} else if (getpid() == 1) {
-		jobmgr_log(jm, LOG_DEBUG, "About to call reboot(0x%x).", jm->reboot_flags);
+		jobmgr_log(jm, LOG_DEBUG, "About to call: reboot(%s)", reboot_flags_to_C_names(jm->reboot_flags));
+		runtime_closelog();
 		jobmgr_assumes(jm,  reboot(jm->reboot_flags) != -1);
+		runtime_closelog();
 	} else {
+		runtime_closelog();
 		jobmgr_log(jm, LOG_DEBUG, "About to exit.");
 		exit(EXIT_SUCCESS);
 	}

Modified: trunk/launchd/src/launchd_runtime.c
===================================================================
--- trunk/launchd/src/launchd_runtime.c	2007-02-20 03:03:53 UTC (rev 23090)
+++ trunk/launchd/src/launchd_runtime.c	2007-02-20 14:01:28 UTC (rev 23091)
@@ -41,6 +41,7 @@
 #include <sys/queue.h>
 #include <sys/socket.h>
 #include <sys/mount.h>
+#include <sys/reboot.h>
 #include <bsm/libbsm.h>
 #include <malloc/malloc.h>
 #include <unistd.h>
@@ -149,6 +150,45 @@
 }
 
 const char *
+reboot_flags_to_C_names(unsigned int flags)
+{
+#define MAX_RB_STR "RB_ASKNAME|RB_SINGLE|RB_NOSYNC|RB_KDB|RB_HALT|RB_INITNAME|RB_DFLTROOT|RB_ALTBOOT|RB_UNIPROC|RB_SAFEBOOT|RB_UPSDELAY|0xdeadbeeffeedface"
+	static char flags_buf[sizeof(MAX_RB_STR)];
+	char *flags_off = NULL;
+
+	if (flags) while (flags) {
+		if (flags_off) {
+			*flags_off = '|';
+			flags_off++;
+			*flags_off = '\0';
+		} else {
+			flags_off = flags_buf;
+		}
+
+#define FLAGIF(f) if (flags & f) { flags_off += sprintf(flags_off, #f); flags &= ~f; }
+
+		FLAGIF(RB_ASKNAME)
+		else FLAGIF(RB_SINGLE)
+		else FLAGIF(RB_NOSYNC)
+		else FLAGIF(RB_KDB)
+		else FLAGIF(RB_HALT)
+		else FLAGIF(RB_INITNAME)
+		else FLAGIF(RB_DFLTROOT)
+		else FLAGIF(RB_ALTBOOT)
+		else FLAGIF(RB_UNIPROC)
+		else FLAGIF(RB_SAFEBOOT)
+		else FLAGIF(RB_UPSDELAY)
+		else {
+			flags_off += sprintf(flags_off, "0x%x", flags);
+			flags = 0;
+		}
+		return flags_buf;
+	} else {
+		return "RB_AUTOBOOT";
+	}
+}
+
+const char *
 signal_to_C_name(unsigned int sig)
 {
 	static char unknown[25];
@@ -214,8 +254,6 @@
 			flags_off = flags_buf;
 		}
 
-#define FLAGIF(f) if (flags & f) { flags_off += sprintf(flags_off, #f); flags &= ~f; }
-
 		FLAGIF(EV_ADD)
 		else FLAGIF(EV_DELETE)
 		else FLAGIF(EV_ENABLE)
@@ -852,12 +890,22 @@
 	}
 }
 
+static FILE *ourlogfile;
+
 void
 runtime_openlog(const char *ident, int logopt, int facility)
 {
 	openlog(ident, logopt, facility);
 }
 
+void
+runtime_closelog(void)
+{
+	if (ourlogfile) {
+		fflush(ourlogfile);
+	}
+}
+
 int
 runtime_setlogmask(int maskpri)
 {
@@ -880,7 +928,6 @@
 runtime_vsyslog(int priority, const char *message, va_list args)
 {
 	static pthread_mutex_t ourlock = PTHREAD_MUTEX_INITIALIZER;
-	static FILE *ourlogfile = NULL;
 	static struct timeval shutdown_start = { 0, 0 };
 	struct timeval tvnow, tvd;
 	int saved_errno = errno;
@@ -940,6 +987,4 @@
 	strcpy(newmsg + j, "\n");
 
 	vfprintf(ourlogfile, newmsg, args);
-
-	fflush(ourlogfile);
 }

Modified: trunk/launchd/src/launchd_runtime.h
===================================================================
--- trunk/launchd/src/launchd_runtime.h	2007-02-20 03:03:53 UTC (rev 23090)
+++ trunk/launchd/src/launchd_runtime.h	2007-02-20 14:01:28 UTC (rev 23091)
@@ -66,10 +66,14 @@
 bool runtime_get_caller_creds(struct ldcred *ldc);
 
 const char *signal_to_C_name(unsigned int sig);
+const char *reboot_flags_to_C_names(unsigned int flags);
 
+
 int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata);
 
 void runtime_openlog(const char *ident, int logopt, int facility);
+void runtime_closelog(void);
+
 int runtime_setlogmask(int maskpri);
 void runtime_syslog(int priority, const char *message, ...) __attribute__((format(printf, 2, 3)));
 void runtime_vsyslog(int priority, const char *message, va_list args) __attribute__((format(printf, 2, 0)));

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070220/0b413eb3/attachment.html


More information about the launchd-changes mailing list