summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Koegel <eric.koegel@gmail.com>2017-10-31 04:46:54 +0300
committerGitHub <noreply@github.com>2017-10-31 04:46:54 +0300
commitc4be279731346f9f5e13efe878a4a4499f470199 (patch)
tree525cdf8ed03acd3159e53a349d8563c67426c2e9
parent6d4d6c980ce68f9b22b96cbcb229893f80f14243 (diff)
parent415a798d0ec5f420d8a4ce6861d61179391c1a55 (diff)
downloadConsoleKit2-c4be279731346f9f5e13efe878a4a4499f470199.tar.gz
Merge pull request #103 from markuspf/fix-make-tmpfs-dragonfly
Fix `make_tmpfs` on DragonFly and clean up some redundant code
-rw-r--r--src/ck-sysdeps-dragonfly.c72
1 files changed, 14 insertions, 58 deletions
diff --git a/src/ck-sysdeps-dragonfly.c b/src/ck-sysdeps-dragonfly.c
index b43de38..9f8e52f 100644
--- a/src/ck-sysdeps-dragonfly.c
+++ b/src/ck-sysdeps-dragonfly.c
@@ -48,6 +48,7 @@
#ifdef HAVE_SYS_MOUNT_H
#include <sys/mount.h>
#endif
+#include <vfs/tmpfs/tmpfs_mount.h>
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
@@ -475,70 +476,22 @@ ck_get_active_console_num (int console_fd,
return ret;
}
-static gchar *
-get_string_sysctl (GError **err, const gchar *format, ...)
-{
- va_list args;
- gchar *name;
- size_t value_len;
- gchar *str = NULL;
-
- g_return_val_if_fail(format != NULL, FALSE);
-
- va_start (args, format);
- name = g_strdup_vprintf (format, args);
- va_end (args);
-
- if (sysctlbyname (name, NULL, &value_len, NULL, 0) == 0) {
- str = g_new (char, value_len + 1);
- if (sysctlbyname (name, str, &value_len, NULL, 0) == 0) {
- str[value_len] = 0;
- } else {
- g_free (str);
- str = NULL;
- }
- }
-
- if (!str)
- g_set_error (err, 0, 0, "%s", g_strerror(errno));
-
- g_free(name);
- return str;
-}
-
-static gboolean
-freebsd_supports_sleep_state (const gchar *state)
-{
- gboolean ret = FALSE;
- gchar *sleep_states;
-
- sleep_states = get_string_sysctl (NULL, "hw.acpi.supported_sleep_state");
- if (sleep_states != NULL) {
- if (strstr (sleep_states, state) != NULL)
- ret = TRUE;
- }
-
- g_free (sleep_states);
-
- return ret;
-}
-
+/* DragonFly has no support for suspend, hibernate, or sleep */
gboolean
ck_system_can_suspend (void)
{
- return freebsd_supports_sleep_state ("S3");
+ return FALSE;
}
gboolean
ck_system_can_hibernate (void)
{
- return freebsd_supports_sleep_state ("S4");
+ return FALSE;
}
gboolean
ck_system_can_hybrid_sleep (void)
{
- /* TODO: not implemented */
return FALSE;
}
@@ -546,16 +499,19 @@ gboolean
ck_make_tmpfs (guint uid, guint gid, const gchar *dest)
{
#ifdef HAVE_SYS_MOUNT_H
- gchar *opts;
- int result;
-
+ int result;
+ struct tmpfs_mount_info opts;
TRACE ();
- opts = g_strdup_printf ("mode=0700,uid=%d", uid);
-
- result = mount("tmpfs", dest, 0, opts);
+ opts.ta_version = TMPFS_ARGS_VERSION;
+ opts.ta_size_max = 0;
+ opts.ta_nodes_max = 0;
+ opts.ta_maxfsize_max = 0;
+ opts.ta_root_uid = uid;
+ opts.ta_root_gid = gid;
+ opts.ta_root_mode = 0x1c0; /* 0700 */
- g_free (opts);
+ result = mount("tmpfs", dest, 0, &opts);
if (result == 0) {
return TRUE;