aboutsummaryrefslogtreecommitdiffstats
path: root/src/consoletype.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/consoletype.c')
-rw-r--r--src/consoletype.c28
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;
}
}