ajout de stdredir pour pallier l'absence éventuelle de /dev/std*
This commit is contained in:
parent
472f2c7786
commit
ba969e3788
|
@ -1731,7 +1731,7 @@ parse_headers && do_once("parse-headers") {
|
||||||
|
|
||||||
# résultat
|
# résultat
|
||||||
[ -n "$output" ] || output=/dev/stdout
|
[ -n "$output" ] || output=/dev/stdout
|
||||||
<"$tmpsorted" >"$output" awkrun -f \
|
stdredir "$tmpsorted" "$output" "" awkrun -f \
|
||||||
padlen:int="$padlen" \
|
padlen:int="$padlen" \
|
||||||
headerscsv="$headers" show_headers:int="$show_headers" \
|
headerscsv="$headers" show_headers:int="$show_headers" \
|
||||||
'
|
'
|
||||||
|
@ -1916,7 +1916,7 @@ function lprintcsv() {
|
||||||
[ -n "$output" ] || output=/dev/stdout
|
[ -n "$output" ] || output=/dev/stdout
|
||||||
values=("$@")
|
values=("$@")
|
||||||
|
|
||||||
awkrun -f >>"$output" fields[@] show_headers:int="$show_headers" values[@] '
|
stdredir "" ">>$output" "" awkrun -f fields[@] show_headers:int="$show_headers" values[@] '
|
||||||
BEGIN {
|
BEGIN {
|
||||||
if (show_headers) array_printcsv(fields)
|
if (show_headers) array_printcsv(fields)
|
||||||
if (fields_count > 0) count = fields_count
|
if (fields_count > 0) count = fields_count
|
||||||
|
|
|
@ -2742,6 +2742,53 @@ function utools_local() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function stdredir() {
|
||||||
|
# Lancer la commande $4..@ en redirigeant stdin depuis $1, stdout vers $2,
|
||||||
|
# stderr vers $3. Si $1 est vide ou vaut /dev/stdin, la redirection n'est
|
||||||
|
# pas faite. Si $2 est vide ou vaut /dev/stdout, la redirection n'est pas
|
||||||
|
# faite. Si $3 est vide ou vaut /dev/stderr, la redirection n'est pas faite.
|
||||||
|
# Cette fonction existe parce que sur certaines versions de bash, il semble
|
||||||
|
# que les redirections /dev/std* ne sont pas traitées de façon particulière.
|
||||||
|
# De plus, sur des technologies telles que OpenVZ, les chemins /dev/std* ne
|
||||||
|
# sont pas créés (parce que /proc/self/fd/* n'est pas accessible). Donc,
|
||||||
|
# dans de rares cas où le script tourne sur OpenVZ avec une version de bash
|
||||||
|
# qui est buggée, la redirection n'est pas faite correctement.
|
||||||
|
local __redirs __in __out __err
|
||||||
|
if [ -n "$1" -o "$1" == /dev/stdin ]; then
|
||||||
|
if [ "${1#<}" != "$1" ]; then
|
||||||
|
__in="${1#<}"
|
||||||
|
else
|
||||||
|
__in="$1"
|
||||||
|
fi
|
||||||
|
__redirs="$__redirs"' <"$__in"'
|
||||||
|
fi; shift
|
||||||
|
if [ -n "$1" -o "$1" == /dev/stdout ]; then
|
||||||
|
if [ "${1#>>}" != "$1" ]; then
|
||||||
|
__out="${1#>>}"
|
||||||
|
__redirs="$__redirs"' >>"$__out"'
|
||||||
|
elif [ "${1#>}" != "$1" ]; then
|
||||||
|
__out="${1#>}"
|
||||||
|
__redirs="$__redirs"' >"$__out"'
|
||||||
|
else
|
||||||
|
__out="$1"
|
||||||
|
__redirs="$__redirs"' >"$__out"'
|
||||||
|
fi
|
||||||
|
fi; shift
|
||||||
|
if [ -n "$1" -o "$1" == /dev/stderr ]; then
|
||||||
|
if [ "${1#>>}" != "$1" ]; then
|
||||||
|
__err="${1#>>}"
|
||||||
|
__redirs="$__redirs"' 2>>"$__err"'
|
||||||
|
elif [ "${1#>}" != "$1" ]; then
|
||||||
|
__err="${1#>}"
|
||||||
|
__redirs="$__redirs"' 2>"$__err"'
|
||||||
|
else
|
||||||
|
__err="$1"
|
||||||
|
__redirs="$__redirs"' 2>"$__err"'
|
||||||
|
fi
|
||||||
|
fi; shift
|
||||||
|
eval '"$@"'"$__redirs"
|
||||||
|
}
|
||||||
|
|
||||||
function isatty() {
|
function isatty() {
|
||||||
# tester si STDOUT n'est pas une redirection
|
# tester si STDOUT n'est pas une redirection
|
||||||
tty -s <&1
|
tty -s <&1
|
||||||
|
|
8
utrigger
8
utrigger
|
@ -147,12 +147,8 @@ uspid="$base.uspid"
|
||||||
function __update_pending() {
|
function __update_pending() {
|
||||||
touch "$podata"
|
touch "$podata"
|
||||||
[ "$datafile" == "-" ] && datafile=/dev/stdin
|
[ "$datafile" == "-" ] && datafile=/dev/stdin
|
||||||
if [ -n "$datafile" ]; then
|
[ -n "$datafile" ] && stdredir "$datafile" ">>$podata" "" cat
|
||||||
cat "$datafile" >>"$podata"
|
[ -n "$data" ] && echo "$data" >>"$podata"
|
||||||
fi
|
|
||||||
if [ -n "$data" ]; then
|
|
||||||
echo "$data" >>"$podata"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function __run_command() { (
|
function __run_command() { (
|
||||||
|
|
Loading…
Reference in New Issue