Сравнение постов

Различия между постами #261768 (13.04.2022 10:53) и #274660 (23.05.2024 09:08).
1
#!/bin/sh
2
3
s_term() {
4
    #EC_OK
5
    exit 0
6
}
7
8
trap s_term 15
9
10
die() {
1
ПОЛУЧИТЬ ИНФОРМАЦИЮ НА WHATSAPP https://ellman.ru/basic
2
 
3
Разрез и коагуляция позволяет одновременно проводить две эти процедуры https://ellman.ru/diamond
4
 
5
Генератор радиоволновой 4,0 МГц 
6
Страна США Бренд ELLMAN Гарантия 1 год Рабочая частота 4,0 МГц Напряжение в сети 220В Максимальная выходная мощность, Вт 90 Габаритные размеры 230 х 130 х 340 мм Масса 9 кг https://ellman.ru/tips
7
 
8
9
* Комплект поставки и каталожные номера могут быть изменены производителем https://ellman.ru/basic
10
 
11
    retval=$1
12
    shift
13
    echo "Fatal error: $*" >&2
14
    exit $retval
15
}
16
17
warning() {
18
    echo "Warning: $*" >&2
19
}
20
21
debug() {
22
    if [ -n "$DEBUG" ] ; then
23
        echo "Debug: $*" >&2
24
    fi
25
}
26
27
get_platform() {
28
    uname -s | LC_ALL=C tr '[A-Z]' '[a-z]'
29
}
30
31
get_lib_path() {
32
    binary="$1"
33
    lib="$2"
34
    $LDD $LDD_RECURSIVE "$binary" 2>&1 | grep "$lib" | head -n1 | while read lib dummy path ; do echo $path ; done | cut -d' ' -f1
35
}
36
37
binary_grep() {
38
    pattern="$1"
39
    binary="$2"
40
    [ -r "$binary" ] || return 1
41
    env LC_ALL=C tr -dc '[:print:]' < "$binary" | grep -F "$pattern" >/dev/null 2>&1
42
}
43
44
append_to_library_path() {
45
    debug "Append \"$1\" to LD_LIBRARY_PATH"
46
    if [ -d "$LIBDIR/$1" ] ; then
47
        true
48
    else
49
        debug "\"$1\" is not a directory"
50
        return
51
    fi
52
    LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${LIBDIR}/$1"
53
    export LD_LIBRARY_PATH
54
}
55
56
run() {
57
    libs=""
58
    loader=""
59
    if [ "$PLATFORM" = "linux" ] ; then
60
        lddOutput="`LANGUAGE=C LANG=C $LDD $LDD_RECURSIVE "$BINARY" 2>&1`"
61
        if echo "$lddOutput" | grep gzopen64 >/dev/null 2>&1 ; then
62
            append_to_library_path "ldwrap/libz.so.1"
63
        fi
64
    elif [ "$PLATFORM" = "freebsd" ] ; then
65
        #rpath doesn't work here
66
        append_to_library_path ""
67
        #own gcc prefer for BSD
68
        append_to_library_path "ldwrap/gcc"
69
    fi
70
    if binary_grep "libstdc++.so.6" "$BINARY" ; then
71
        libpath="`get_lib_path "$BINARY" "libstdc++.so.6" 2>/dev/null`"
72
        if binary_grep "CXXABI_$MIN_CXXABI" "$libpath" ; then
73
            true
74
        else
75
            append_to_library_path "ldwrap/gcc"
76
        fi
77
    fi
78
    for i in 1 2; do
79
        libs="`LANGUAGE=C LANG=C $LDD $LDD_RECURSIVE "$BINARY" 2>&1 | \
80
            grep 'not found' | awk '{print $1}'| sort | uniq`"
81
	if [ -z "$libs" ]; then break; fi
82
        for lib in $libs ; do
83
            append_to_library_path "ldwrap/$lib"
84
        done
85
    done
86
87
    debug "Finally LD_LIBRARY_PATH is \"$LD_LIBRARY_PATH\""
88
    if [ -n "$loader" ] ; then
89
        exec $LOADER "$BINARY" "$@"
90
        retval=$?
91
    else
92
        exec "$BINARY" "$@"
93
        retval=$?
94
    fi
95
    return $retval
96
}
97
98
LDD="/usr/bin/ldd"
99
[ -x "$LDD" ] || die 125 "ldd not found. Fix PATH and try again."
100
101
PLATFORM=linux
102
PREFIX=/opt/drweb.com
103
LIBDIR=/opt/drweb.com/lib/x86_64-linux-gnu
104
CONFDIR=/etc/opt/drweb.com
105
106
BINARY="$PREFIX/bin/`basename "$0.real"`"
107
LINKNAME="`basename "$0"`"
108
109
[ -x "$BINARY" ] || die 104 "$BINARY not found or not executable"
110
111
if [ -d "$CONFDIR/ldwrap.conf.d" ] ; then
112
    for f in $CONFDIR/ldwrap.conf.d/*.conf ; do
113
        [ -r "$f" ] && . "$f"
114
    done
115
fi
116
117
MIN_CXXABI=1.3.12
118
if [ -n "$ARGS" ] ; then
119
    run "$@" "$ARGS"
120
else
121
    run "$@"
122
fi
123
exit $?