applied post-1.5.0 fixes 1_5_1
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 20 May 2007 17:01:14 +0000 (17:01 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 20 May 2007 17:01:14 +0000 (17:01 -0000)
Makefile
editors/sed.c
miscutils/hdparm.c
networking/ifupdown.c
procps/ps.c
shell/hush.c

index 89a3d2e75190de1c6756b14d9113f0835a1a99c7..06b6da5c6c84bf031237c265a1030268fd65b596 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 1
 PATCHLEVEL = 5
-SUBLEVEL = 0
+SUBLEVEL = 1
 EXTRAVERSION =
 NAME = Unnamed
 
index f7f22f750c36929135553c888f4dca0ecd8ff3d6..8500989bab17b5c70986920ffc9a182c4e19f66d 100644 (file)
@@ -481,7 +481,7 @@ static void add_cmd(const char *cmdstr)
        if (bbg.add_cmd_line) {
                char *tp = xasprintf("%s\n%s", bbg.add_cmd_line, cmdstr);
                free(bbg.add_cmd_line);
-               bbg.add_cmd_line = tp;
+               cmdstr = bbg.add_cmd_line = tp;
        }
 
        /* If this line ends with backslash, request next line. */
index 0138eed924d8465a142752dcbd92fa2eea30b0e3..b5297775a761dae1d98974c4e3eb95d834a881ee 100644 (file)
@@ -1569,9 +1569,9 @@ static void process_dev(char *devname)
        if (set_mult) {
                print_flag(get_mult, "multcount", mult);
 #ifdef HDIO_DRIVE_CMD
-               bb_ioctl(fd, HDIO_SET_MULTCOUNT, &mult, "HDIO_SET_MULTCOUNT");
+               bb_ioctl(fd, HDIO_SET_MULTCOUNT, (void *)mult, "HDIO_SET_MULTCOUNT");
 #else
-               force_operation |= (!bb_ioctl(fd, HDIO_SET_MULTCOUNT, &mult, "HDIO_SET_MULTCOUNT"));
+               force_operation |= (!bb_ioctl(fd, HDIO_SET_MULTCOUNT, (void *)mult, "HDIO_SET_MULTCOUNT"));
 #endif
        }
        if (set_readonly) {
index 887c2eea5adef110f0c1bf95797e031e5c2c51cb..74646c6f500b3361448b3510f5232fdb24f2fc5c 100644 (file)
@@ -1083,15 +1083,32 @@ static llist_t *find_iface_state(llist_t *state_list, const char *iface)
        return NULL;
 }
 
+/* read the previous state from the state file */
+static llist_t *read_iface_state(void) {
+       llist_t *state_list = NULL;
+       FILE *state_fp;
+       state_fp = fopen("/var/run/ifstate", "r");
+       if (state_fp) {
+               char *start, *end_ptr;
+               while ((start = xmalloc_fgets(state_fp)) != NULL) {
+                       /* We should only need to check for a single character */
+                       end_ptr = start + strcspn(start, " \t\n");
+                       *end_ptr = '\0';
+                       llist_add_to(&state_list, start);
+               }
+               fclose(state_fp);
+       }
+       return state_list;
+}
+
+
 int ifupdown_main(int argc, char **argv);
 int ifupdown_main(int argc, char **argv)
 {
        int (*cmds)(struct interface_defn_t *) = NULL;
        struct interfaces_file_t *defn;
-       llist_t *state_list = NULL;
        llist_t *target_list = NULL;
        const char *interfaces = "/etc/network/interfaces";
-       FILE *state_fp;
        bool any_failures = 0;
 
        cmds = iface_down;
@@ -1118,32 +1135,9 @@ int ifupdown_main(int argc, char **argv)
        startup_PATH = getenv("PATH");
        if (!startup_PATH) startup_PATH = "";
 
-       /* Read the previous state from the state file */
-       state_fp = fopen("/var/run/ifstate", "r");
-       if (state_fp) {
-               char *start, *end_ptr;
-               while ((start = xmalloc_fgets(state_fp)) != NULL) {
-                       /* We should only need to check for a single character */
-                       end_ptr = start + strcspn(start, " \t\n");
-                       *end_ptr = '\0';
-                       llist_add_to(&state_list, start);
-               }
-               fclose(state_fp);
-       }
-
        /* Create a list of interfaces to work on */
        if (DO_ALL) {
-               if (cmds == iface_up) {
-                       target_list = defn->autointerfaces;
-               } else {
-                       /* iface_down */
-                       const llist_t *list = state_list;
-                       while (list) {
-                               llist_add_to_end(&target_list, xstrdup(list->data));
-                               list = list->link;
-                       }
-                       target_list = defn->autointerfaces;
-               }
+               target_list = defn->autointerfaces;
        } else {
                llist_add_to_end(&target_list, argv[optind]);
        }
@@ -1170,6 +1164,7 @@ int ifupdown_main(int argc, char **argv)
                }
 
                if (!FORCE) {
+                       llist_t *state_list = read_iface_state();
                        const llist_t *iface_state = find_iface_state(state_list, iface);
 
                        if (cmds == iface_up) {
@@ -1185,6 +1180,7 @@ int ifupdown_main(int argc, char **argv)
                                        continue;
                                }
                        }
+                       llist_free(state_list, free);
                }
 
 #if ENABLE_FEATURE_IFUPDOWN_MAPPING
@@ -1239,6 +1235,8 @@ int ifupdown_main(int argc, char **argv)
                        bb_error_msg("ignoring unknown interface %s", liface);
                        any_failures = 1;
                } else {
+                       /* update the state file */
+                       llist_t *state_list = read_iface_state();
                        llist_t *iface_state = find_iface_state(state_list, iface);
 
                        if (cmds == iface_up) {
@@ -1254,19 +1252,21 @@ int ifupdown_main(int argc, char **argv)
                                llist_unlink(&state_list, iface_state);
                                free(llist_pop(&iface_state));
                        }
-               }
-       }
 
-       /* Actually write the new state */
-       if (!NO_ACT) {
-               state_fp = xfopen("/var/run/ifstate", "w");
-               while (state_list) {
-                       if (state_list->data) {
-                               fprintf(state_fp, "%s\n", state_list->data);
+                       /* Actually write the new state */
+                       if (!NO_ACT) {
+                               FILE *state_fp = xfopen("/var/run/ifstate", "w");
+                               llist_t *state = state_list;
+                               while (state) {
+                                       if (state->data) {
+                                               fprintf(state_fp, "%s\n", state->data);
+                                       }
+                                       state = state->link;
+                               }
+                               fclose(state_fp);
                        }
-                       state_list = state_list->link;
+                       llist_free(state_list, free);
                }
-               fclose(state_fp);
        }
 
        return any_failures;
index c1cb64397e4a17c339dfcbc521272a493130d15a..2be0b36055d5dc51ab6ef613650c7bb46532842f 100644 (file)
@@ -262,7 +262,9 @@ int ps_main(int argc, char **argv)
                parse_o(default_o);
        post_process();
 
-       terminal_width = INT_MAX;
+       /* Was INT_MAX, but some libc's go belly up with printf("%.*s")
+        * and such large widths */
+       terminal_width = 30000;
        if (isatty(1)) {
                get_terminal_width_height(1, &terminal_width, NULL);
                terminal_width--;
index 7658aebed8af9a6b426ab76888fba78aee19cf83..cc0cb69bde4f0384c5bf5a1b77156db1a4ff2f68 100644 (file)
@@ -1840,7 +1840,7 @@ static int set_local_var(const char *s, int flg_export)
                        result = -1;
                } else {
                        cur->name = strdup(name);
-                       if (cur->name) {
+                       if (!cur->name) {
                                free(cur);
                                result = -1;
                        } else {