#!/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 "$@"