1 /* vi: set sw=4 ts=4: */
3 * issue.c: issue printing code
5 * Copyright (C) 2003 Bastian Blank <waldi@tuxbox.org>
7 * Optimize and correcting OCRNL by Vladimir Oleynik <dzo@simtreas.ru>
9 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
13 /* After libbb.h, since it needs sys/types.h on some systems */
14 #include <sys/utsname.h>
16 #define LOGIN " login: "
18 static const char fmtstr_d
[] ALIGN1
= "%A, %d %B %Y";
19 static const char fmtstr_t
[] ALIGN1
= "%H:%M:%S";
21 void FAST_FUNC
print_login_issue(const char *issue_file
, const char *tty
)
33 puts("\r"); /* start a new line */
35 fp
= fopen_for_read(issue_file
);
38 while ((c
= fgetc(fp
)) != EOF
) {
46 if (c
== '\\' || c
== '%') {
54 outbuf
= uts
.nodename
;
65 /* The field domainname of struct utsname is Linux specific. */
66 #if defined(__linux__)
69 outbuf
= uts
.domainname
;
73 strftime(buf
, sizeof(buf
), fmtstr_d
, localtime(&t
));
76 strftime(buf
, sizeof(buf
), fmtstr_t
, localtime(&t
));
85 fputs(outbuf
, stdout
);
91 void FAST_FUNC
print_login_prompt(void)
93 char *hostname
= safe_gethostname();
95 fputs(hostname
, stdout
);
101 /* Clear dangerous stuff, set PATH */
102 static const char forbid
[] ALIGN1
=
108 "LD_LIBRARY_PATH" "\0"
110 "LD_TRACE_LOADED_OBJECTS" "\0"
112 "LD_AOUT_LIBRARY_PATH" "\0"
113 "LD_AOUT_PRELOAD" "\0"
117 int FAST_FUNC
sanitize_env_if_suid(void)
121 if (getuid() == geteuid())
129 putenv((char*)bb_PATH_root_path
);
131 return 1; /* we indeed were run by different user! */