[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