diff options
author | Eric Koegel <eric.koegel@gmail.com> | 2017-10-31 04:46:54 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-31 04:46:54 +0300 |
commit | c4be279731346f9f5e13efe878a4a4499f470199 (patch) | |
tree | 525cdf8ed03acd3159e53a349d8563c67426c2e9 | |
parent | 6d4d6c980ce68f9b22b96cbcb229893f80f14243 (diff) | |
parent | 415a798d0ec5f420d8a4ce6861d61179391c1a55 (diff) | |
download | ConsoleKit2-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.c | 72 |
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; |