On amd64, they're secretly arrays, and once one's decayed into a
pointer to a strange thing, there's no getting it back again.
*
* Arguments: @dstr *d@ = where to leave the formatted message
* @const char *fmt@ = pointer to format string
*
* Arguments: @dstr *d@ = where to leave the formatted message
* @const char *fmt@ = pointer to format string
- * @va_list ap@ = arguments in list
+ * @va_list *ap@ = arguments in list
* * "[!]..." ... -- @dstr_putf@-like string as single token
*/
* * "[!]..." ... -- @dstr_putf@-like string as single token
*/
-void a_vformat(dstr *d, const char *fmt, va_list ap)
+void a_vformat(dstr *d, const char *fmt, va_list *ap)
{
dstr dd = DSTR_INIT;
while (fmt) {
if (*fmt == '*') {
if (d->len) dstr_putc(d, ' ');
{
dstr dd = DSTR_INIT;
while (fmt) {
if (*fmt == '*') {
if (d->len) dstr_putc(d, ' ');
- dstr_vputf(d, fmt + 1, &ap);
+ dstr_vputf(d, fmt + 1, ap);
} else if (*fmt == '?') {
if (strcmp(fmt, "?ADDR") == 0) {
const addr *a = va_arg(ap, const addr *);
} else if (*fmt == '?') {
if (strcmp(fmt, "?ADDR") == 0) {
const addr *a = va_arg(ap, const addr *);
} else {
if (*fmt == '!') fmt++;
DRESET(&dd);
} else {
if (*fmt == '!') fmt++;
DRESET(&dd);
- dstr_vputf(&dd, fmt, &ap);
+ dstr_vputf(&dd, fmt, ap);
u_quotify(d, dd.buf);
}
fmt = va_arg(ap, const char *);
u_quotify(d, dd.buf);
}
fmt = va_arg(ap, const char *);
va_list ap;
va_start(ap, fmt);
va_list ap;
va_start(ap, fmt);
+ a_vformat(d, fmt, &ap);
*/
static void a_vwrite(admin *a, const char *status, const char *tag,
*/
static void a_vwrite(admin *a, const char *status, const char *tag,
- const char *fmt, va_list ap)
+ const char *fmt, va_list *ap)
va_list ap;
va_start(ap, fmt);
va_list ap;
va_start(ap, fmt);
- a_vwrite(a, status, tag, fmt, ap);
+ a_vwrite(a, status, tag, fmt, &ap);
va_list ap;
va_start(ap, fmt);
va_list ap;
va_start(ap, fmt);
- a_vwrite(a, "INFO", 0, fmt, ap);
+ a_vwrite(a, "INFO", 0, fmt, &ap);
va_list ap;
va_start(ap, fmt);
va_list ap;
va_start(ap, fmt);
- a_vwrite(a, "FAIL", 0, fmt, ap);
+ a_vwrite(a, "FAIL", 0, fmt, &ap);
}
static void a_valert(unsigned f_and, unsigned f_eq, const char *status,
}
static void a_valert(unsigned f_and, unsigned f_eq, const char *status,
- const char *fmt, va_list ap)
+ const char *fmt, va_list *ap)
va_list ap;
va_start(ap, fmt);
va_list ap;
va_start(ap, fmt);
- a_valert(f_and, f_eq, status, fmt, ap);
+ a_valert(f_and, f_eq, status, fmt, &ap);
va_start(ap, fmt);
if (flags & F_INIT)
va_start(ap, fmt);
if (flags & F_INIT)
- a_valert(0, 0, "WARN", fmt, ap);
+ a_valert(0, 0, "WARN", fmt, &ap);
else {
dstr d = DSTR_INIT;
fprintf(stderr, "%s: ", QUIS);
else {
dstr d = DSTR_INIT;
fprintf(stderr, "%s: ", QUIS);
- a_vformat(&d, fmt, ap);
+ a_vformat(&d, fmt, &ap);
dstr_putc(&d, '\n');
dstr_write(&d, stderr);
dstr_destroy(&d);
dstr_putc(&d, '\n');
dstr_write(&d, stderr);
dstr_destroy(&d);
va_list ap;
va_start(ap, fmt);
va_list ap;
va_start(ap, fmt);
- a_valert(AF_NOTE, AF_NOTE, "NOTE", fmt, ap);
+ a_valert(AF_NOTE, AF_NOTE, "NOTE", fmt, &ap);
{
va_list ap;
va_start(ap, fmt);
{
va_list ap;
va_start(ap, fmt);
- a_vwrite(bg->a, "INFO", bg->tag, fmt, ap);
+ a_vwrite(bg->a, "INFO", bg->tag, fmt, &ap);
{
va_list ap;
va_start(ap, fmt);
{
va_list ap;
va_start(ap, fmt);
- a_vwrite(bg->a, "FAIL", bg->tag, fmt, ap);
+ a_vwrite(bg->a, "FAIL", bg->tag, fmt, &ap);
*
* Arguments: @dstr *d@ = where to leave the formatted message
* @const char *fmt@ = pointer to format string
*
* Arguments: @dstr *d@ = where to leave the formatted message
* @const char *fmt@ = pointer to format string
- * @va_list ap@ = arguments in list
+ * @va_list *ap@ = arguments in list
* * "[!]..." ... -- @dstr_putf@-like string as single token
*/
* * "[!]..." ... -- @dstr_putf@-like string as single token
*/
-extern void a_vformat(dstr */*d*/, const char */*fmt*/, va_list /*ap*/);
+extern void a_vformat(dstr */*d*/, const char */*fmt*/, va_list */*ap*/);
/* --- @a_format@ --- *
*
/* --- @a_format@ --- *
*