diff options
Diffstat (limited to 'applets')
-rw-r--r-- | applets/applets.c | 7 | ||||
-rwxr-xr-x | applets/install.sh | 82 |
2 files changed, 53 insertions, 36 deletions
diff --git a/applets/applets.c b/applets/applets.c index 6de6db3cd..c2040b9a3 100644 --- a/applets/applets.c +++ b/applets/applets.c | |||
@@ -600,9 +600,10 @@ static int busybox_main(char **argv) | |||
600 | /* "busybox <applet> arg1 arg2 ..." */ | 600 | /* "busybox <applet> arg1 arg2 ..." */ |
601 | argv++; | 601 | argv++; |
602 | } | 602 | } |
603 | /* we want "<argv[0]>: applet not found", not "busybox: ..." */ | 603 | /* We support "busybox /a/path/to/applet args..." too. Allows for |
604 | applet_name = argv[0]; | 604 | * "#!/bin/busybox"-style wrappers */ |
605 | run_applet_and_exit(argv[0], argv); | 605 | applet_name = bb_get_last_path_component(argv[0]); |
606 | run_applet_and_exit(applet_name, argv); | ||
606 | bb_error_msg_and_die("applet not found"); | 607 | bb_error_msg_and_die("applet not found"); |
607 | } | 608 | } |
608 | 609 | ||
diff --git a/applets/install.sh b/applets/install.sh index b02350262..e94b2b98e 100755 --- a/applets/install.sh +++ b/applets/install.sh | |||
@@ -5,19 +5,23 @@ export LC_CTYPE=POSIX | |||
5 | 5 | ||
6 | prefix=${1} | 6 | prefix=${1} |
7 | if [ -z "$prefix" ]; then | 7 | if [ -z "$prefix" ]; then |
8 | echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks]" | 8 | echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks/--scriptwrapper]" |
9 | exit 1; | 9 | exit 1; |
10 | fi | 10 | fi |
11 | h=`sort busybox.links | uniq` | 11 | h=`sort busybox.links | uniq` |
12 | scriptwrapper="n" | ||
12 | cleanup="0" | 13 | cleanup="0" |
13 | noclobber="0" | 14 | noclobber="0" |
14 | case "$2" in | 15 | case "$2" in |
15 | --hardlinks) linkopts="-f";; | 16 | --hardlinks) linkopts="-f";; |
16 | --symlinks) linkopts="-fs";; | 17 | --symlinks) linkopts="-fs";; |
17 | --cleanup) cleanup="1";; | 18 | --scriptwrapper) scriptwrapper="y";swrapall="y";; |
18 | --noclobber) noclobber="1";; | 19 | --sw-sh-hard) scriptwrapper="y";linkopts="-f";; |
19 | "") h="";; | 20 | --sw-sh-sym) scriptwrapper="y";linkopts="-fs";; |
20 | *) echo "Unknown install option: $2"; exit 1;; | 21 | --cleanup) cleanup="1";; |
22 | --noclobber) noclobber="1";; | ||
23 | "") h="";; | ||
24 | *) echo "Unknown install option: $2"; exit 1;; | ||
21 | esac | 25 | esac |
22 | 26 | ||
23 | if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then | 27 | if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then |
@@ -52,6 +56,7 @@ if [ "$cleanup" = "1" ] && [ -e "$prefix/bin/busybox" ]; then | |||
52 | cd "$pd" | 56 | cd "$pd" |
53 | done | 57 | done |
54 | ` | 58 | ` |
59 | exit 0 | ||
55 | fi | 60 | fi |
56 | 61 | ||
57 | rm -f $prefix/bin/busybox || exit 1 | 62 | rm -f $prefix/bin/busybox || exit 1 |
@@ -61,33 +66,44 @@ install -m 755 busybox $prefix/bin/busybox || exit 1 | |||
61 | for i in $h; do | 66 | for i in $h; do |
62 | appdir=`dirname $i` | 67 | appdir=`dirname $i` |
63 | mkdir -p $prefix/$appdir || exit 1 | 68 | mkdir -p $prefix/$appdir || exit 1 |
64 | if [ "$2" = "--hardlinks" ]; then | 69 | if [ "$scriptwrapper" = "y" ]; then |
65 | bb_path="$prefix/bin/busybox" | 70 | if [ "$swrapall" != "y" ] && [ "$i" = "/bin/sh" ]; then |
66 | else | 71 | ln $linkopts busybox $prefix$i || exit 1 |
67 | case "$appdir" in | 72 | else |
68 | /) | 73 | rm -f $prefix$i |
69 | bb_path="bin/busybox" | 74 | echo "#!/bin/busybox" > $prefix$i |
70 | ;; | 75 | chmod +x $prefix/$i |
71 | /bin) | 76 | fi |
72 | bb_path="busybox" | 77 | echo " $prefix$i" |
73 | ;; | ||
74 | /sbin) | ||
75 | bb_path="../bin/busybox" | ||
76 | ;; | ||
77 | /usr/bin|/usr/sbin) | ||
78 | bb_path="../../bin/busybox" | ||
79 | ;; | ||
80 | *) | ||
81 | echo "Unknown installation directory: $appdir" | ||
82 | exit 1 | ||
83 | ;; | ||
84 | esac | ||
85 | fi | ||
86 | if [ "$noclobber" = "0" ] || [ ! -e "$prefix$i" ]; then | ||
87 | echo " $prefix$i -> $bb_path" | ||
88 | ln $linkopts $bb_path $prefix$i || exit 1 | ||
89 | else | 78 | else |
90 | echo " $prefix$i already exists" | 79 | if [ "$2" = "--hardlinks" ]; then |
80 | bb_path="$prefix/bin/busybox" | ||
81 | else | ||
82 | case "$appdir" in | ||
83 | /) | ||
84 | bb_path="bin/busybox" | ||
85 | ;; | ||
86 | /bin) | ||
87 | bb_path="busybox" | ||
88 | ;; | ||
89 | /sbin) | ||
90 | bb_path="../bin/busybox" | ||
91 | ;; | ||
92 | /usr/bin|/usr/sbin) | ||
93 | bb_path="../../bin/busybox" | ||
94 | ;; | ||
95 | *) | ||
96 | echo "Unknown installation directory: $appdir" | ||
97 | exit 1 | ||
98 | ;; | ||
99 | esac | ||
100 | fi | ||
101 | if [ "$noclobber" = "0" ] || [ ! -e "$prefix$i" ]; then | ||
102 | echo " $prefix$i -> $bb_path" | ||
103 | ln $linkopts $bb_path $prefix$i || exit 1 | ||
104 | else | ||
105 | echo " $prefix$i already exists" | ||
106 | fi | ||
91 | fi | 107 | fi |
92 | done | 108 | done |
93 | 109 | ||