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";
20 void FAST_FUNC print_login_issue(const char *issue_file, const char *tty)
32 puts("\r"); /* start a new line */
34 fp = fopen_for_read(issue_file);
37 while ((c = fgetc(fp)) != EOF) {
45 if (c == '\\' || c == '%') {
53 outbuf = uts.nodename;
64 /* The field domainname of struct utsname is Linux specific. */
65 #if defined(__linux__)
68 outbuf = uts.domainname;
72 strftime(buf, sizeof(buf), fmtstr_d, localtime(&t));
75 strftime_HHMMSS(buf, sizeof(buf), &t);
84 fputs(outbuf, stdout);
90 void FAST_FUNC print_login_prompt(void)
92 char *hostname = safe_gethostname();
94 fputs(hostname, stdout);
100 /* Clear dangerous stuff, set PATH */
101 static const char forbid[] ALIGN1 =
107 "LD_LIBRARY_PATH" "\0"
109 "LD_TRACE_LOADED_OBJECTS" "\0"
111 "LD_AOUT_LIBRARY_PATH" "\0"
112 "LD_AOUT_PRELOAD" "\0"
116 int FAST_FUNC sanitize_env_if_suid(void)
120 if (getuid() == geteuid())
128 putenv((char*)bb_PATH_root_path);
130 return 1; /* we indeed were run by different user! */