On 10/03/12 00:01, Dave Reisner wrote: > On Fri, Mar 09, 2012 at 05:59:06PM +1000, Allan McRae wrote: >> Most places in makepkg deal with full file paths, but a few use the >> file name only. Protect from potential issues when a file name >> starts with a hyphen. > > How sure are we that these will always be relative paths and never ever > absolute?
I'm not sure what you are meaning there? Are you asking why I did not fix the ones I determined to use the absolute path? In all other cases the files are either prefixed $srcdir, $pkgdir, $startdir or are from get_filepath which returns a full path. >> Signed-off-by: Allan McRae <al...@archlinux.org> >> --- >> scripts/makepkg.sh.in | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in >> index 384e142..8dd2d39 100644 >> --- a/scripts/makepkg.sh.in >> +++ b/scripts/makepkg.sh.in >> @@ -833,7 +833,7 @@ extract_sources() { >> esac ;; >> *) >> # See if bsdtar can recognize the file >> - if bsdtar -tf "$file" -q '*' &>/dev/null; then >> + if bsdtar -tf "./$file" -q '*' &>/dev/null; then > > not necessary. "$file" is an argument to the -f flag, so we don't need > to work around this: > > $ bsdtar -czf --foo.tar.gz ~/.bash* > $ ls -l -- --foo.tar.gz > -rw-r--r-- 1 noclaf users 57856 Mar 9 08:52 --foo.tar.gz Ah... good point... >> cmd="bsdtar" >> else >> continue >> @@ -843,10 +843,10 @@ extract_sources() { >> local ret=0 >> msg2 "$(gettext "Extracting %s with %s")" "$file" "$cmd" >> if [[ $cmd = "bsdtar" ]]; then >> - $cmd -xf "$file" || ret=$? >> + $cmd -xf "./$file" || ret=$? > > same here. > >> else >> - rm -f "${file%.*}" >> - $cmd -dcf "$file" > "${file%.*}" || ret=$? >> + rm -f -- "${file%.*}" >> + $cmd -dcf "./$file" > "${file%.*}" || ret=$? > > same here (the rm wants it, though) > >> fi >> if (( ret )); then >> error "$(gettext "Failed to extract %s")" "$file" >> @@ -974,7 +974,7 @@ tidy_install() { >> >> if [[ $(check_option docs) = "n" && -n ${DOC_DIRS[*]} ]]; then >> msg2 "$(gettext "Removing doc files...")" >> - rm -rf ${DOC_DIRS[@]} >> + rm -rf -- ${DOC_DIRS[@]} > > i hate that we can't quote this. > >> fi >> >> if [[ $(check_option purge) = "y" && -n ${PURGE_TARGETS[*]} ]]; then >> @@ -1001,7 +1001,7 @@ tidy_install() { >> find ${MAN_DIRS[@]} -lname "$file" 2>/dev/null | >> while read link ; do >> rm -f "$link" "${link}.gz" >> - ln -s "${file}.gz" "${link}.gz" >> + ln -s -- "${file}.gz" "${link}.gz" > > No love for the rm? I admit it would be an extremely nonstandard case, > but the same applies for the ln call. Look at what is being rm'ed and what is being ln'ed. One is a full path. >> done >> >> # check file still exists (potentially already >> compressed due to hardlink) >> -- >> 1.7.9.3 >> >> > > >