# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+<# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Authors:
# Peter Jones <pjones@redhat.com>
# $2 (optional) Name for the file on the ramdisk
# Location of the image dir is assumed to be $initdir
inst_simple() {
- local src=$1 target="${initdir}${2:-$1}"
+ local src target
+ [[ -f $1 ]] || return 1
+ src=$1 target="${initdir}${2:-$1}"
[[ -f $target ]] && return 0
mkdir -p "${target%/*}"
echo "Installing $src" >&2
# If the file is a binary executable, install all its
# shared library dependencies, if any.
inst_binary() {
- local bin="$1" target="${2:-$1}"
+ local bin target
+ bin=$(find_binary "$1") || return 1
+ shift
local LDSO NAME IO FILE ADDR I1 n f TLIBDIR
[[ -f $initdir$target ]] && return 0
# I love bash!
}
inst_library "$FILE"
done < <(ldd $bin 2>/dev/null)
- inst_simple "$bin" "$target"
+ inst_simple "$bin" "$@"
}
# same as above, except for shell scripts.
# If your shell script does not start with shebang, it is not a shell script.
inst_script() {
+ [[ -f $1 ]] || return 1
local src=$1 target=${2:-$1} line
read -r -n 80 line <"$src"
[[ $line =~ (#! *)(/[^ ]+).* ]] || return 1
echo "usage: inst <file> <root> [<destination file>]"
return 1
fi
- local src=$(find_file "$1") || {
- echo "Cannot find requested file $1. Exiting."
- exit 1
- }
- local dest=${2:-$src}
for x in inst_symlink inst_script inst_binary inst_simple; do
- $x "$src" "$dest" && return 0
+ $x "$@" && return 0
done
return 1
}