This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v2][BZ #832][BZ #3266] Make ldd try_trace more robust and portable


On Saturday 07 September 2013 11:45:45 Patrick "P. J." McDermott wrote:
> +# The following command substitution is needed to make ldd work in
> +# SELinux environments where the executed program might not have
> +# permissions to write to the console/tty.  The extra "x" character
> +# prevents the shell from trimming trailing newlines from command
> +# substitution results.
> +try_trace() {
> +  output=$(eval $add_env '"$@"'; rc=$?; printf 'x'; exit $rc)
> +  rc=$?
> +  printf '%s' "${output%x}"
> +  return $rc
> +}

not really a new issue, but doesn't this also need to handle stderr ?

simply adding 2>&1 for the eval statement seems sufficient

i dislike the missing `local` decls for output and rc.  but those aren't 
exactly specified in POSIX (even if every reasonable shell supports it).  maybe 
do a double sub-shell instead ?

try_trace() {
	(
	output=$(.....)
	rc=$?
	printf ....
	exit $rc
	)
}
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]