diff options
Diffstat (limited to 'sysutils/consolekit/files/patch-src_ck-sysdeps-freebsd.c')
-rw-r--r-- | sysutils/consolekit/files/patch-src_ck-sysdeps-freebsd.c | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/sysutils/consolekit/files/patch-src_ck-sysdeps-freebsd.c b/sysutils/consolekit/files/patch-src_ck-sysdeps-freebsd.c deleted file mode 100644 index d57649345..000000000 --- a/sysutils/consolekit/files/patch-src_ck-sysdeps-freebsd.c +++ /dev/null @@ -1,198 +0,0 @@ ---- src/ck-sysdeps-freebsd.c.orig 2008-04-03 20:36:21.000000000 -0400 -+++ src/ck-sysdeps-freebsd.c 2009-04-18 18:04:39.000000000 -0400 -@@ -27,6 +27,7 @@ - #include <unistd.h> - #include <string.h> - #include <errno.h> -+#include <glob.h> - #include <paths.h> - #include <ttyent.h> - #include <kvm.h> -@@ -202,7 +203,6 @@ ck_process_stat_new_for_unix_pid (pid_t - GError **error) - { - gboolean res; -- GError *local_error; - CkProcessStat *proc; - - g_return_val_if_fail (pid > 1, FALSE); -@@ -217,7 +217,6 @@ ck_process_stat_new_for_unix_pid (pid_t - if (res) { - *stat = proc; - } else { -- g_propagate_error (error, local_error); - *stat = NULL; - } - -@@ -233,24 +232,28 @@ ck_process_stat_free (CkProcessStat *sta - GHashTable * - ck_unix_pid_get_env_hash (pid_t pid) - { -- GHashTable *hash; -+ GHashTable *hash = NULL; - char **penv; -+ char errbuf[_POSIX2_LINE_MAX]; - kvm_t *kd; - struct kinfo_proc p; - int i; - -- kd = kvm_openfiles (_PATH_DEVNULL, _PATH_DEVNULL, NULL, O_RDONLY, NULL); -+ kd = kvm_openfiles (_PATH_DEVNULL, _PATH_DEVNULL, NULL, O_RDONLY, errbuf); - if (kd == NULL) { -+ g_warning ("kvm_openfiles failed: %s", errbuf); - return NULL; - } - - if (! get_kinfo_proc (pid, &p)) { -- return NULL; -+ g_warning ("get_kinfo_proc failed: %s", g_strerror (errno)); -+ goto fail; - } - - penv = kvm_getenvv (kd, &p, 0); - if (penv == NULL) { -- return NULL; -+ g_warning ("kvm_getenvv failed: %s", kvm_geterr (kd)); -+ goto fail; - } - - hash = g_hash_table_new_full (g_str_hash, -@@ -270,6 +273,7 @@ ck_unix_pid_get_env_hash (pid_t pid) - } - } - -+fail: - kvm_close (kd); - - return hash; -@@ -280,7 +284,7 @@ ck_unix_pid_get_env (pid_t pid, - const char *var) - { - GHashTable *hash; -- char *val; -+ char *val = NULL; - - /* - * Would probably be more efficient to just loop through the -@@ -288,6 +292,8 @@ ck_unix_pid_get_env (pid_t pid, - * table, but this works for now. - */ - hash = ck_unix_pid_get_env_hash (pid); -+ if (hash == NULL) -+ return val; - val = g_strdup (g_hash_table_lookup (hash, var)); - g_hash_table_destroy (hash); - -@@ -327,38 +333,38 @@ gboolean - ck_get_max_num_consoles (guint *num) - { - int max_consoles; -- int res; -- gboolean ret; -- struct ttyent *t; -+ int i; -+ glob_t g; - -- ret = FALSE; - max_consoles = 0; - -- res = setttyent (); -- if (res == 0) { -- goto done; -- } -+ g.gl_offs = 0; -+ glob ("/dev/ttyv*", GLOB_DOOFFS | GLOB_NOSORT, NULL, &g); -+ for (i = 0; i < g.gl_pathc && g.gl_pathv[i] != NULL; i++) { -+ struct stat sb; -+ char *cdev; - -- while ((t = getttyent ()) != NULL) { -- if (t->ty_status & TTY_ON && strncmp (t->ty_name, "ttyv", 4) == 0) -+ cdev = g.gl_pathv[i]; -+ if (stat (cdev, &sb) > -1 && S_ISCHR (sb.st_mode)) { - max_consoles++; -+ } else { -+ break; -+ } - } - -- /* Increment one more so that all consoles are properly counted -+ globfree (&g); -+ -+ /* -+ * Increment one more so that all consoles are properly counted - * this is arguable a bug in vt_add_watches(). - */ - max_consoles++; - -- ret = TRUE; -- -- endttyent (); -- --done: - if (num != NULL) { - *num = max_consoles; - } - -- return ret; -+ return TRUE; - } - - char * -@@ -369,7 +375,12 @@ ck_get_console_device_for_num (guint num - /* The device number is always one less than the VT number. */ - num--; - -- device = g_strdup_printf ("/dev/ttyv%u", num); -+ if (num < 10) -+ device = g_strdup_printf ("/dev/ttyv%i", num); -+ else if (num < 32) -+ device = g_strdup_printf ("/dev/ttyv%c", num - 10 + 'a'); -+ else -+ device = NULL; - - return device; - } -@@ -379,6 +390,7 @@ ck_get_console_num_from_device (const ch - guint *num) - { - guint n; -+ char c; - gboolean ret; - - n = 0; -@@ -388,7 +400,11 @@ ck_get_console_num_from_device (const ch - return FALSE; - } - -- if (sscanf (device, "/dev/ttyv%u", &n) == 1) { -+ if (sscanf (device, "/dev/ttyv%c", &c) == 1) { -+ if (c < 58) -+ n = c - 48; -+ else -+ n = c - 'a' + 10; - /* The VT number is always one more than the device number. */ - n++; - ret = TRUE; -@@ -408,6 +424,7 @@ ck_get_active_console_num (int consol - gboolean ret; - int res; - int active; -+ char ttyn; - - g_assert (console_fd != -1); - -@@ -420,7 +437,12 @@ ck_get_active_console_num (int consol - goto out; - } - -- g_debug ("Active VT is: %d (ttyv%d)", active, active - 1); -+ if (active - 1 < 10) -+ ttyn = active - 1 + '0'; -+ else -+ ttyn = active - 11 + 'a'; -+ -+ g_debug ("Active VT is: %d (ttyv%c)", active, ttyn); - ret = TRUE; - - out: |