diff options
author | Carlo Bersani <carlocci@gmail.com> | 2008-06-22 21:21:05 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2008-06-22 21:21:05 -0500 |
commit | b15fb504a19831200b86a43646d8def89560b61c (patch) | |
tree | 8ed3e0e77307e6921b97e7b02e566c23d34aa875 | |
parent | 74eb2f5c6132b0529dd22b33a14232e7059551c1 (diff) | |
download | pacman-b15fb504a19831200b86a43646d8def89560b61c.tar.xz |
bacman: fix issue with symlink early copy
test -e tries to resolve the link before testing, so if the link is copied
before the actual file, the script exited. This fixes the issue.
[Dan: also add some improved quoting in the script]
Signed-off-by: Carlo Bersani <carlocci@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
-rwxr-xr-x | contrib/bacman | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/contrib/bacman b/contrib/bacman index 410482f4..95b362ed 100755 --- a/contrib/bacman +++ b/contrib/bacman @@ -111,7 +111,7 @@ fi # echo Package: ${pkg_namver} work_dir=$(mktemp -d -p /tmp) -cd $work_dir || exit 1 +cd "$work_dir" || exit 1 # # File copying @@ -136,12 +136,12 @@ while read i; do bsdtar -cnf - "/$i" 2> /dev/null | bsdtar -xpf - # Workaround to bsdtar not reporting a missing file as an error - if [ ! -e "$work_dir"/"$i" ]; then + if [ ! -e "$work_dir/$i" ] && [ -L "$work_dir/$i"]; then echo "" echo "ERROR: unable to add /$i to the package" echo " If your user does not have permssion to read this file then" echo " you will need to run $progname as root" - rm -rf $work_dir + rm -rf "$work_dir" exit 1 fi else @@ -157,7 +157,7 @@ done ret=$? if [ $ret -ne 0 ]; then - rm -rf $work_dir + rm -rf "$work_dir" exit 1 fi @@ -256,8 +256,8 @@ done # # Fixes owner:group and permissions for .PKGINFO, .CHANGELOG, .INSTALL # -chown root:root $work_dir/{.PKGINFO,.CHANGELOG,.INSTALL} 2> /dev/null -chmod 644 $work_dir/{.PKGINFO,.CHANGELOG,.INSTALL} 2> /dev/null +chown root:root "$work_dir"/{.PKGINFO,.CHANGELOG,.INSTALL} 2> /dev/null +chmod 644 "$work_dir"/{.PKGINFO,.CHANGELOG,.INSTALL} 2> /dev/null # # Generate the package @@ -269,14 +269,15 @@ bsdtar -czf "$pkg_dest/$pkg_namver-$pkg_arch.tar.gz" $(ls -A) || ret=$? if [ $ret -ne 0 ]; then echo "ERROR: unable to write package to $pkg_dest" echo " Maybe the disk is full or you do not have write access" - rm -rf $work_dir + rm -rf "$work_dir" exit 1 fi -rm -rf $work_dir +rm -rf "$work_dir" echo Done exit 0 -# vim: set ts=2 sw=2 noet:
\ No newline at end of file +# vim: set ts=2 sw=2 noet: + |