Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 372928 Details for
Bug 504954
app-misc/pax-utils: port lddtree.sh to POSIX shell
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
lddtree-sh.patch
lddtree-sh.patch (text/plain), 5.45 KB, created by
Natanael Copa
on 2014-03-18 13:04:52 UTC
(
hide
)
Description:
lddtree-sh.patch
Filename:
MIME Type:
Creator:
Natanael Copa
Created:
2014-03-18 13:04:52 UTC
Size:
5.45 KB
patch
obsolete
>--- ./lddtree.sh.orig 2014-03-18 13:38:57.284756931 +0100 >+++ ./lddtree.sh 2014-03-18 13:22:47.296407170 +0100 >@@ -1,4 +1,4 @@ >-#!/bin/bash >+#!/bin/sh > # Copyright 2007-2013 Gentoo Foundation > # Copyright 2007-2013 Mike Frysinger <vapier@gentoo.org> > # Distributed under the terms of the GNU General Public License v2 >@@ -7,8 +7,9 @@ > argv0=${0##*/} > > : ${ROOT:=/} >-[[ ${ROOT} != */ ]] && ROOT="${ROOT}/" >-[[ ${ROOT} != /* ]] && ROOT="${PWD}${ROOT}" >+ >+[ "${ROOT}" = "${ROOT%/}" ] && ROOT="${ROOT}/" >+[ "${ROOT}" = "${ROOT#/}" ] && ROOT="${PWD}/${ROOT}" > > usage() { > cat <<-EOF >@@ -54,7 +55,7 @@ > _find_elf='' > > local elf=$1 needed_by=$2 >- if [[ ${elf} == */* ]] && [[ -e ${elf} ]] ; then >+ if [ "${elf}" != "${elf##*/}" ] && [ -e "${elf}" ] ; then > _find_elf=${elf} > return 0 > else >@@ -63,8 +64,8 @@ > local path pe > for path ; do > pe="${path%/}/${elf#/}" >- if [[ -e ${pe} ]] ; then >- if [[ $(elf_specs "${pe}") == "${elf_specs}" ]] ; then >+ if [ -e "${pe}" ] ; then >+ if [ "$(elf_specs "${pe}")" = "${elf_specs}" ] ; then > _find_elf=${pe} > return 0 > fi >@@ -73,52 +74,53 @@ > return 1 > } > >- if [[ ${c_last_needed_by} != ${needed_by} ]] ; then >- c_last_needed_by=${needed_by} >+ if [ "${c_last_needed_by}" != "${needed_by}" ] ; then >+ c_last_needed_by="${needed_by}" > c_last_needed_by_rpaths=$(scanelf -qF '#F%r' "${needed_by}" | \ > sed -e 's|:| |g' -e "s:[$]ORIGIN:${needed_by%/*}:") > fi > check_paths "${elf}" ${c_last_needed_by_rpaths} && return 0 > >- if [[ -n ${LD_LIBRARY_PATH} ]] ; then >+ if [ -n "${LD_LIBRARY_PATH}" ] ; then > # Need to handle empty paths as $PWD, > # and handle spaces in between the colons > local p path=${LD_LIBRARY_PATH} > while : ; do > p=${path%%:*} > check_paths "${elf}" "${p:-${PWD}}" && return 0 >- [[ ${path} == *:* ]] || break >+ [ "${path}" = "${path#*:}" ] && break > path=${path#*:} > done > fi > > if ! ${c_ldso_paths_loaded} ; then > c_ldso_paths_loaded='true' >- c_ldso_paths=() >- if [[ -r ${ROOT}etc/ld.so.conf ]] ; then >+ c_ldso_paths= >+ if [ -r ${ROOT}etc/ld.so.conf ] ; then > read_ldso_conf() { > local line p > for p ; do > # if the glob didnt match anything #360041, > # or the files arent readable, skip it >- [[ -r ${p} ]] || continue >+ [ -r "${p}" ] || continue > while read line ; do > case ${line} in > "#"*) ;; > "include "*) read_ldso_conf ${line#* } ;; >- *) c_ldso_paths+=( "${ROOT}${line#/}" ) ;; >+ *) c_ldso_paths="$c_ldso_paths:${ROOT}${line#/}";; > esac > done <"${p}" > done > } > # the 'include' command is relative >- pushd "${ROOT}"etc >/dev/null >+ local _oldpwd="$PWD" >+ cd "$ROOT"etc >/dev/null > read_ldso_conf "${ROOT}"etc/ld.so.conf >- popd >/dev/null >+ cd "$_oldpwd" > fi > fi >- if [[ ${#c_ldso_paths[@]} -gt 0 ]] ; then >- check_paths "${elf}" "${c_ldso_paths[@]}" && return 0 >+ if [ -n "${c_ldso_paths}" ] ; then >+ check_paths "${elf}" ${c_ldso_paths//:/ } && return 0 > fi > > check_paths "${elf}" ${lib_paths_ldso:-${lib_paths_fallback}} && return 0 >@@ -135,27 +137,29 @@ > elf=${elf##*/} > > ${LIST} || printf "%${indent}s%s => " "" "${elf}" >- if [[ ,${parent_elfs}, == *,${elf},* ]] ; then >+ case ",${parent_elfs}," in >+ *,${elf},*) > ${LIST} || printf "!!! circular loop !!!\n" "" > return >- fi >+ ;; >+ esac > parent_elfs="${parent_elfs},${elf}" > if ${LIST} ; then > echo "${resolved:-$1}" > else > printf "${resolved:-not found}" > fi >- if [[ ${indent} -eq 0 ]] ; then >+ if [ ${indent} -eq 0 ] ; then > elf_specs=$(elf_specs "${resolved}") > interp=$(scanelf -qF '#F%i' "${resolved}") >- [[ -n ${interp} ]] && interp="${ROOT}${interp#/}" >+ [ -n "${interp}" ] && interp="${ROOT}${interp#/}" > > if ${LIST} ; then >- [[ -n ${interp} ]] && echo "${interp}" >+ [ -n "${interp}" ] && echo "${interp}" > else > printf " (interpreter => ${interp:-none})" > fi >- if [[ -r ${interp} ]] ; then >+ if [ -r "${interp}" ] ; then > # Extract the default lib paths out of the ldso. > lib_paths_ldso=$( > strings "${interp}" | \ >@@ -166,7 +170,7 @@ > fi > ${LIST} || printf "\n" > >- [[ -z ${resolved} ]] && return >+ [ -z "${resolved}" ] && return > > libs=$(scanelf -qF '#F%n' "${resolved}") > >@@ -178,16 +182,15 @@ > > for lib in ${libs//,/ } ; do > lib=${lib##*/} >- [[ ,${my_allhits}, == *,${lib},* ]] && continue >+ case ",${my_allhits}," in >+ *,${lib},*) continue;; >+ esac > find_elf "${lib}" "${resolved}" > rlib=${_find_elf} > show_elf "${rlib:-${lib}}" $((indent + 4)) "${parent_elfs}" > done > } > >-# XXX: internal hack >-if [[ $1 != "/../..source.lddtree" ]] ; then >- > SHOW_ALL=false > SET_X=false > LIST=false >@@ -210,8 +213,8 @@ > ?) usage 1;; > esac > done >-shift $((OPTIND - 1)) >-[[ -z $1 ]] && usage 1 >+shift $(( $OPTIND - 1)) >+[ -z "$1" ] && usage 1 > > ${SET_X} && set -x > >@@ -219,21 +222,20 @@ > for elf ; do > unset lib_paths_ldso > unset c_last_needed_by >- if ${AUTO_ROOT} && [[ ${elf} == /* ]] ; then >+ if ${AUTO_ROOT} && [ -z "${elf##/*}" ] ; then > elf="${ROOT}${elf#/}" > fi >- if [[ ! -e ${elf} ]] ; then >+ if [ ! -e "${elf}" ] ; then > error "${elf}: file does not exist" >- elif [[ ! -r ${elf} ]] ; then >+ elif [ ! -r "${elf}" ] ; then > error "${elf}: file is not readable" >- elif [[ -d ${elf} ]] ; then >+ elif [ -d "${elf}" ] ; then > error "${elf}: is a directory" > else > allhits="" >- [[ ${elf} != */* ]] && elf="./${elf}" >+ [ "${elf##*/*}" = "${elf}" ] && elf="./${elf}" > show_elf "${elf}" 0 "" > fi > done > exit ${ret} > >-fi
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 504954
: 372928