diff options
Diffstat (limited to 'src/consoletype.c')
-rw-r--r-- | src/consoletype.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/consoletype.c b/src/consoletype.c index 6bfda4bd..1ce98901 100644 --- a/src/consoletype.c +++ b/src/consoletype.c @@ -7,21 +7,31 @@ int main(int argc, char **argv) { unsigned char twelve = 12; - int maj; + char *type; + int maj, min, ret = 0, fg = -1; struct stat sb; - + fstat(0, &sb); maj = major(sb.st_rdev); + min = minor(sb.st_rdev); if (maj != 3 && (maj < 136 || maj > 143)) { - if (ioctl (0, TIOCLINUX, &twelve) < 0) { - printf ("serial\n"); - return 1; + if ((fg = ioctl (0, TIOCLINUX, &twelve)) < 0) { + type = "serial"; + ret = 1; } else { - printf ("vt\n"); - return 0; + type = "vt"; + ret = 0; } } else { - printf ("pty\n"); - return 2; + type = "pty"; + ret = 2; + } + if (argc > 1 && !strcmp(argv[1],"fg")) { + if (fg < 0 || fg != (min-1)) + return 1; + return 0; + } else { + printf("%s\n",type); + return ret; } } |