X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=lib%2Ffunctions;h=012f59c1faab52b55a7034023bb555162202fce4;hb=4404a269deb7ef3202edfe76ce89af0fb81c5bf2;hp=6d68d96a22c6c6aa69cf751d28946617b73fba1e;hpb=a50fdc3af84c5a9f83fd4593dc7cdc7efa3a68ef;p=rc-scripts.git diff --git a/lib/functions b/lib/functions index 6d68d96..012f59c 100644 --- a/lib/functions +++ b/lib/functions @@ -5,11 +5,13 @@ # # Author: Miquel van Smoorenburg, # Hacked by: Greg Galloway and Marc Ewing -# Modified for TLD Linux by: +# Modified for PLD Linux by: # Marek Obuchowicz # Arkadiusz Miśkiewicz # Michał Kochanowicz # Łukasz Pawelczyk +# Modified for TLD Linux by: +# Marcin Krol # First set up a default search path. export PATH="/sbin:/usr/sbin:/bin:/usr/bin" @@ -37,7 +39,6 @@ BLUE=4 MAGENTA=5 CYAN=6 WHITE=7 -NORMAL=15 # Bold definition (second parameter to termput setaf) BOLD=1 NOBOLD=0 @@ -51,59 +52,13 @@ CTLD="$GREEN" # "TLD Linux" color CI="$RED" # Capital I color (press I to enter interactive startup) CRESMAN="$GREEN" # "Resource Manager" color CHARS="" # Characters displayed on the beginning of show line -CCHARS="$NORMAL" # Color of these characters (look at /etc/sysconfig/init-colors.gentoo example) +CCHARS="$WHITE" # Color of these characters (look at /etc/sysconfig/init-colors.gentoo example) # Source configuration if available - may override default values [ -r /etc/sysconfig/init-colors ] && . /etc/sysconfig/init-colors [ -r /etc/sysconfig/system ] && . /etc/sysconfig/system [ -r /etc/sysconfig/bootsplash ] && . /etc/sysconfig/bootsplash -if [ -z "$VSERVER" -o "$VSERVER" = "detect" ]; then - { - while read _f _ctx; do - [ "$_f" = "VxID:" -o "$_f" = "s_context:" ] && break - done /dev/null - if [ -z "$_ctx" -o "$_ctx" = "0" ]; then - VSERVER=no - else - VSERVER=yes - fi - unset _f _ctx -fi - -# VSERVER_ISOLATION_NET = isolation only inside of vserver guests -if [ -z "$VSERVER_ISOLATION_NET" -o "$VSERVER_ISOLATION_NET" = "detect" ]; then - VSERVER_ISOLATION_NET=no - if [ "$VSERVER" = "yes" ]; then - if [ -f /proc/self/nsproxy ]; then - # older kernels - { - while read _t _data; do - [ "$_t" = "net:" ] && break - done < /proc/self/nsproxy - } 2> /dev/null - if [ "${_data##*\(}" = "I)" ]; then - VSERVER_ISOLATION_NET=yes - fi - elif [ -f /proc/self/ninfo ]; then - # newer kernels - { - while read _t _data; do - [ "$_t" = "NCaps:" ] && break - done < /proc/self/ninfo - } 2> /dev/null - if [ "${_t}" = "NCaps:" ]; then - VSERVER_ISOLATION_NET=yes - fi - else - # assume (very?) old kernel mode - VSERVER_ISOLATION_NET=yes - fi - unset _f _data - fi -fi - # we need to know in functions if we were called from a terminal if [ -z "$ISATTY" ]; then [ -t ] && ISATTY=yes || ISATTY=no @@ -164,21 +119,7 @@ strstr() { # Apply sysctl settings, including files in /etc/sysctl.d apply_sysctl() { - if [ -x /lib/systemd/systemd-sysctl ]; then - /lib/systemd/systemd-sysctl - return - fi - local file - for file in /usr/lib/sysctl.d/*.conf; do - [ -f /run/sysctl.d/${file##*/} ] && continue - [ -f /etc/sysctl.d/${file##*/} ] && continue - test -f "$file" && sysctl -q -e -p "$file" - done - for file in /run/sysctl.d/*.conf; do - [ -f /etc/sysctl.d/${file##*/} ] && continue - test -f "$file" && sysctl -q -e -p "$file" - done for file in /etc/sysctl.d/*.conf; do test -f "$file" && sysctl -q -e -p "$file" done @@ -295,7 +236,7 @@ termput() { is_yes "$COLOR_INIT" && echo -ne "\033[${ISBOLD};3${2}m" ;; op) - termput setaf $NORMAL + echo -ne "\033[0m" ;; esac else @@ -308,7 +249,7 @@ termput() { is_yes "$COLOR_INIT" && tput setaf "$2" ;; op) - termput setaf $NORMAL + tput sgr0 ;; esac fi @@ -371,7 +312,7 @@ nls() { rc_splash() { local action="$1" - if ! is_no "$BOOT_SPLASH" && ! is_yes "$VSERVER"; then + if ! is_no "$BOOT_SPLASH"; then [ -x /bin/splash ] && /bin/splash "$action" fi @@ -485,7 +426,6 @@ checkpid() { # - inside chroot get only those processes, which are inside chroot. # - don't filter out pids which do not have corresponding running processes (process died etc) # (note: some processes like named are chrooted but run outside chroot) -# - do nothing inside vserver filter_chroot() { # no pids, exit early [ $# -eq 0 ] && return @@ -497,11 +437,6 @@ filter_chroot() { pids=$(filter_ns "$@") && set -- "$pids" fi - if is_yes "$VSERVER"; then - echo $@ - return - fi - if [ $# -lt 1 -o ! -d /proc/1 ]; then echo $@ return @@ -617,16 +552,90 @@ _daemon_set_ulimits() { done } +# inner function used by daemon(). +# do not call this directly, as it expects variables being inherited. +# also it expects to be called from subshell as it exports env. +# it expects options parsed by daemon() and command to be executed in "$@". +_daemon_exec() { + local prog="" + umask ${SERVICE_UMASK:-$DEFAULT_SERVICE_UMASK}; + export USER=root HOME=/tmp TMPDIR=/tmp + + nice=${nice:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} + nice=${nice:-0} + + # make nice level absolute, not to be dependant of nice level of shell where service started + nice=$(($nice - $(nice))) + + if [ "$closefds" = 1 ]; then + exec 1>&- + exec 2>&- + exec 0<&- + elif [ "$redirfds" = 1 ]; then + exec 1>/dev/null + exec 2>/dev/null + exec 0&1 + exec 0&1 "/dev/cpuset/${SERVICE_CPUSET}/tasks" - if errors=$( - umask ${SERVICE_UMASK:-$DEFAULT_SERVICE_UMASK}; - export USER=root HOME=/tmp TMPDIR=/tmp - - nice=${nice:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} - nice=${nice:-0} - - # make nice level absolute, not to be dependant of nice level of shell where service started - nice=$(($nice - $(nice))) - - if [ "$closefds" = 1 ]; then - exec 1>&- - exec 2>&- - exec 0<&- - elif [ "$redirfds" = 1 ]; then - exec 1>/dev/null - exec 2>/dev/null - exec 0&1 - exec 0&1