mirror of
https://github.com/openwrt/packages.git
synced 2025-12-21 18:11:21 +00:00
The way the init script is written now, we get a bad output when calling
the ubus service backend.
ubus call service list "{'verbose':true,'name':'modemmanager'}"
>{
> "modemmanager": {
> "instances": {
> "instance1": {
> "running": true,
> "pid": 20511,
> "command": [
> "sh",
> "-c",
> ".
>/usr/share/ModemManager/modemmanager.common; \t
>mkdir -m 0755 -p /var/run/modemmanager; \t
>mm_cleanup_interfaces; \t
>( mm_report_events_from_cache ) >/dev/null 2>&1 & \t
>/usr/sbin/ModemManager"
> ],
> "term_timeout": 5,
> "respawn": {
> "threshold": 3600,
> "timeout": 5,
> "retry": 5
> },
> "pidfile":"/var/run/modemmanager/modemmanager.pid"
> }
> }
> }
>}"
I also get the output in the log that the PID file cannot be created.
> daemon.err procd: Failed to remove pidfile: :No such file or directory
The changes in this commit fixes this issues, by moving startup into a
wrapper script.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
34 lines
567 B
Bash
34 lines
567 B
Bash
#!/bin/sh
|
|
|
|
trap_with_arg() {
|
|
func="$1" ; shift
|
|
for sig ; do
|
|
# shellcheck disable=SC2064
|
|
trap "$func $sig" "$sig"
|
|
done
|
|
}
|
|
|
|
func_trap() {
|
|
logger "ModemManager-wrapper[$$]" "Sending signal ${1}..."
|
|
kill "-${1}" "$CHILD" 2>/dev/null
|
|
}
|
|
|
|
main() {
|
|
. /usr/share/ModemManager/modemmanager.common
|
|
|
|
trap_with_arg func_trap INT TERM KILL
|
|
|
|
mkdir -p "${MODEMMANAGER_RUNDIR}"
|
|
chmod 0755 "${MODEMMANAGER_RUNDIR}"
|
|
mm_cleanup_interfaces
|
|
|
|
/usr/sbin/ModemManager "$@" 1>/dev/null 2>/dev/null &
|
|
CHILD="$!"
|
|
sleep 2
|
|
mm_report_events_from_cache
|
|
|
|
wait "$CHILD"
|
|
}
|
|
|
|
main "$@"
|