C89: do not use named-members initializers
Enable (v)snprintf under C89
Do not depend on C99
Proper main() signature