summaryrefslogtreecommitdiffstats
path: root/term-utils/agetty.c
diff options
context:
space:
mode:
authorKarel Zak2011-08-05 13:47:22 +0200
committerKarel Zak2011-10-26 23:17:15 +0200
commit01095ae33c50d5e4c435d21f9a1003feb3047661 (patch)
tree1cb8402cd9637b02953d78588df965230c75308b /term-utils/agetty.c
parentprlimit: new command (diff)
downloadkernel-qcow2-util-linux-01095ae33c50d5e4c435d21f9a1003feb3047661.tar.gz
kernel-qcow2-util-linux-01095ae33c50d5e4c435d21f9a1003feb3047661.tar.xz
kernel-qcow2-util-linux-01095ae33c50d5e4c435d21f9a1003feb3047661.zip
agetty: pass hostname to login(1)
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'term-utils/agetty.c')
-rw-r--r--term-utils/agetty.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/term-utils/agetty.c b/term-utils/agetty.c
index 75c2b1453..041e1f7a6 100644
--- a/term-utils/agetty.c
+++ b/term-utils/agetty.c
@@ -175,6 +175,7 @@ struct options {
#define F_NOHOSTNAME (1<<18) /* Do not show the hostname */
#define F_LONGHNAME (1<<19) /* Show Full qualified hostname */
#define F_NOHINTS (1<<20) /* Don't print hints */
+#define F_REMOTE (1<<21) /* Add '-h fakehost' to login(1) command line */
#define serial_tty_option(opt, flag) \
(((opt)->flags & (F_VCONSOLE|(flag))) == (flag))
@@ -420,12 +421,18 @@ int main(int argc, char **argv)
*/
login_options_to_argv(login_argv, &login_argc,
options.logopt, username);
- } else if (username) {
- if (options.autolog)
- login_argv[login_argc++] = "-f";
- else
- login_argv[login_argc++] = "--";
- login_argv[login_argc++] = username;
+ } else {
+ if (fakehost && (options.flags & F_REMOTE)) {
+ login_argv[login_argc++] = "-h";
+ login_argv[login_argc++] = fakehost;
+ }
+ if (username) {
+ if (options.autolog)
+ login_argv[login_argc++] = "-f";
+ else
+ login_argv[login_argc++] = "--";
+ login_argv[login_argc++] = username;
+ }
}
login_argv[login_argc] = NULL; /* last login argv */
@@ -550,6 +557,7 @@ static void parse_args(int argc, char **argv, struct options *op)
{ "noreset", no_argument, 0, 'c' },
{ "chdir", required_argument, 0, 'C' },
{ "delay", required_argument, 0, 'd' },
+ { "remote", no_argument, 0, 'E' },
{ "issue-file", required_argument, 0, 'f' },
{ "flow-control", no_argument, 0, 'h' },
{ "host", required_argument, 0, 'H' },
@@ -579,7 +587,7 @@ static void parse_args(int argc, char **argv, struct options *op)
};
while ((c = getopt_long(argc, argv,
- "8a:cC:d:f:hH:iI:Jl:LmnNo:pP:r:Rst:Uw", longopts,
+ "8a:cC:d:Ef:hH:iI:Jl:LmnNo:pP:r:Rst:Uw", longopts,
NULL)) != -1) {
switch (c) {
case '8':
@@ -597,6 +605,9 @@ static void parse_args(int argc, char **argv, struct options *op)
case 'd':
op->delay = atoi(optarg);
break;
+ case 'E':
+ op->flags |= F_REMOTE;
+ break;
case 'f':
op->flags |= F_CUSTISSUE;
op->issue = optarg;