summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Zheng <simon.zheng@sun.com>2008-02-25 17:14:11 -0500
committerWilliam Jon McCann <jmccann@redhat.com>2008-02-25 17:14:11 -0500
commit414f7cc1e62474da69058884c5b683dc20e3a8f6 (patch)
tree49ef318e632bcb01e9a67e170e594cb367e02939
parent5315cd9e36f86f9d1ea1419c6521524a68801d4a (diff)
properly get display device on Solaris
Mapping between device path and (major, minor). "/dev/vt" -- (15,*) "/dev/pts" -- (24,*) "/dev/console" -- (0,0) "NO_TTY_VALUE" - (-1,-1) Also, solaris VT device is named like this. /dev/console --- VT #1 /dev/vt/2 --- VT #2 /dev/vt/3 --- VT #3 /dev/vt/N --- VT #4
-rw-r--r--src/ck-sysdeps-solaris.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/ck-sysdeps-solaris.c b/src/ck-sysdeps-solaris.c
index e32265e..87bf4fd 100644
--- a/src/ck-sysdeps-solaris.c
+++ b/src/ck-sysdeps-solaris.c
@@ -177,8 +177,11 @@ stat2proc (pid_t pid,
snprintf (P->tty_text, sizeof P->tty_text, "%3d,%-3d", tty_maj, tty_min);
+ if (tty_maj == 15) {
+ snprintf (P->tty_text, sizeof P->tty_text, "/dev/vt/%u", tty_min);
+ }
if (tty_maj == 24) {
- snprintf (P->tty_text, sizeof P->tty_text, "pts/%-3u", tty_min);
+ snprintf (P->tty_text, sizeof P->tty_text, "/dev/pts/%u", tty_min);
}
if (P->tty == NO_TTY_VALUE) {
@@ -197,7 +200,7 @@ stat2proc (pid_t pid,
}
if (P->tty == DEV_ENCODE(0,0)) {
- memcpy (P->tty_text, "console", 8);
+ memcpy (P->tty_text, "/dev/console", 12);
}
if (P->pid != pid) {
@@ -410,7 +413,10 @@ ck_get_console_device_for_num (guint num)
{
char *device;
- device = g_strdup_printf ("/dev/vt/%u", num);
+ if (num == 1)
+ device = g_strdup_printf ("/dev/console", num);
+ else
+ device = g_strdup_printf ("/dev/vt/%u", num);
return device;
}
@@ -429,7 +435,9 @@ ck_get_console_num_from_device (const char *device,
return FALSE;
}
- if (sscanf (device, "/dev/vt/%u", &n) == 1) {
+ if (strcmp (device, "/dev/console") == 0) {
+ *num = 1;
+ } else if (sscanf (device, "/dev/vt/%u", &n) == 1) {
ret = TRUE;
}