summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmadeusz Sławiński <amade@asmblr.net>2014-04-26 18:29:40 +0200
committerAmadeusz Sławiński <amade@asmblr.net>2014-04-26 18:29:40 +0200
commit75711557581f6cf2688d30ba5e13e9aac96168c0 (patch)
treed6a16f19675b35308e63d187f43101baffe452a2
parent3b2b8ee6ae360bbaa676cc8e1f1f91dbfad94ae2 (diff)
downloadscreen-75711557581f6cf2688d30ba5e13e9aac96168c0.tar.gz
Revert "Revert "allow /dev/console to be a symlink""
Was reverted to apply some other patches correctly This reverts commit 12dd363fc5bd1d89bbf53f552c06e80ca0d39432.
-rw-r--r--src/tty.sh16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/tty.sh b/src/tty.sh
index 3374753..814f3d9 100644
--- a/src/tty.sh
+++ b/src/tty.sh
@@ -1506,11 +1506,21 @@ CheckTtyname (tty)
char *tty;
{
struct stat st;
+ char * real;
+ int rc;
- if (lstat(tty, &st) || !S_ISCHR(st.st_mode) ||
- (st.st_nlink > 1 && strncmp(tty, "/dev/", 5)))
+ real = realpath(tty, NULL);
+ if (!real)
return -1;
- return 0;
+
+ if (lstat(real, &st) || !S_ISCHR(st.st_mode) ||
+ (st.st_nlink > 1 && strncmp(real, "/dev/", 5)))
+ rc = -1;
+ else
+ rc = 0;
+
+ free(real);
+ return rc;
}
/*