Opennet Firmware
 Alle Dateien Funktionen Variablen Gruppen Seiten
on-helper.sh
gehe zur Dokumentation dieser Datei
1 #!/bin/sh
2 #
3 # Opennet Firmware
4 #
5 # Copyright 2010 Rene Ejury <opennet@absorb.it>
6 # Copyright 2014 Lars Kruse <devel@sumpfralle.de>
7 #
8 # Licensed under the Apache License, Version 2.0 (the "License");
9 # you may not use this file except in compliance with the License.
10 # You may obtain a copy of the License at
11 #
12 # http://www.apache.org/licenses/LICENSE-2.0
13 #
14 
15 # Abbruch bei:
16 # u = undefinierten Variablen
17 # e = Fehler
18 set -eu
19 
20 # fuer Entwicklungszwecke: uebermaessig ausfuehrliche Ausgabe aktivieren
21 [ "${ON_DEBUG:-}" = "1" ] && set -x
22 
23 
24 # leider, leider unterstuetzt die busybox-ash kein trap "ERR"
25 GUARD_TRAPS=EXIT
26 
27 DEBUG="${DEBUG:-}"
28 
29 # siehe Entwicklungsdokumentation (Entwicklungshinweise -> Shell-Skripte -> Fehlerbehandlung)
30 trap "error_trap __main__ '$*'" $GUARD_TRAPS
31 
32 
33 # Schreibe eine log-Nachricht bei fehlerhaftem Skript-Abbruch
34 # Uebliche Parameter sind der aktuelle Funktionsname, sowie Parameter der aufgerufenen Funktion.
35 # Jede nicht-triviale Funktion sollte zu Beginn folgende Zeile enthalten:
36 # trap "error_trap FUNKTIONSNAME_HIER_EINTRAGEN '$*'" $GUARD_TRAPS
37 error_trap() {
38  # dies ist der Exitcode des Skripts (im Falle der EXIT trap)
39  local exitcode="$?"
40  local message="ERROR [trapped]: '$*'"
41  [ "$exitcode" = 0 ] && exit 0
42  msg_info "$message"
43  echo >&2 "$message"
44  exit "$exitcode"
45 }
46 
47 
48 # Minimieren aller Shell-Module durch Entfernen von Kommentar- und Leerzeilen
49 # Alle Modul-Dateien werden gelesen, minimiert und anschliessend in eine Cache-Datei
50 # geschrieben. Die Zeitstempel der Shell-Module werden bei jedem Start mit dem der
51 # Cache-Datei verglichen und letztere bei Bedarf erneuert.
52 # Diese Minimierung reduziert die Laufzeit bei einfachen Funktionsaufrufen um ca. 10%.
53 ON_SHELL_MINIMIZED="${IPKG_INSTROOT:-}/tmp/on_shell_modules.cache"
54 ON_SHELL_MODULES_DIR="${IPKG_INSTROOT:-}/usr/lib/opennet"
55 ON_SHELL_MODULES=$(find "$ON_SHELL_MODULES_DIR" -maxdepth 1 -type f -name "*.sh")
56 ON_SHELL_MODULES_NEWEST=$( (ls -dtr "$ON_SHELL_MODULES_DIR" $ON_SHELL_MODULES "$ON_SHELL_MINIMIZED" 2>/dev/null || true) | tail -1)
57 [ "$ON_SHELL_MODULES_NEWEST" != "$ON_SHELL_MINIMIZED" ] && \
58  grep -vh "^[[:space:]]*#" $(echo "$ON_SHELL_MODULES" \
59  | grep -vF "on-helper.sh") \
60  | sed 's/^[[:space:]]\+//' \
61  | grep -v "^$" \
62  >"$ON_SHELL_MINIMIZED"
63 . "$ON_SHELL_MINIMIZED"
64 
65 
66 clear_caches() {
67  rm -f "$ON_SHELL_MINIMIZED"
68  clear_cache_opennet_opkg
69 }
msg_info(message)
Informationen und Fehlermeldungen ins syslog schreiben.
Definition: core.sh:15
set eu grep root::etc shadow exit if which chpasswd dev null
Definition: on-password:12