busybox --install [-s] [DIR]: allow a parameter - destination DIR
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b3ba9e28e8
commit
3b405437b8
@ -586,7 +586,8 @@ static void check_suid(int applet_no)
|
|||||||
|
|
||||||
#if ENABLE_FEATURE_INSTALLER
|
#if ENABLE_FEATURE_INSTALLER
|
||||||
/* create (sym)links for each applet */
|
/* create (sym)links for each applet */
|
||||||
static void install_links(const char *busybox, int use_symbolic_links)
|
static void install_links(const char *busybox, int use_symbolic_links,
|
||||||
|
char *custom_install_dir)
|
||||||
{
|
{
|
||||||
/* directory table
|
/* directory table
|
||||||
* this should be consistent w/ the enum,
|
* this should be consistent w/ the enum,
|
||||||
@ -612,7 +613,7 @@ static void install_links(const char *busybox, int use_symbolic_links)
|
|||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(applet_main); i++) {
|
for (i = 0; i < ARRAY_SIZE(applet_main); i++) {
|
||||||
fpc = concat_path_file(
|
fpc = concat_path_file(
|
||||||
install_dir[APPLET_INSTALL_LOC(i)],
|
custom_install_dir ? custom_install_dir : install_dir[APPLET_INSTALL_LOC(i)],
|
||||||
APPLET_NAME(i));
|
APPLET_NAME(i));
|
||||||
// debug: bb_error_msg("%slinking %s to busybox",
|
// debug: bb_error_msg("%slinking %s to busybox",
|
||||||
// use_symbolic_links ? "sym" : "", fpc);
|
// use_symbolic_links ? "sym" : "", fpc);
|
||||||
@ -624,7 +625,7 @@ static void install_links(const char *busybox, int use_symbolic_links)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define install_links(x,y) ((void)0)
|
#define install_links(x,y,z) ((void)0)
|
||||||
#endif /* FEATURE_INSTALLER */
|
#endif /* FEATURE_INSTALLER */
|
||||||
|
|
||||||
/* If we were called as "busybox..." */
|
/* If we were called as "busybox..." */
|
||||||
@ -683,12 +684,15 @@ static int busybox_main(char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ENABLE_FEATURE_INSTALLER && strcmp(argv[1], "--install") == 0) {
|
if (ENABLE_FEATURE_INSTALLER && strcmp(argv[1], "--install") == 0) {
|
||||||
|
int use_symbolic_links;
|
||||||
const char *busybox;
|
const char *busybox;
|
||||||
busybox = xmalloc_readlink(bb_busybox_exec_path);
|
busybox = xmalloc_readlink(bb_busybox_exec_path);
|
||||||
if (!busybox)
|
if (!busybox)
|
||||||
busybox = bb_busybox_exec_path;
|
busybox = bb_busybox_exec_path;
|
||||||
/* -s makes symlinks */
|
/* -s makes symlinks, argv[3] is a custom defined */
|
||||||
install_links(busybox, argv[2] && strcmp(argv[2], "-s") == 0);
|
/* install directory or NULL to use the hardcoded defaults */
|
||||||
|
use_symbolic_links = (argv[2] && strcmp(argv[2], "-s") == 0 && argv++);
|
||||||
|
install_links(busybox, use_symbolic_links, argv[2]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user