[git commit] ash,hush: set $HOSTNAME is bash compat. Closes 7028

Denys Vlasenko vda.linux at googlemail.com
Tue Apr 15 09:43:29 UTC 2014


commit: http://git.busybox.net/busybox/commit/?id=3fa97af7ccc75264fb237f279f253eddf0ba4da1
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
hush_main                                           1056    1128     +72
ash_main                                            1442    1487     +45

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c  |    6 ++++++
 shell/hush.c |   11 ++++++++++-
 2 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 7a097c8..cabeb40 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -41,6 +41,7 @@
 #include <setjmp.h>
 #include <fnmatch.h>
 #include <sys/times.h>
+#include <sys/utsname.h> /* for setting $HOSTNAME */
 
 #include "busybox.h" /* for applet_names */
 #include "unicode.h"
@@ -13018,6 +13019,11 @@ init(void)
 #if ENABLE_ASH_BASH_COMPAT
 		p = lookupvar("SHLVL");
 		setvar("SHLVL", utoa((p ? atoi(p) : 0) + 1), VEXPORT);
+		if (!lookupvar("HOSTNAME")) {
+			struct utsname uts;
+			uname(&uts);
+			setvar2("HOSTNAME", uts.nodename);
+		}
 #endif
 		p = lookupvar("PWD");
 		if (p) {
diff --git a/shell/hush.c b/shell/hush.c
index 7b0ea8b..e1d0ece 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -91,6 +91,7 @@
 #if ENABLE_HUSH_CASE
 # include <fnmatch.h>
 #endif
+#include <sys/utsname.h> /* for setting $HOSTNAME */
 
 #include "busybox.h"  /* for APPLET_IS_NOFORK/NOEXEC */
 #include "unicode.h"
@@ -7786,6 +7787,14 @@ int hush_main(int argc, char **argv)
 
 	/* Export PWD */
 	set_pwd_var(/*exp:*/ 1);
+
+#if ENABLE_HUSH_BASH_COMPAT
+	/* Set (but not export) HOSTNAME unless already set */
+	if (!get_local_var_value("HOSTNAME")) {
+		struct utsname uts;
+		uname(&uts);
+		set_local_var_from_halves("HOSTNAME", uts.nodename);
+	}
 	/* bash also exports SHLVL and _,
 	 * and sets (but doesn't export) the following variables:
 	 * BASH=/bin/bash
@@ -7794,7 +7803,6 @@ int hush_main(int argc, char **argv)
 	 * HOSTTYPE=i386
 	 * MACHTYPE=i386-pc-linux-gnu
 	 * OSTYPE=linux-gnu
-	 * HOSTNAME=<xxxxxxxxxx>
 	 * PPID=<NNNNN> - we also do it elsewhere
 	 * EUID=<NNNNN>
 	 * UID=<NNNNN>
@@ -7822,6 +7830,7 @@ int hush_main(int argc, char **argv)
 	 * PS2='> '
 	 * PS4='+ '
 	 */
+#endif
 
 #if ENABLE_FEATURE_EDITING
 	G.line_input_state = new_line_input_t(FOR_SHELL);


More information about the busybox-cvs mailing list