cmn-err-1.c   [plain text]


/* { dg-do compile { target *-*-solaris2.* } } */
/* { dg-options "-Wformat" } */

#include "format.h"

void cmn_err_func (int level, char * format, ...)
  __attribute__((format (cmn_err, 2, 3)));

void cmn_err_func (int level, char * format, ...)
{
}

const char *string = "foo";

int main()
{
  int i = 1;
  long l = 2;
  llong ll = 3;

  cmn_err_func (0, "%s", string);
  cmn_err_func (0, "%d %D %o %O %x %X %u", i, i, i, i, i, i, i);
  cmn_err_func (0, "%ld %lD %lo %lO %lx %lX %lu", l, l, l, l, l, l, l);
  cmn_err_func (0, "%lld %llD %llo %llO %llx %llX %llu",
		ll, ll, ll, ll, ll, ll, ll);
  cmn_err_func (0, "%b %s", i, "\01Foo", string);
  cmn_err_func (0, "%p", string);

  cmn_err_func (0, "%i", i);		/* { dg-error "unknown|too many" } */
  cmn_err_func (0, "%d", l);		/* { dg-error "expects type" } */
  cmn_err_func (0, "%b");		/* { dg-error "too few" } */
  cmn_err_func (0, "%b", i);		/* { dg-error "too few" } */
  cmn_err_func (0, "%b", i, i);		/* { dg-error "expects type" } */
  cmn_err_func (0, "%b", string, i);	/* { dg-error "expects type" } */
  cmn_err_func (0, "%p", 3);            /* { dg-error "expects type" } */
  return 0;
}