summaryrefslogblamecommitdiff
path: root/legacy/paxmark/paxmark
blob: 87a84f4f7ecc18c4b2f7907456d9aba6b8ca2fef (plain) (tree)
1
           































                                                                                                         
#!/bin/bash

ret=0
flags="${1//[!zPpEeMmRrSs]}"
[ -n "${flags}" ] || exit 0
shift

# Create XATTR_PAX marking using attr
xval=""
[ "${flags//[!P]}" ] && xval="${xval}P"
[ "${flags//[!p]}" -a -z "${flags//[!P]}" ] && xval="${xval}p"
[ "${flags//[!E]}" ] && xval="${xval}E"
[ "${flags//[!e]}" -a -z "${flags//[!E]}" ] && xval="${xval}e"
[ -z "${flags//[!zEe]}" ] && xval="${xval}e"
[ "${flags//[!M]}" ] && xval="${xval}M"
[ "${flags//[!m]}" -a -z "${flags//[!M]}" ] && xval="${xval}m"
[ "${flags//[!R]}" ] && xval="${xval}R"
[ "${flags//[!r]}" -a -z "${flags//[!R]}" ] && xval="${xval}r"
[ "${flags//[!S]}" ] && xval="${xval}S"
[ "${flags//[!s]}" -a -z "${flags//[!S]}" ] && xval="${xval}s"

for f in "$@"; do
	if [ -n "FAKEROOTKEY" ]; then
		# fakeroot does not set xattr's on disk.
		# explicitly do that, because the marked binary might
		# be executed next during install.
		LD_PRELOAD="" FAKEROOTKEY="" attr -q -s pax.flags -V "${xval}" "${f}" >/dev/null || ret=1
	fi
	attr -q -s pax.flags -V "${xval}" "${f}" >/dev/null || ret=1
done

exit $ret