[devel] A: trap shell builtin (was: [SCM] packages/make-initrd: heads/master)

Dmitry V. Levin ldv на altlinux.org
Чт Фев 18 13:42:54 UTC 2010


On Thu, Feb 18, 2010 at 04:05:28PM +0300, Alexey Gladkov wrote:
> Update of /people/legion/packages/make-initrd.git
[...]
> --- a/make-initrd.in
> +++ b/make-initrd.in
> @@ -1,4 +1,25 @@
>  #!/bin/sh -efu
>  
> +PROG="${0##*/}"
> +TEMPDIR=
> +term_handler() {
> +	local rc=$?
> +	[ -z "$TEMPDIR" ] || rm -rf -- "$TEMPDIR"
> +	exit $rc
> +}
> +
> +exit_handler() {
> +	local rc=$?
> +	trap - EXIT
> +	[ -z "$TEMPDIR" ] || rmdir -- "$TEMPDIR" 2>/dev/null ||:
> +	exit $rc
> +}
> +
> +
> +TEMPDIR="$(mktemp -d "@TMPDIR@/$PROG.XXXXXXXXX")"
> +trap term_handler HUP INT QUIT TERM
> +trap exit_handler EXIT

Это уже совсем старые грабли: term_handler устанавливает случайный код
возврата и удаляет $TEMPDIR дважды.

Подробнее на эту тему см.
http://lists.gnu.org/archive/html/bug-gnulib/2010-01/msg00361.html
http://lists.gnu.org/archive/html/bug-gnulib/2010-01/msg00377.html

There is an interesting reading about portability issues related to
shell "trap" builtin:
http://www.gnu.org/software/hello/manual/autoconf/Limitations-of-Builtins.html#trap


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20100218/8c614290/attachment.bin>


Подробная информация о списке рассылки Devel