1 // RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s
2 
3 // UNSUPPORTED: solaris
4 
5 #include <stdio.h>
6 
print_something()7 void print_something() {
8   for (size_t i = 0; i < 10 * BUFSIZ; i++)
9     printf("Hello world %zu\n", i);
10 }
11 
print_one_byte(char * buf)12 void print_one_byte(char *buf) {
13   printf("First byte is %c\n", buf[0]);
14 }
15 
test_setbuf()16 void test_setbuf() {
17   char buf[BUFSIZ];
18 
19   setbuf(stdout, NULL);
20 
21   print_something();
22 
23   setbuf(stdout, buf);
24 
25   print_something();
26 
27   print_one_byte(buf);
28 }
29 
test_setbuffer()30 void test_setbuffer() {
31   char buf[BUFSIZ];
32 
33   setbuffer(stdout, NULL, 0);
34 
35   print_something();
36 
37   setbuffer(stdout, buf, BUFSIZ);
38 
39   print_something();
40 
41   print_one_byte(buf);
42 }
43 
test_setlinebuf()44 void test_setlinebuf() {
45   setlinebuf(stdout);
46 
47   print_something();
48 }
49 
test_setvbuf()50 void test_setvbuf() {
51   char buf[BUFSIZ];
52 
53   setvbuf(stdout, NULL, _IONBF, 0);
54 
55   print_something();
56 
57   setvbuf(stdout, buf, _IOLBF, BUFSIZ);
58 
59   print_something();
60 
61   print_one_byte(buf);
62 
63   setvbuf(stdout, buf, _IOFBF, BUFSIZ);
64 
65   print_something();
66 
67   print_one_byte(buf);
68 }
69 
main(void)70 int main(void) {
71   printf("setvbuf\n");
72 
73   test_setbuf();
74   test_setbuffer();
75   test_setlinebuf();
76   test_setvbuf();
77 
78   // CHECK: setvbuf
79 
80   return 0;
81 }
82