1*6d38604fSBaptiste Daroussin /* $Id: test-attribute.c,v 1.1 2020/06/22 20:00:38 schwarze Exp $ */
2*6d38604fSBaptiste Daroussin /*
3*6d38604fSBaptiste Daroussin * Copyright (c) 2020 Ingo Schwarze <schwarze@openbsd.org>
4*6d38604fSBaptiste Daroussin *
5*6d38604fSBaptiste Daroussin * Permission to use, copy, modify, and distribute this software for any
6*6d38604fSBaptiste Daroussin * purpose with or without fee is hereby granted, provided that the above
7*6d38604fSBaptiste Daroussin * copyright notice and this permission notice appear in all copies.
8*6d38604fSBaptiste Daroussin *
9*6d38604fSBaptiste Daroussin * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*6d38604fSBaptiste Daroussin * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*6d38604fSBaptiste Daroussin * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*6d38604fSBaptiste Daroussin * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*6d38604fSBaptiste Daroussin * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*6d38604fSBaptiste Daroussin * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*6d38604fSBaptiste Daroussin * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*6d38604fSBaptiste Daroussin */
17*6d38604fSBaptiste Daroussin
18*6d38604fSBaptiste Daroussin #include <stdarg.h>
19*6d38604fSBaptiste Daroussin #include <stdio.h>
20*6d38604fSBaptiste Daroussin #include <stdlib.h>
21*6d38604fSBaptiste Daroussin
22*6d38604fSBaptiste Daroussin void var_arg(const char *, ...)
23*6d38604fSBaptiste Daroussin __attribute__((__format__ (__printf__, 1, 2)));
24*6d38604fSBaptiste Daroussin void no_ret(int)
25*6d38604fSBaptiste Daroussin __attribute__((__noreturn__));
26*6d38604fSBaptiste Daroussin
27*6d38604fSBaptiste Daroussin void
var_arg(const char * fmt,...)28*6d38604fSBaptiste Daroussin var_arg(const char *fmt, ...)
29*6d38604fSBaptiste Daroussin {
30*6d38604fSBaptiste Daroussin va_list ap;
31*6d38604fSBaptiste Daroussin
32*6d38604fSBaptiste Daroussin va_start(ap, fmt);
33*6d38604fSBaptiste Daroussin vprintf(fmt, ap);
34*6d38604fSBaptiste Daroussin va_end(ap);
35*6d38604fSBaptiste Daroussin }
36*6d38604fSBaptiste Daroussin
37*6d38604fSBaptiste Daroussin void
no_ret(int i)38*6d38604fSBaptiste Daroussin no_ret(int i)
39*6d38604fSBaptiste Daroussin {
40*6d38604fSBaptiste Daroussin exit(i);
41*6d38604fSBaptiste Daroussin }
42*6d38604fSBaptiste Daroussin
43*6d38604fSBaptiste Daroussin int
main(void)44*6d38604fSBaptiste Daroussin main(void)
45*6d38604fSBaptiste Daroussin {
46*6d38604fSBaptiste Daroussin var_arg("Test output: %d\n", 42);
47*6d38604fSBaptiste Daroussin no_ret(0);
48*6d38604fSBaptiste Daroussin }
49