nutools/lib/ulib/webobjects

702 lines
24 KiB
Bash

##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Gestion des services de webobjects (démarrage/arrêt), et de leur configuration
##@cooked nocomments
##@require base
##@require sysinfos
##@require javaproperties
uprovide webobjects
urequire base sysinfos javaproperties
################################################################################
# Préfixes
__webobjects_prefixes=
function __compute_webobjects_prefixes() {
[ -n "$__webobjects_prefixes" ] && return
if check_sysinfos -s darwin; then
# valeurs par défaut de NEXT_ROOT, WOROOT et LOCALROOT sur MacOS X
DEFAULT_NEXT_ROOT=
function get_default_woroot_prefix() { echo "$NEXT_ROOT/System"; }
function get_default_localroot_prefix() { echo "$NEXT_ROOT"; }
else
# valeurs par défaut de NEXT_ROOT, WOROOT et LOCALROOT sur les autres Unix
DEFAULT_NEXT_ROOT=/opt/Apple
function get_default_woroot_prefix() { echo "$NEXT_ROOT"; }
function get_default_localroot_prefix() { echo "$NEXT_ROOT/Local"; }
fi
NEXT_ROOT="${NEXT_ROOT:-$DEFAULT_NEXT_ROOT}"
WOROOT="${WOROOT:-$(get_default_woroot_prefix)}"
LOCALROOT="${LOCALROOT:-$(get_default_localroot_prefix)}"
SYSTEMFRAMEWORKS="$WOROOT/Library/Frameworks"
WOEXTENSIONS="$LOCALROOT/Library/WebObjects/Extensions"
WOFRAMEWORKS="$LOCALROOT/Library/WebObjects/Applications/Frameworks"
WOAPPLICATIONS="$LOCALROOT/Library/WebObjects/Applications"
WOCONFIGURATION="$LOCALROOT/Library/WebObjects/Configuration"
WOAUTOSTART="$WOCONFIGURATION/AutoStart.txt"
WOLOGS="/var/log/WebObjects"
local versionfile="$SYSTEMFRAMEWORKS/JavaWebObjects.framework/Resources/version.plist"
[ -f "$versionfile" ] && WOVERSION="$(grep -A 1 CFBundleShortVersionString "$versionfile" | tail -1 | sed 's/^.*<string>\(.*\)<\/string>.*$/\1/')" || WOVERSION=
__webobjects_prefixes=1
}
WEBOBJECTS_PREFIXES=(NEXT_ROOT WOROOT LOCALROOT SYSTEMFRAMEWORKS WOEXTENSIONS WOFRAMEWORKS WOAPPLICATIONS WOCONFIGURATION WOAUTOSTART WOLOGS WOVERSION)
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" "${WEBOBJECTS_PREFIXES[@]}")
function compute_webobjects_prefixes() {
__compute_webobjects_prefixes
}
function recompute_webobjects_prefixes() {
local v
for v in "${WEBOBJECTS_PREFIXES[@]}"; do
eval "$v="
done
__webobjects_prefixes=
__compute_webobjects_prefixes
}
function get_NEXT_ROOT_prefix() {
__compute_webobjects_prefixes
echo "$NEXT_ROOT"
}
function get_WOROOT_prefix() {
__compute_webobjects_prefixes
echo "$WOROOT"
}
function get_LOCALROOT_prefix() {
__compute_webobjects_prefixes
echo "$LOCALROOT"
}
function get_SYSTEMFRAMEWORKS_prefix() {
__compute_webobjects_prefixes
echo "$SYSTEMFRAMEWORKS"
}
function get_WOEXTENSIONS_prefix() {
__compute_webobjects_prefixes
echo "$WOEXTENSIONS"
}
function get_WOFRAMEWORKS_prefix() {
__compute_webobjects_prefixes
echo "$WOFRAMEWORKS"
}
function get_WOAPPLICATIONS_prefix() {
__compute_webobjects_prefixes
echo "$WOAPPLICATIONS"
}
function get_WOCONFIGURATION_prefix() {
__compute_webobjects_prefixes
echo "$WOCONFIGURATION"
}
function get_WOAUTOSTART_prefix() {
__compute_webobjects_prefixes
echo "$WOAUTOSTART"
}
function get_WOLOGS_prefix() {
__compute_webobjects_prefixes
echo "$WOLOGS"
}
function get_WOVERSION_prefix() {
__compute_webobjects_prefixes
echo "$WOVERSION"
}
################################################################################
# Bundles
function is_wobundle() {
# Tester si $1 a un nom de bundle valide, c'est à dire avec l'extension .woa
# ou .framework
local bundle="$(basename "$(abspath "$1")")"
[ "${bundle%.woa}" != "$bundle" -o "${bundle%.framework}" != "$bundle" ]
}
function is_woappdir() {
# Tester si $1 est un répertoire d'application webobjects. Le test est
# effectué sur le contenu du bundle, pas sur le nom (utiliser is_wobundle()
# pour cela)
# existence du répertoire
[ -d "$1" ] || return 1
# répertoires de resources
[ -d "$1/Contents/Resources" ] || return 1
# répertoires de classpath
[ -d "$1/Contents/UNIX" ] || return 1
[ -d "$1/Contents/MacOS" ] || return 1
[ -d "$1/Contents/Windows" ] || return 1
# fin des tests
return 0
}
function is_wofwkdir() {
# Tester si $1 est un répertoire de framework webobjects. Le test est
# effectué sur le contenu du bundle, pas sur le nom (utiliser is_wobundle()
# pour cela)
# existence du répertoire
[ -d "$1" ] || return 1
# répertoires de resource
[ -d "$1/Resources" -o -d "$1/WebServerResources" ] || return 1
# fin des tests
return 0
}
function get_app_winclspth() {
# calculer la valeur de Contents/Windows/CLSSPATH.txt pour l'application $1
local found
if [ ! -f "$1/Contents/Windows/CLSSPATH.txt" ]; then
local clspth
array_from_lines clspth "$(list_files "$1/Contents/Windows" | grep -i clsspath.txt)"
if [ ${#clspth[*]} -eq 1 ]; then
echo "Contents/Windows/$clspth"
found=1
fi
fi
# pas trouvé, prendre la valeur par défaut
[ -n "$found" ] || echo Contents/Windows/CLSSPATH.txt
}
function get_infofile() {
# Obtenir le chemin vers le fichier Info.plist dans le répertoire de
# resource du bundle $1
local bundle="$(abspath "$1")" resdir
if endswith "$bundle" .woa; then
resdir="$bundle/Contents"
elif endswith "$bundle" .framework; then
resdir="$bundle/Resources"
else
# on a donné directement resdir
resdir="$bundle"
fi
echo "$resdir/Info.plist"
}
function read_infofile() {
# Lire la version et le numéro de release dans le fichier $1 (chemin vers
# Info.plist) et les placer dans les variables $2(=version) et $3(=release)
# Retourner 1 si un erreur s'est produite, par exemple si le fichier $1
# n'existe pas ou n'est pas accessible en lecture
[ -f "$1" -a -r "$1" ] || return 1
_setv "${2:-version}" "$(grep -A 1 CFBundleShortVersionString "$1" | tail -1 | sed 's/^.*<string>\(.*\)<\/string>.*$/\1/')"
_setv "${3:-release}" "$(grep -A 1 CFBundleVersion "$1" | tail -1 | sed 's/^.*<string>\(.*\)<\/string>.*$/\1/')"
}
function write_infofile() {
# Ecrire $2 (la version) et $3 (le numéro de release) dans le fichier $1
# (chemin vers Info.plist)
# Retourner 1 si un erreur s'est produite, par exemple si le fichier $1
# n'existe pas
local status tmpfile
ac_set_tmpfile tmpfile
<"$1" >"$tmpfile" cawkrun version="$2" release="$3" '
/<key>CFBundleShortVersionString<\/key>/ {
print; getline
sub(/<string>.*<\/string>/, "<string>" version "</string>")
print; next
}
/<key>CFBundleVersion<\/key>/ {
print; getline
sub(/<string>.*<\/string>/, "<string>" release "</string>")
print; next
}
{ print }
' && cat "$tmpfile" >"$1"
status=$?
ac_clean "$tmpfile"
return $status
}
function get_jawotoolsfile() {
# Obtenir le chemin vers le fichier jawotools.properties dans le bundle $1
local default="$1/jawotools.properties" file
for file in "$default" "$1/build_infos.txt"; do
if [ -f "$file" ]; then
echo "$file"
return
fi
done
echo "$default"
}
function read_jawotoolsfile() {
# lire le fichier de propriété $1 et placer les valeurs dans les variables
# $2(=version), $3(=releaseDate), $4(=description)
local filename="$(basename "$1")"
if [ "$filename" == "build_infos.txt" ]; then
# legacy
read_property "$1" version "${2:-version}"
read_property "$1" date "${3:-releaseDate}"
read_property "$1" desc "${4:-description}"
else
read_property "$1" version "${2:-version}"
read_property "$1" releaseDate "${3:-releaseDate}"
read_property "$1" description "${4:-description}"
fi
}
function save_jawotoolsfile() {
# écrire le fichier de propriété $1 avec les valeurs version ($2),
# releaseDate ($3) et description ($4)
[ -e "$1" ] || touch "$1"
write_property "$1" version "$2"
write_property "$1" releaseDate "$3"
write_property "$1" description "$4"
}
function get_versionfile() {
# Obtenir le chemin vers le fichier VERSION.txt dans le répertoire de
# resource du bundle $1
local bundle="$(abspath "$1")" resdir
if endswith "$bundle" .woa; then
resdir="$bundle/Contents/Resources"
elif endswith "$bundle" .framework; then
resdir="$bundle/Resources"
else
# on a donné directement resdir
resdir="$bundle"
fi
local default="$resdir/VERSION.txt" file
for file in "$default" "$1/version.txt"; do
if [ -f "$file" ]; then
echo "$file"
return
fi
done
echo "$default"
}
function get_configfile() {
# obtenir le chemin vers le fichier de configuration du répertoire de
# resource du bundle
# $1=bundle ou resdir (appdir/Contents/Resources ou fwkdir/Resources)
local bundle="$(abspath "$1")" resdir
if endswith "$bundle" .woa; then
resdir="$bundle/Contents/Resources"
elif endswith "$bundle" .framework; then
resdir="$bundle/Resources"
else
# on a donné directement resdir
resdir="$bundle"
fi
local configs
array_lsfiles configs "$resdir" "*.config"
if [ ${#configs[*]} -eq 0 ]; then
array_lsfiles configs "$resdir" "config.xml"
fi
echo "${configs:-$resdir/Properties}"
}
function searchreplace_classpath() {
# Dans les fichiers classpath de l'application $1, remplacer $2 par $3. Si
# $3 est vide, la ligne est supprimée
local bundle="$1" search="$2" replace="$3" scriptunx scriptwin clspth
[ -n "$search" ] || return 1
search="${search//\//\\/}"; replace="${replace//\//\\/}"
if [ -n "$replace" ]; then
scriptunx="s/${search}/${replace}/g"
else
scriptunx="/${search}/d"
fi
search="${search//\\\//\\\\}"; replace="${replace//\\\//\\\\}"
if [ -n "$replace" ]; then
scriptwin="s/${search}/${replace}/g"
else
scriptwin="/${search}/d"
fi
clspth="$bundle/Contents/UNIX/UNIXClassPath.txt"
nl2lf "$clspth"; sedi "$scriptunx" "$clspth"
clspth="$bundle/Contents/MacOS/MacOSClassPath.txt"
nl2lf "$clspth"; sedi "$scriptunx" "$clspth"
clspth="$bundle/$(get_app_winclspth "$bundle")"
nl2lf "$clspth"; sedi "$scriptwin" "$clspth"; nl2crlf "$clspth"
}
function dump_jars() {
# Afficher les jars des frameworks utilisés par l'application $1
local clspth
if [ "$UNAME_SYSTEM" == "Darwin" ]; then
clspth="Contents/MacOS/MacOSClassPath.txt"
else
clspth="Contents/UNIX/UNIXClassPath.txt"
fi
cat "$1/$clspth" | _nl2lf | grep '\.framework' | grep -v "^#" | grep -v "APPROOT/" | grep -v "WOROOT/" | awk '{
if (match($0, /[^\/]*\.framework/) != 0) {
print
}
}' | sort -u
}
function dump_frameworks() {
# Afficher les frameworks utilisés par l'application $1
dump_jars "$1" | awk '{
if (match($0, /[^\/]*\.framework/) != 0) {
print substr($0, RSTART, RLENGTH)
}
}'
}
function remove_framework() {
# supprimer le framework $2 (nom de base) des fichiers de classpath du
# bundle d'application $1
local bundle="$1" framework="$2" frameworks
endswith "$framework" .framework || framework="$framework.framework"
array_from_lines frameworks "$(dump_frameworks "$bundle")"
if array_contains frameworks "$framework"; then
searchreplace_classpath "$bundle" "^LOCALROOT/.*/$framework/"
fi
}
function add_framework() {
# s'il n'y existe pas déjà, ajouter le framework $2 (nom de base ou chemin
# absolu) aux fichiers de classpath du bundle d'application $1
local bundle="$1" framework="$2" frameworks jars jar line
local winclspth="$(get_app_winclspth "$bundle")"
endswith "$framework" .framework || framework="$framework.framework"
array_from_lines frameworks "$(dump_frameworks "$bundle")"
if ! array_contains frameworks "$framework"; then
if beginswith "$framework" /; then
# on a donné un chemin absolu
array_lsfiles jars "$framework/Resources/Java" "*.jar"
if [ -z "${jars[*]}" ]; then
eerror "Impossible de trouver les fichiers du framework $framework
dans $WOFRAMEWORKS"
return 1
else
for jar in "${jars[@]}"; do
echo "$jar" >>"$bundle/Contents/UNIX/UNIXClassPath.txt"
echo "$jar" >>"$bundle/Contents/MacOS/MacOSClassPath.txt"
echo "${jar//\//\\}" >>"$bundle/$winclspth"
done
fi
else
# on a donné juste le nom du framework
array_from_lines jars "$(list_files "$WOFRAMEWORKS/$framework/Resources/Java" "*.jar")"
if [ -z "${jars[*]}" ]; then
eerror "Impossible de trouver les fichiers du framework $framework
dans $WOFRAMEWORKS"
return 1
else
for jar in "${jars[@]}"; do
line="LOCALROOT/Library/WebObjects/Applications/Frameworks/$framework/Resources/Java/$jar"
echo "$line" >>"$bundle/Contents/UNIX/UNIXClassPath.txt"
echo "$line" >>"$bundle/Contents/MacOS/MacOSClassPath.txt"
echo "${line//\//\\}" >>"$bundle/$winclspth"
done
fi
fi
fi
}
function fix_jars_case() {
# Vérifier que la casse des jars de tous les frameworks utilisés par
# l'application $1 est conforme au système de fichier
local bundle="$1" clspth jars jar fwkdir fwkname jarname jarnamefs
if [ "$UNAME_SYSTEM" == "Darwin" ]; then
clspth="Contents/MacOS/MacOSClassPath.txt"
else
clspth="Contents/UNIX/UNIXClassPath.txt"
fi
array_from_lines jars "$(dump_jars "$bundle")"
for jar in "${jars[@]}"; do
{ endswith "$jar" .jar || endswith "$jar" .zip; } || continue
if beginswith "$jar" LOCALROOT; then
fwkname="${jar##*/Frameworks/}"; fwkname="${fwkname%%/*}"
fwkdir="$WOFRAMEWORKS"
else
fwkdir="${jar%/*.framework/*}"
fwkname="${jar##/*.framework/}";
fwkname="${jar:0:$((${#jar}-${#fwkname}-1))}"; fwkname="${fwkname##*/}"
fi
jarname="${jar##*/}"
if [ ! -d "$fwkdir/$fwkname" ]; then
eerror "$(basename "$bundle"): $fwkname: ce framework n'existe pas"
continue
fi
array_from_lines jarnamefs "$(list_files "$fwkdir/$fwkname/Resources/Java" "*.jar" | grep -i "^$jarname")"
if [ ${#jarnamefs[*]} -eq 0 ]; then
eerror "$(basename "$bundle"): $fwkname: $jarname n'existe pas"
elif [ ${#jarnamefs[*]} -gt 1 ]; then
eerror "$(basename "$bundle"): $fwkname: il existe plusieurs jars $jarname"
else
if [ "$jarname" != "$jarnamefs" ]; then
einfo "$(basename "$bundle"): $fwkname: $jarnamefs"
searchreplace_classpath "$bundle" "$fwkname/Resources/Java/$jarname" "$fwkname/Resources/Java/$jarnamefs"
fi
fi
done
}
function verifix_bundle() {
# vérifier et corriger le bundle $1. Pour une application, on vérifie que le
# script est exécutable. Pour un framework, on vérifie que le framework est
# conforme au modèle des framework générés par WebObjects.
local bundle="$1"
if is_woappdir "$bundle"; then
local script="$bundle/$(basename "$bundle" .woa)"
if [ ! -x "$script" ]; then
chmod +x "$script"
fi
elif is_wofwkdir "$bundle"; then
[ -L "$bundle/Resources" ] && return
local filename
if [ ! -L "$bundle/Resources" ]; then
rm -rf "$bundle/Versions/A/Resources"
cpdir "$bundle/Resources" "$bundle/Versions/A/Resources"
rm -rf "$bundle/Resources"
fi
if [ ! -L "$bundle/WebServerResource" ]; then
rm -rf "$bundle/Versions/A/WebServerResources"
cpdir "$bundle/WebServerResources" "$bundle/Versions/A/WebServerResources"
rm -rf "$bundle/WebServerResources"
fi
local cwd="$(pwd)"
cd "$bundle/Versions"
if [ -e Current ]; then
if [ ! -L Current -a -d Current ]; then
rm -rf Current
else
rm -f Current
fi
fi
ln -s A Current
cd ..
ln -s Versions/Current/Resources Resources
ln -s Versions/Current/WebServerResources WebServerResources
cd "$cwd"
fi
}
function compute_fapps() {
# Placer dans le tableau $1(=fappnames) la liste des noms de bundle
# d'applications qui dépendent du framework $2
# Cette opération est faite à partir des informations sur le système de
# fichier. Elle ne peut donc concerner qu'une installation locale.
local -a __cf_fappnames
local __cf_fwknames __cf_fwkname __cf_appnames __cf_appname
__cf_fwkname="$2"
[ "${__cf_fwkname%.framework}" != "$__cf_fwkname" ] || __cf_fwkname="$__cf_fwkname.framework"
__cf_fwkname="$(basename "$__cf_fwkname")"
array_from_lines __cf_appnames "$(list_dirs "$WOAPPLICATIONS" "*.woa")"
for __cf_appname in "${__cf_appnames[@]}"; do
array_from_lines __cf_fwknames "$(dump_frameworks "$WOAPPLICATIONS/$__cf_appname")"
if array_contains __cf_fwknames "$__cf_fwkname"; then
array_set __cf_fappnames "$__cf_appname"
fi
done
array_copy "${1:-fappnames}" __cf_fappnames
}
################################################################################
# Applications et instances
WORAURL_USE_PROXY= # faut-il passer par un proxy?
WORAURL_DATA=
function woraurl() {
# Faire une requête avec la méthode $1 sur l'url $2 avec le payload $3 (par
# exemple pour la méthode POST). la réponse est disponible dans le fichier
# $WORAURL_DATA, $4(=http_code) contient le code de réponse.
# Retourner 0 en cas de succès, ou une valeur différente de zéro si un
# erreur se produit (typiquement, 3 pour une erreur du serveur, 1 pour une
# réponse applicative, comme par exemple si l'application n'existe pas)
# Les codes de réponse 2xx et 417 sont des succès
# Les autres codes (à priori 4xx ou 5xx) sont des erreurs
# note: le code 417 est utilisé par le moniteur pour répondre "Non", par
# opposition à 200 utilisé pour répondre "OUI"
local _status _http_code _args
[ -n "$WORAURL_DATA" ] || ac_set_tmpfile WORAURL_DATA
_args=(-s -X "${1:-GET}" ${3:+-d "$3"} -w '%{http_code}' -o "$WORAURL_DATA")
[ -z "$WORAURL_USE_PROXY" ] && _args=("${_args[@]}" -x "")
_http_code="$(curl "${_args[@]}" "$2")"
case "$_http_code" in
2*|417) _status=0;;
4*) _status=1;;
5*) _status=3;;
*) _status=11;;
esac
_setv "${4:-http_code}" "$_http_code"
return $_status
}
function wogeturl() { woraurl GET "$@"; }
function splitins() {
# Analyser le nom $1, qui peut être de forme '', 'Name.woa',
# 'Name.framework', 'App' ou 'Instance-N' (où N est un nombre), et
# initialiser les variables $2(=type) et $3(=name)
# Si $1=="", type=all et name=""
# Si $1==Name.woa, type=woa et name=Name.woa
# Si $1==Name.framework, type=fwk et name=Name.framework
# Si $1==App, type=app et name=App
# si $1==App-N, type=ins et name=App-N
if [ -z "$1" ]; then
_setv "${2:-type}" all
_setv "${3:-name}"
elif [ "${1%.woa}" != "$1" ]; then
_setv "${2:-type}" woa
_setv "${3:-name}" "$1"
elif [ "${1%.framework}" != "$1" ]; then
_setv "${2:-type}" fwk
_setv "${3:-name}" "$1"
elif [[ "$1" == *-* ]]; then
local __si_name __si_num
__si_name="${1%-*}"
__si_num="${1##*-}"
if [ -z "${__si_num//[0-9]/}" ]; then
_setv "${2:-type}" ins
_setv "${3:-name}" "$1"
else
_setv "${2:-type}" app
_setv "${3:-name}" "$1"
fi
elif [ -n "$1" ]; then
_setv "${2:-type}" app
_setv "${3:-name}" "$1"
fi
}
################################################################################
# Environnement
function create_wodirs_maybe() {
mkdir -p "$WOAPPLICATIONS"
mkdir -p "$WOFRAMEWORKS"
}
function check_autostart() {
# vérifier la présence du fichier $WOAUTOSTART. Si ce n'est pas le cas, le
# créer avec le contenu du tableau $1
if [ ! -f "$WOAUTOSTART" -a -n "$1" ]; then
array_to_lines "$1" | csort >"$WOAUTOSTART" || return 1
enote "Le fichier $(ppath "$WOAUTOSTART") a été créé avec la liste suivante:
$(<"$WOAUTOSTART")"
fi
}
function get_autostart_order() {
# Initialiser le tableau $1 avec la liste donnée dans le fichier
# $WOAUTOSTART
array_from_lines "$1" "$(<"$WOAUTOSTART" filter_comment)"
}
function apply_autostart_order() {
# Réordonner les valeurs $3..* selon la liste donnée dans le tableau $2,
# puis placer le résultat dans le tableau $1. $2 doit être construit avec
# get_autostart_order(). Si $2 n'est pas spécifié, la liste est construite
# localement.
# Si le tableau contient des lignes de délai @N, replacer les délais après
# les applications appropriées
local __aa_reverse
if [ "$1" == "-r" ]; then
__aa_reverse=1
shift
fi
local -a __aa_oapps __aa_src
local __aa_dest="$1" __aa_oapp; shift
local __found
if [ -n "$1" ]; then
array_copy __aa_oapps "$1"
else
get_autostart_order __aa_oapps
fi
shift
set_array __aa_src @ "$@"
array_new "$__aa_dest"
for __aa_oapp in "${__aa_oapps[@]}"; do
if [[ "$__aa_oapp" == @* ]]; then
# Si on trouve une ligne @N, et que la précédente ligne a été
# sélectionnée, alors inclure le délai aussi dans la liste des
# valeurs à prendre en compte
[ -n "$__aa_found" ] && array_add "$__aa_dest" "$__aa_oapp"
__aa_found=
elif array_contains __aa_src "$__aa_oapp"; then
array_add "$__aa_dest" "$__aa_oapp"
array_del __aa_src "$__aa_oapp"
__aa_found=1
else
__aa_found=
fi
done
array_extend "$__aa_dest" __aa_src
[ -n "$__aa_reverse" ] && array_reverse "$__aa_dest"
}
function __unix_woservices() {
if [ -x /etc/init.d/WOServices ]; then
/etc/init.d/WOServices "$@"
else
eerror "Ce script ne sait pas piloter wotaskd/javamonitor sur cette plateforme"
return 1
fi
}
SERVICE_OVERRIDE_wotaskd_stop=wotaskd_stop
function wotaskd_stop() {
if [ "$UNAME_SYSTEM" == "Darwin" ]; then
launchctl unload /System/Library/LaunchDaemons/com.apple.wotaskd.plist
else
__unix_woservices stop
fi
}
SERVICE_OVERRIDE_wotaskd_start=wotaskd_start
function wotaskd_start() {
if [ "$UNAME_SYSTEM" == "Darwin" ]; then
launchctl load /System/Library/LaunchDaemons/com.apple.wotaskd.plist
else
__unix_woservices start
fi
}
SERVICE_OVERRIDE_javamonitor_stop=javamonitor_stop
SERVICE_OVERRIDE_womonitor_stop=javamonitor_stop
function javamonitor_stop() {
if [ "$UNAME_SYSTEM" == "Darwin" ]; then
launchctl unload /System/Library/LaunchDaemons/com.apple.womonitor.plist
else
__unix_woservices stop
fi
}
function womonitor_stop() { javamonitor_stop "$@"; }
SERVICE_OVERRIDE_javamonitor_start=javamonitor_start
SERVICE_OVERRIDE_womonitor_start=javamonitor_start
function javamonitor_start() {
if [ "$UNAME_SYSTEM" == "Darwin" ]; then
launchctl load /System/Library/LaunchDaemons/com.apple.womonitor.plist
else
__unix_woservices start
fi
}
function womonitor_start() { javamonitor_start "$@"; }
SERVICE_OVERRIDE_woservices_stop=woservices_stop
function woservices_stop() {
if [ "$UNAME_SYSTEM" == "Darwin" ]; then
javamonitor_stop
wotaskd_stop
else
__unix_woservices stop
fi
}
SERVICE_OVERRIDE_woservices_start=woservices_start
function woservices_start() {
if [ "$UNAME_SYSTEM" == "Darwin" ]; then
wotaskd_start
javamonitor_start
else
__unix_woservices start
fi
}