diff options
| author | Simon Zheng <simon.zheng@sun.com> | 2008-02-25 17:14:11 -0500 | 
|---|---|---|
| committer | William Jon McCann <jmccann@redhat.com> | 2008-02-25 17:14:11 -0500 | 
| commit | 414f7cc1e62474da69058884c5b683dc20e3a8f6 (patch) | |
| tree | 49ef318e632bcb01e9a67e170e594cb367e02939 | |
| parent | 5315cd9e36f86f9d1ea1419c6521524a68801d4a (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.c | 16 | 
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;          }  | 
