Bug 19063

Summary: Add shell-tmpdir or something
Product: Sisyphus Reporter: Sir Raorn <raorn>
Component: libshellAssignee: Alexey Gladkov <legion>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2 CC: legion, mike, vvk
Version: unstable   
Hardware: all   
OS: Linux   

Description Sir Raorn 2009-03-04 17:51:13 MSK
В пакете qa-robot есть замечательный файл /usr/bin/tmpdir.sh:

$ perldoc /usr/bin/tmpdir.sh
NAME
       tmpdir.sh - manage $TMPDIR

SYNOPSIS
         #!/bin/sh
         . tmpdir.sh

DESCRIPTION
       When sourced, this script provides private $TMPDIR, which will be purged upon exit.

Хотелось бы видеть в libshell нечто подобное.
Comment 1 Alexey Gladkov 2009-03-04 18:09:29 MSK
Можно поподробнее про желаемый функционал ?

Потому что то ты хочешь можно реализовать так:

. shell-signal

workdir="$(mktemp -dt "$PROG.XXXXXXXXXX")"
exit_function() {
   rm -rf -- "$workdir";
   exit "$1";
} 
set_cleanup_handler exit_function
Comment 2 Sir Raorn 2009-03-05 17:40:57 MSK
Да, действительно.

P.S. А мне обязательно использовать exit в своей exit_function?  В gear, на мой взгляд, это приятнее сделано.
Comment 3 Alexey Gladkov 2009-03-05 18:05:00 MSK
(В ответ на комментарий №2)
> P.S. А мне обязательно использовать exit в своей exit_function?

Разумеется имя функции может быть произвольным.

> В gear, на мой взгляд, это приятнее сделано.

Единственное различие в названии:

install_cleanup_handler -> set_cleanup_handler

Что именно тебе кажется более удобным в gear?
Comment 4 Sir Raorn 2009-03-05 18:57:34 MSK
Всё, вижу по коду.  То же самое, просто меня немного смутил exit "$1" в "моей" exit_function().
Comment 5 Michael Shigorin 2009-03-07 00:00:35 MSK
(In reply to comment #1)
> Потому что то ты хочешь можно реализовать так:
Вот это мож и в библиотеку?
Comment 6 Alexey Gladkov 2009-03-07 01:12:38 MSK
(В ответ на комментарий №5)
> Вот это мож и в библиотеку?

Ты знаешь сколько ещё можно таких примитивов написать ?

Эта функция учитывает большинство проблем при создании обработчиков сигналов. Хотя мне больше нравится signal_handler(). Она позволяет создание множественных обработчиков.