[sysprof] capture: add sp_capture_writer_new_from_env()
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof] capture: add sp_capture_writer_new_from_env()
- Date: Tue, 7 May 2019 03:23:35 +0000 (UTC)
commit 05314dd28c41819a167c97dbf764349a65de7cdd
Author: Christian Hergert <chergert redhat com>
Date: Mon May 6 20:19:46 2019 -0700
capture: add sp_capture_writer_new_from_env()
This will return NULL if there is not sufficient data from the
environment to setup tracing.
lib/capture/sp-capture-writer.c | 23 +++++++++++++++++++++++
lib/capture/sp-capture-writer.h | 1 +
2 files changed, 24 insertions(+)
---
diff --git a/lib/capture/sp-capture-writer.c b/lib/capture/sp-capture-writer.c
index e45109c..24c0d43 100644
--- a/lib/capture/sp-capture-writer.c
+++ b/lib/capture/sp-capture-writer.c
@@ -23,6 +23,7 @@
#include <errno.h>
#include <fcntl.h>
#include <glib/gstdio.h>
+#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -415,6 +416,9 @@ sp_capture_writer_new_from_fd (int fd,
GTimeVal tv;
gsize header_len = sizeof(*header);
+ if (fd < 0)
+ return NULL;
+
if (buffer_size == 0)
buffer_size = DEFAULT_BUFFER_SIZE;
@@ -1221,3 +1225,22 @@ do_end:
return TRUE;
}
+
+SpCaptureWriter *
+sp_capture_writer_new_from_env (gsize buffer_size)
+{
+ const gchar *fdstr;
+ int fd;
+
+ if (!(fdstr = g_getenv ("SYSPROF_TRACE_FD")))
+ return NULL;
+
+ if (!(fd = atoi (fdstr)))
+ return NULL;
+
+ /* ignore stdin/stdout/stderr */
+ if (fd < 2)
+ return NULL;
+
+ return sp_capture_writer_new_from_fd (dup (fd), buffer_size);
+}
diff --git a/lib/capture/sp-capture-writer.h b/lib/capture/sp-capture-writer.h
index 3b817e5..336794b 100644
--- a/lib/capture/sp-capture-writer.h
+++ b/lib/capture/sp-capture-writer.h
@@ -38,6 +38,7 @@ typedef struct
gsize padding[48];
} SpCaptureStat;
+SpCaptureWriter *sp_capture_writer_new_from_env (gsize buffer_size);
SpCaptureWriter *sp_capture_writer_new (const gchar *filename,
gsize buffer_size);
SpCaptureWriter *sp_capture_writer_new_from_fd (int fd,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]