summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2013-07-24 18:52:34 -0400
committerColin Walters <walters@verbum.org>2013-07-24 18:53:08 -0400
commitc541759c92667fdf50975e4919b590b9091d2c65 (patch)
treea43a66686794ad77be3009c7cff1dcaafd0b102e
parentf56702ef40a5df056097d2e14ee0dac3614b744c (diff)
downloadlibgsystem-c541759c92667fdf50975e4919b590b9091d2c65.tar.gz
gsystem-log: Add public API to determine whether stdout is journal
Will be used by gnome-desktop-testing to determine whether or not it should set up the journal for its children.
-rw-r--r--gsystem-log.c42
-rw-r--r--gsystem-log.h2
2 files changed, 29 insertions, 15 deletions
diff --git a/gsystem-log.c b/gsystem-log.c
index 0b93382..df6e288 100644
--- a/gsystem-log.c
+++ b/gsystem-log.c
@@ -82,25 +82,20 @@ gs_log_structured (const char *message,
}
/**
- * gs_log_structured_print:
- * @message: A message to log
- * @keys: (allow-none) (array zero-terminated=1) (element-type utf8): Optional structured data
+ * gs_stdout_is_journal:
*
- * Like gs_log_structured(), but also print to standard output (if it
- * is not already connected to the system log).
+ * Use this function when you want your code to behave differently
+ * depeneding on whether your program was started as a systemd unit,
+ * or e.g. interactively at a terminal.
+ *
+ * Returns: %TRUE if stdout is (probably) connnected to the systemd journal
*/
-void
-gs_log_structured_print (const char *message,
- const char *const *keys)
+gboolean
+gs_stdout_is_journal (void)
{
-#ifdef ENABLE_SYSTEMD_JOURNAL
static gsize initialized;
static gboolean stdout_is_socket;
-#endif
-
- gs_log_structured (message, keys);
-#ifdef ENABLE_SYSTEMD_JOURNAL
if (g_once_init_enter (&initialized))
{
guint64 pid = (guint64) getpid ();
@@ -119,9 +114,26 @@ gs_log_structured_print (const char *message,
g_free (fdpath);
g_once_init_leave (&initialized, TRUE);
}
- if (!stdout_is_socket)
+
+ return stdout_is_socket;
+}
+
+/**
+ * gs_log_structured_print:
+ * @message: A message to log
+ * @keys: (allow-none) (array zero-terminated=1) (element-type utf8): Optional structured data
+ *
+ * Like gs_log_structured(), but also print to standard output (if it
+ * is not already connected to the system log).
+ */
+void
+gs_log_structured_print (const char *message,
+ const char *const *keys)
+{
+ gs_log_structured (message, keys);
+
+ if (!gs_stdout_is_journal ())
g_print ("%s\n", message);
-#endif
}
/**
diff --git a/gsystem-log.h b/gsystem-log.h
index b7cd009..80cfc34 100644
--- a/gsystem-log.h
+++ b/gsystem-log.h
@@ -25,6 +25,8 @@
G_BEGIN_DECLS
+gboolean gs_stdout_is_journal (void);
+
void gs_log_structured (const char *message,
const char *const *keys);