1 // RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s 2 3 // UNSUPPORTED: solaris 4 5 #include <stdio.h> 6 7 void print_something() { 8 for (size_t i = 0; i < 10 * BUFSIZ; i++) 9 printf("Hello world %zu\n", i); 10 } 11 12 void print_one_byte(char *buf) { 13 printf("First byte is %c\n", buf[0]); 14 } 15 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 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 44 void test_setlinebuf() { 45 setlinebuf(stdout); 46 47 print_something(); 48 } 49 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 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