Switched to extsprintf, it has much nicer errors on sprintf parse failures.