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