+ *
+ * The @msg@ argument is a @printf@-style format string, which
+ * contains the message to actually be shown. The @buttons@
+ * argument is a comma-separated list of buttons to be drawn,
+ * from right to left. A button name can be preceded with `:'
+ * to indicate that it's the default, or `~' if it's the
+ * `cancel' button. The return value is the zero-based index
+ * of the button selected.