* Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
*/
+#include "libbb.h"
+/* After libbb.h, since it needs sys/types.h on some systems */
#include <sys/utsname.h>
#include <fnmatch.h>
-#include "libbb.h"
-
#define MAX_OPT_DEPTH 10
#define EUNBALBRACK 10001
#define EUNDEFVAR 10002
bb_error_msg("no dhcp clients found");
return 0;
}
-#elif ENABLE_APP_UDHCPC
+#elif ENABLE_UDHCPC
static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
{
#if ENABLE_FEATURE_IFUPDOWN_IP
result += static_down(ifd, exec);
return ((result == 3) ? 3 : 0);
}
-#elif ENABLE_APP_UDHCPC
+#elif ENABLE_UDHCPC
static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
{
int result;
#endif /* if ENABLE_FEATURE_IFUPDOWN_IPV4 */
+/* Returns pointer to the next word, or NULL.
+ * In 1st case, advances *buf to the word after this one.
+ */
static char *next_word(char **buf)
{
unsigned length;
if (word[length] != '\0')
word[length++] = '\0';
- *buf = word + length;
+ *buf = skip_whitespace(word + length);
return word;
}
pid_t child;
int status;
- fflush(NULL);
+ fflush_all();
child = vfork();
switch (child) {
case -1: /* failure */
xpiped_pair(infd);
xpiped_pair(outfd);
- fflush(NULL);
+ fflush_all();
pid = vfork();
switch (pid) {
/* parent */
close(infd.rd);
close(outfd.wr);
- *in = fdopen(infd.wr, "w");
- *out = fdopen(outfd.rd, "r");
+ *in = xfdopen_for_write(infd.wr);
+ *out = xfdopen_for_read(outfd.rd);
return pid;
}