#include "busybox.h"
#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include <errno.h>
+#include <stdlib.h>
#undef APPLET
#undef APPLET_NOUSAGE
#include "messages.c"
static int been_there_done_that = 0;
-
-
const char *applet_name;
#ifdef BB_FEATURE_INSTALLER
if (len != -1) {
path[len] = 0;
} else {
- error_msg("%s: %s\n", proc, strerror(errno));
+ perror_msg("%s", proc);
return NULL;
}
return strdup(path);
int i;
int rc;
- if (use_symbolic_links) Link = symlink;
+ if (use_symbolic_links)
+ Link = symlink;
for (i = 0; applets[i].name != NULL; i++) {
sprintf ( command, "%s/%s",
- install_dir[applets[i].location],
- applets[i].name);
+ install_dir[applets[i].location], applets[i].name);
rc = Link(busybox, command);
if (rc) {
- error_msg("%s: %s\n", command, strerror(errno));
+ perror_msg("%s", command);
}
}
}
{
struct BB_applet search_applet, *applet;
const char *s;
- applet_name = "busybox";
-
-#ifdef BB_FEATURE_INSTALLER
- /*
- * This style of argument parsing doesn't scale well
- * in the event that busybox starts wanting more --options.
- * If someone has a cleaner approach, by all means implement it.
- */
- if (argc > 1 && (strcmp(argv[1], "--install") == 0)) {
- int use_symbolic_links = 0;
- int rc = 0;
- char *busybox;
-
- /* to use symlinks, or not to use symlinks... */
- if (argc > 2) {
- if ((strcmp(argv[2], "-s") == 0)) {
- use_symbolic_links = 1;
- }
- }
-
- /* link */
- busybox = busybox_fullpath();
- if (busybox) {
- install_links(busybox, use_symbolic_links);
- free(busybox);
- } else {
- rc = 1;
- }
- return rc;
- }
-#endif /* BB_FEATURE_INSTALLER */
for (s = applet_name = argv[0]; *s != '\0';) {
if (*s++ == '/')
exit((*(applet->main)) (argc, argv));
}
- return(busybox_main(argc, argv));
+ error_msg_and_die("applet not found\n");
}
{
int col = 0, len, i;
+#ifdef BB_FEATURE_INSTALLER
+ /*
+ * This style of argument parsing doesn't scale well
+ * in the event that busybox starts wanting more --options.
+ * If someone has a cleaner approach, by all means implement it.
+ */
+ if (argc > 1 && (strcmp(argv[1], "--install") == 0)) {
+ int use_symbolic_links = 0;
+ int rc = 0;
+ char *busybox;
+
+ /* to use symlinks, or not to use symlinks... */
+ if (argc > 2) {
+ if ((strcmp(argv[2], "-s") == 0)) {
+ use_symbolic_links = 1;
+ }
+ }
+
+ /* link */
+ busybox = busybox_fullpath();
+ if (busybox) {
+ install_links(busybox, use_symbolic_links);
+ free(busybox);
+ } else {
+ rc = 1;
+ }
+ return rc;
+ }
+#endif /* BB_FEATURE_INSTALLER */
+
argc--;
/* If we've already been here once, exit now */
/* Fix up the argv pointers */
len = argv[1] - argv[0];
- memmove(argv, argv+1, sizeof(char *) * (argc + 1));
+ memmove(argv, argv + 1, sizeof(char *) * (argc + 1));
for (i = 0; i < argc; i++)
argv[i] -= len;