shithub: mc

ref: b862b777b9a3efb3c3bb8e733906cc80d93736cc
dir: /libstd/waitstatus-linux.myr/

View raw version
use "die.use"
pkg std =
	type waitstatus = union
		`Waitexit int32
		`Waitsig  int32
		`Waitstop int32
	;;

	const waitstatus	: (st : int32 -> waitstatus)
;;

const waitstatus = {st
	if st & 0x7f == 0 /* if exited */
		-> `Waitexit ((st & 0xff00) >> 8)
	elif ((st & 0xffff)-1) < 0xff /* if signaled */
		-> `Waitsig ((st) & 0x7f)
	elif (((st & 0xffff)*0x10001)>>8) > 0x7f00
		-> `Waitstop ((st & 0xff00) >> 8)
	;;
	die("unreachable")
}