ash: move code to allow setting $HOME in /etc/profile
authorStefan Hellermann <stefan@the2masters.de>
Sun, 3 Mar 2013 14:29:32 +0000 (15:29 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 15 Mar 2013 01:37:51 +0000 (02:37 +0100)
move HISTFILE=$HOME/.ash_history below reading /etc/profile,
so that /etc/profile can set $HOME. HOME can be unset when
directly invoking ash --login from init without going through
getty.

Signed-off-by: Stefan Hellermann <stefan@the2masters.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index 0b5111a391ca50a32f99ad33c3ec4bcd6ffb1ad7..5f09fd47438bb9fdcc4b4cdfef8c96d8ab3a3126 100644 (file)
@@ -13191,19 +13191,6 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
        setstackmark(&smark);
        procargs(argv);
 
-#if ENABLE_FEATURE_EDITING_SAVEHISTORY
-       if (iflag) {
-               const char *hp = lookupvar("HISTFILE");
-               if (!hp) {
-                       hp = lookupvar("HOME");
-                       if (hp) {
-                               char *defhp = concat_path_file(hp, ".ash_history");
-                               setvar("HISTFILE", defhp, 0);
-                               free(defhp);
-                       }
-               }
-       }
-#endif
        if (argv[0] && argv[0][0] == '-')
                isloginsh = 1;
        if (isloginsh) {
@@ -13243,6 +13230,15 @@ int ash_main(int argc UNUSED_PARAM, char **argv)
 #if MAX_HISTORY > 0 && ENABLE_FEATURE_EDITING_SAVEHISTORY
                if (iflag) {
                        const char *hp = lookupvar("HISTFILE");
+                       if (!hp) {
+                               hp = lookupvar("HOME");
+                               if(hp) {
+                                       hp = concat_path_file(hp, ".ash_history");
+                                       setvar("HISTFILE", hp, 0);
+                                       free((char*)hp);
+                                       hp = lookupvar("HISTFILE");
+                               }
+                       }
                        if (hp)
                                line_input_state->hist_file = hp;
 # if ENABLE_FEATURE_SH_HISTFILESIZE