diff options
author | Karel Zak | 2006-12-07 00:25:39 +0100 |
---|---|---|
committer | Karel Zak | 2006-12-07 00:25:39 +0100 |
commit | 7eda085c41faa3445b4b168ce78ab18dab87d98a (patch) | |
tree | eb8da4baebd0af68fa84818d3d51b4a3714667fc /login-utils/checktty.c | |
parent | Imported from util-linux-2.9i tarball. (diff) | |
download | kernel-qcow2-util-linux-7eda085c41faa3445b4b168ce78ab18dab87d98a.tar.gz kernel-qcow2-util-linux-7eda085c41faa3445b4b168ce78ab18dab87d98a.tar.xz kernel-qcow2-util-linux-7eda085c41faa3445b4b168ce78ab18dab87d98a.zip |
Imported from util-linux-2.9v tarball.
Diffstat (limited to 'login-utils/checktty.c')
-rw-r--r-- | login-utils/checktty.c | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/login-utils/checktty.c b/login-utils/checktty.c index 15873aa44..66fee7338 100644 --- a/login-utils/checktty.c +++ b/login-utils/checktty.c @@ -1,6 +1,10 @@ /* checktty.c - linked into login, checks user against /etc/usertty Created 25-Aug-95 by Peter Orbaek <poe@daimi.aau.dk> Fixed by JDS June 1996 to clear lists and close files + + 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@misiek.eu.org> + - added Native Language Support + */ #include <sys/types.h> @@ -17,6 +21,7 @@ #include <malloc.h> #include <netdb.h> #include <sys/syslog.h> +#include "nls.h" #ifdef __linux__ # include <sys/sysmacros.h> @@ -38,13 +43,13 @@ char *hostname; void badlogin(const char *s) { - printf("badlogin: %s\n", s); + printf(_("badlogin: %s\n"), s); } void sleepexit(int x) { - printf("sleepexit %d\n", x); + printf(_("sleepexit %d\n"), x); exit(1); } #endif @@ -100,8 +105,8 @@ new_class(char *class) tc = (struct ttyclass *)malloc(sizeof(struct ttyclass)); if (tc == NULL) { - printf("login: memory low, login may fail\n"); - syslog(LOG_WARNING, "can't malloc for ttyclass"); + printf(_("login: memory low, login may fail\n")); + syslog(LOG_WARNING, _("can't malloc for ttyclass")); return NULL; } @@ -122,8 +127,8 @@ add_to_class(struct ttyclass *tc, char *tty) ge = (struct grplist *)malloc(sizeof(struct grplist)); if (ge == NULL) { - printf("login: memory low, login may fail\n"); - syslog(LOG_WARNING, "can't malloc for grplist"); + printf(_("login: memory low, login may fail\n")); + syslog(LOG_WARNING, _("can't malloc for grplist")); return; } @@ -135,8 +140,6 @@ add_to_class(struct ttyclass *tc, char *tty) /* return true if tty is a pty. Very linux dependent */ -/* Note that the new dynamic ptys (say /dev/pty/0 etc) have major in 128-135 */ -/* We might try TIOCGPTN or so to recognise these new ones, if desired */ static int isapty(const char *tty) { @@ -150,16 +153,25 @@ isapty(const char *tty) #if defined(__linux__) if((stat(devname, &stb) >= 0) && S_ISCHR(stb.st_mode)) { + int majordev = major(stb.st_rdev); + + /* this is for linux versions before 1.3: use major 4 */ + if(majordev == TTY_MAJOR && minor(stb.st_rdev) >= 192) + return 1; #if defined(PTY_SLAVE_MAJOR) - /* this is for linux 1.3 and newer */ - if(major(stb.st_rdev) == PTY_SLAVE_MAJOR) + /* this is for linux 1.3 and newer: use major 3 */ + if(majordev == PTY_SLAVE_MAJOR) return 1; #endif - /* this is for linux versions before 1.3, backward compat. */ - if(major(stb.st_rdev) == TTY_MAJOR && minor(stb.st_rdev) >= 192) +#if defined(UNIX98_PTY_SLAVE_MAJOR) && defined(UNIX98_PTY_MAJOR_COUNT) + /* this is for linux 2.1.116 and newer: use majors 136-143 */ + if(majordev >= UNIX98_PTY_SLAVE_MAJOR && + majordev < UNIX98_PTY_SLAVE_MAJOR + UNIX98_PTY_MAJOR_COUNT) return 1; +#endif + } #endif return 0; @@ -416,7 +428,7 @@ checktty(const char *user, const char *tty, struct passwd *pwd) } /* there was a default rule, but user didn't match, reject! */ - printf("Login on %s from %s denied by default.\n", tty, hostname); + printf(_("Login on %s from %s denied by default.\n"), tty, hostname); badlogin(user); sleepexit(1); } @@ -427,7 +439,7 @@ checktty(const char *user, const char *tty, struct passwd *pwd) name of the tty where the user is trying to log in. So deny access! */ - printf("Login on %s from %s denied.\n", tty, hostname); + printf(_("Login on %s from %s denied.\n"), tty, hostname); badlogin(user); sleepexit(1); } |