Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.busybox.net/busybox.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-05-20 21:01:14 +0400
committerDenis Vlasenko <vda.linux@googlemail.com>2007-05-20 21:01:14 +0400
commitb32502da83ff7e7241a4584c88f3a35859dfeeda (patch)
tree7dcdaf2b3940b86ca74f185cdb5dedfdc385c8d2
parent568d8c9a5cb05a595b4201198fd3c780920586dc (diff)
applied post-1.5.0 fixes1_5_1
-rw-r--r--Makefile2
-rw-r--r--editors/sed.c2
-rw-r--r--miscutils/hdparm.c4
-rw-r--r--networking/ifupdown.c72
-rw-r--r--procps/ps.c4
-rw-r--r--shell/hush.c2
6 files changed, 44 insertions, 42 deletions
diff --git a/Makefile b/Makefile
index 89a3d2e75..06b6da5c6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
VERSION = 1
PATCHLEVEL = 5
-SUBLEVEL = 0
+SUBLEVEL = 1
EXTRAVERSION =
NAME = Unnamed
diff --git a/editors/sed.c b/editors/sed.c
index f7f22f750..8500989ba 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -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. */
diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c
index 0138eed92..b5297775a 100644
--- a/miscutils/hdparm.c
+++ b/miscutils/hdparm.c
@@ -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) {
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 887c2eea5..74646c6f5 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -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;
diff --git a/procps/ps.c b/procps/ps.c
index c1cb64397..2be0b3605 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -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--;
diff --git a/shell/hush.c b/shell/hush.c
index 7658aebed..cc0cb69bd 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -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 {