mirror of
https://github.com/sheumann/hush.git
synced 2025-02-05 05:33:31 +00:00
cttyhack: move /sys/class/tty/console/active check to the front
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
156840c249
commit
f8a5b792ba
@ -117,7 +117,24 @@ int cttyhack_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
/* We don't have ctty (or don't have "/dev/tty" node...) */
|
/* We don't have ctty (or don't have "/dev/tty" node...) */
|
||||||
do {
|
do {
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
int s;
|
/* Note that this method does not use _stdin_.
|
||||||
|
* Thus, "cttyhack </dev/something" can't be used.
|
||||||
|
* However, this method is more reliable than
|
||||||
|
* TIOCGSERIAL check, which assumes that all
|
||||||
|
* serial lines follow /dev/ttySn convention -
|
||||||
|
* which is not always the case.
|
||||||
|
* Therefore, we use this methos first:
|
||||||
|
*/
|
||||||
|
int s = open_read_close("/sys/class/tty/console/active",
|
||||||
|
console + 5, sizeof(console) - 5);
|
||||||
|
if (s > 0) {
|
||||||
|
/* found active console via sysfs (Linux 2.6.38+)
|
||||||
|
* sysfs string looks like "ttyS0\n" so zap the newline:
|
||||||
|
*/
|
||||||
|
console[4 + s] = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (ioctl(0, VT_GETSTATE, &u.vt) == 0) {
|
if (ioctl(0, VT_GETSTATE, &u.vt) == 0) {
|
||||||
/* this is linux virtual tty */
|
/* this is linux virtual tty */
|
||||||
sprintf(console + 8, "S%u" + 1, (int)u.vt.v_active);
|
sprintf(console + 8, "S%u" + 1, (int)u.vt.v_active);
|
||||||
@ -130,18 +147,6 @@ int cttyhack_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
sprintf(console + 8, "S%u", (int)u.sr.line);
|
sprintf(console + 8, "S%u", (int)u.sr.line);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#ifdef __linux__
|
|
||||||
/* Note that this method is not related to _stdin_ */
|
|
||||||
s = open_read_close("/sys/class/tty/console/active",
|
|
||||||
console + 5, sizeof(console) - 5);
|
|
||||||
if (s > 0) {
|
|
||||||
/* found active console via sysfs (Linux 2.6.38+)
|
|
||||||
* sysfs string looks like "ttyS0\n" so zap the newline:
|
|
||||||
*/
|
|
||||||
console[4 + s] = '\0';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/* nope, could not find it */
|
/* nope, could not find it */
|
||||||
console[0] = '\0';
|
console[0] = '\0';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user