summaryrefslogtreecommitdiffstats
path: root/login-utils/agetty.c
diff options
context:
space:
mode:
authorKarel Zak2006-12-07 00:25:44 +0100
committerKarel Zak2006-12-07 00:25:44 +0100
commit66ee8158b69525e12060ef558cb5d77feadab1dc (patch)
tree08b30f2d07df9213f5647bc6f60b5090a263ef43 /login-utils/agetty.c
parentImported from util-linux-2.10m tarball. (diff)
downloadkernel-qcow2-util-linux-66ee8158b69525e12060ef558cb5d77feadab1dc.tar.gz
kernel-qcow2-util-linux-66ee8158b69525e12060ef558cb5d77feadab1dc.tar.xz
kernel-qcow2-util-linux-66ee8158b69525e12060ef558cb5d77feadab1dc.zip
Imported from util-linux-2.10s tarball.
Diffstat (limited to 'login-utils/agetty.c')
-rw-r--r--login-utils/agetty.c39
1 files changed, 37 insertions, 2 deletions
diff --git a/login-utils/agetty.c b/login-utils/agetty.c
index 6ae4e8335..63f4adfa6 100644
--- a/login-utils/agetty.c
+++ b/login-utils/agetty.c
@@ -489,6 +489,38 @@ parse_args(argc, argv, op)
if (argc > optind && argv[optind])
setenv ("TERM", argv[optind], 1);
+#ifdef DO_DEVFS_FIDDLING
+ /*
+ * some devfs junk, following Goswin Brederlow:
+ * turn ttyS<n> into tts/<n>
+ * turn tty<n> into vc/<n>
+ */
+ if (op->tty && strlen(op->tty) < 90) {
+ char dev_name[100];
+ struct stat st;
+
+ if (strncmp(op->tty, "ttyS", 4) == 0) {
+ strcpy(dev_name, "/dev/");
+ strcat(dev_name, op->tty);
+ if (stat(dev_name, &st) < 0) {
+ strcpy(dev_name, "/dev/tts/");
+ strcat(dev_name, op->tty + 4);
+ if (stat(dev_name, &st) == 0)
+ op->tty = strdup(dev_name + 5);
+ }
+ } else if (strncmp(op->tty, "tty", 3) == 0) {
+ strcpy(dev_name, "/dev/");
+ strncat(dev_name, op->tty, 90);
+ if (stat(dev_name, &st) < 0) {
+ strcpy(dev_name, "/dev/vc/");
+ strcat(dev_name, op->tty + 3);
+ if (stat(dev_name, &st) == 0)
+ op->tty = strdup(dev_name + 5);
+ }
+ }
+ }
+#endif
+
debug(_("exiting parseargs\n"));
}
@@ -505,7 +537,7 @@ parse_speeds(op, arg)
for (cp = strtok(arg, ","); cp != 0; cp = strtok((char *) 0, ",")) {
if ((op->speeds[op->numspeed++] = bcode(cp)) <= 0)
error(_("bad speed: %s"), cp);
- if (op->numspeed > MAX_SPEED)
+ if (op->numspeed >= MAX_SPEED)
error(_("too many alternate speeds"));
}
debug(_("exiting parsespeeds\n"));
@@ -847,8 +879,11 @@ do_prompt(op, tp)
case 'o':
{
char domainname[256];
-
+#ifdef HAVE_getdomainname
getdomainname(domainname, sizeof(domainname));
+#else
+ strcpy(domainname, "unknown_domain");
+#endif
domainname[sizeof(domainname)-1] = '\0';
printf ("%s", domainname);
}