[glib] GCredentials: add getter/setter for the Unix process ID
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] GCredentials: add getter/setter for the Unix process ID
- Date: Wed, 19 Dec 2012 20:14:11 +0000 (UTC)
commit 8f65536504a0902f1e90696eb18f8c2bd5bc1782
Author: Simon McVittie <simon mcvittie collabora co uk>
Date: Thu Nov 8 14:08:24 2012 +0000
GCredentials: add getter/setter for the Unix process ID
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=687920
docs/reference/gio/gio-sections.txt | 1 +
gio/gcredentials.c | 43 +++++++++++++++++++++++++++++++++++
gio/gcredentials.h | 3 ++
gio/gio.symbols | 1 +
4 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt
index a39f55f..23e95c3 100644
--- a/docs/reference/gio/gio-sections.txt
+++ b/docs/reference/gio/gio-sections.txt
@@ -2487,6 +2487,7 @@ g_credentials_set_native
g_credentials_is_same_user
g_credentials_get_unix_user
g_credentials_set_unix_user
+g_credentials_get_unix_pid
<SUBSECTION Standard>
G_CREDENTIALS
G_IS_CREDENTIALS
diff --git a/gio/gcredentials.c b/gio/gcredentials.c
index 42fd53e..ea59b47 100644
--- a/gio/gcredentials.c
+++ b/gio/gcredentials.c
@@ -442,6 +442,48 @@ g_credentials_get_unix_user (GCredentials *credentials,
}
/**
+ * g_credentials_get_unix_pid:
+ * @credentials: A #GCredentials
+ * @error: Return location for error or %NULL.
+ *
+ * Tries to get the UNIX process identifier from @credentials. This
+ * method is only available on UNIX platforms.
+ *
+ * This operation can fail if #GCredentials is not supported on the
+ * OS or if the native credentials type does not contain information
+ * about the UNIX process ID.
+ *
+ * Returns: The UNIX process ID, or -1 if @error is set.
+ *
+ * Since: 2.36
+ */
+pid_t
+g_credentials_get_unix_pid (GCredentials *credentials,
+ GError **error)
+{
+ pid_t ret;
+
+ g_return_val_if_fail (G_IS_CREDENTIALS (credentials), -1);
+ g_return_val_if_fail (error == NULL || *error == NULL, -1);
+
+#ifdef __linux__
+ ret = credentials->native.pid;
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ ret = credentials->native.cmcred_pid;
+#elif defined(__OpenBSD__)
+ ret = credentials->native.pid;
+#else
+ ret = -1;
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ G_IO_ERROR_NOT_SUPPORTED,
+ _("GCredentials does not contain a process ID on this OS"));
+#endif
+
+ return ret;
+}
+
+/**
* g_credentials_set_unix_user:
* @credentials: A #GCredentials.
* @uid: The UNIX user identifier to set.
@@ -488,4 +530,5 @@ g_credentials_set_unix_user (GCredentials *credentials,
return ret;
}
+
#endif /* G_OS_UNIX */
diff --git a/gio/gcredentials.h b/gio/gcredentials.h
index 8e09f77..ae40972 100644
--- a/gio/gcredentials.h
+++ b/gio/gcredentials.h
@@ -64,6 +64,9 @@ gboolean g_credentials_is_same_user (GCredentials *credentials,
GError **error);
#ifdef G_OS_UNIX
+GLIB_AVAILABLE_IN_2_36
+pid_t g_credentials_get_unix_pid (GCredentials *credentials,
+ GError **error);
uid_t g_credentials_get_unix_user (GCredentials *credentials,
GError **error);
gboolean g_credentials_set_unix_user (GCredentials *credentials,
diff --git a/gio/gio.symbols b/gio/gio.symbols
index 3096755..1950347 100644
--- a/gio/gio.symbols
+++ b/gio/gio.symbols
@@ -1228,6 +1228,7 @@ g_credentials_get_native
g_credentials_set_native
g_credentials_is_same_user
#ifdef G_OS_UNIX
+g_credentials_get_unix_pid
g_credentials_get_unix_user
g_credentials_set_unix_user
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]