shithub: mc

ref: 29c376fb854767c551415cd858c462f8ac03280d
dir: /fmt.myr/

View raw version
use "die.use"
use "sys.use"
use "types.use"
use "utf.use"

pkg std =
	const bfmt	: (buf : byte[,], fmt : byte[,], args:... -> size)
	const fmt	: (fmt : byte[,], args:... -> size)
;;

const bfmt = {buf, fmt, args
	var c
	var n

	n = 0
	while fmt.len
		(c, fmt) = striter(fmt)
		if c == '%'
			(c, fmt) = striter(fmt)
			match c
			's':
				write(1, "str\n")
				;;
			'd':
				write(1, "int\n")
				;;
			'p':
				write(1, "ptr\n")
				;;
			;;
		else
			n += encode(buf[n,buf.len], c)
		;;
	;;
	-> n
}

const fmt = {fmt, args
	var buf : byte[2048]
	var n
	
	n = bfmt(buf[0,2048], fmt, args)
	write(1, buf[0,n])
	-> n
}