ash,hush: set $HOSTNAME is bash compat. Closes 7028
function old new delta hush_main 1056 1128 +72 ash_main 1442 1487 +45 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
ad16741ccd
commit
3fa97af7cc
@ -41,6 +41,7 @@
|
|||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include <fnmatch.h>
|
#include <fnmatch.h>
|
||||||
#include <sys/times.h>
|
#include <sys/times.h>
|
||||||
|
#include <sys/utsname.h> /* for setting $HOSTNAME */
|
||||||
|
|
||||||
#include "busybox.h" /* for applet_names */
|
#include "busybox.h" /* for applet_names */
|
||||||
#include "unicode.h"
|
#include "unicode.h"
|
||||||
@ -13018,6 +13019,11 @@ init(void)
|
|||||||
#if ENABLE_ASH_BASH_COMPAT
|
#if ENABLE_ASH_BASH_COMPAT
|
||||||
p = lookupvar("SHLVL");
|
p = lookupvar("SHLVL");
|
||||||
setvar("SHLVL", utoa((p ? atoi(p) : 0) + 1), VEXPORT);
|
setvar("SHLVL", utoa((p ? atoi(p) : 0) + 1), VEXPORT);
|
||||||
|
if (!lookupvar("HOSTNAME")) {
|
||||||
|
struct utsname uts;
|
||||||
|
uname(&uts);
|
||||||
|
setvar2("HOSTNAME", uts.nodename);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
p = lookupvar("PWD");
|
p = lookupvar("PWD");
|
||||||
if (p) {
|
if (p) {
|
||||||
|
11
shell/hush.c
11
shell/hush.c
@ -91,6 +91,7 @@
|
|||||||
#if ENABLE_HUSH_CASE
|
#if ENABLE_HUSH_CASE
|
||||||
# include <fnmatch.h>
|
# include <fnmatch.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <sys/utsname.h> /* for setting $HOSTNAME */
|
||||||
|
|
||||||
#include "busybox.h" /* for APPLET_IS_NOFORK/NOEXEC */
|
#include "busybox.h" /* for APPLET_IS_NOFORK/NOEXEC */
|
||||||
#include "unicode.h"
|
#include "unicode.h"
|
||||||
@ -7786,6 +7787,14 @@ int hush_main(int argc, char **argv)
|
|||||||
|
|
||||||
/* Export PWD */
|
/* Export PWD */
|
||||||
set_pwd_var(/*exp:*/ 1);
|
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 _,
|
/* bash also exports SHLVL and _,
|
||||||
* and sets (but doesn't export) the following variables:
|
* and sets (but doesn't export) the following variables:
|
||||||
* BASH=/bin/bash
|
* BASH=/bin/bash
|
||||||
@ -7794,7 +7803,6 @@ int hush_main(int argc, char **argv)
|
|||||||
* HOSTTYPE=i386
|
* HOSTTYPE=i386
|
||||||
* MACHTYPE=i386-pc-linux-gnu
|
* MACHTYPE=i386-pc-linux-gnu
|
||||||
* OSTYPE=linux-gnu
|
* OSTYPE=linux-gnu
|
||||||
* HOSTNAME=<xxxxxxxxxx>
|
|
||||||
* PPID=<NNNNN> - we also do it elsewhere
|
* PPID=<NNNNN> - we also do it elsewhere
|
||||||
* EUID=<NNNNN>
|
* EUID=<NNNNN>
|
||||||
* UID=<NNNNN>
|
* UID=<NNNNN>
|
||||||
@ -7822,6 +7830,7 @@ int hush_main(int argc, char **argv)
|
|||||||
* PS2='> '
|
* PS2='> '
|
||||||
* PS4='+ '
|
* PS4='+ '
|
||||||
*/
|
*/
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ENABLE_FEATURE_EDITING
|
#if ENABLE_FEATURE_EDITING
|
||||||
G.line_input_state = new_line_input_t(FOR_SHELL);
|
G.line_input_state = new_line_input_t(FOR_SHELL);
|
||||||
|
Loading…
Reference in New Issue
Block a user