14eea8849SSiva Chandra Reddy //===-- Implementation of setvbuf -----------------------------------------===// 24eea8849SSiva Chandra Reddy // 34eea8849SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 44eea8849SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 54eea8849SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 64eea8849SSiva Chandra Reddy // 74eea8849SSiva Chandra Reddy //===----------------------------------------------------------------------===// 84eea8849SSiva Chandra Reddy 94eea8849SSiva Chandra Reddy #include "src/stdio/setvbuf.h" 104eea8849SSiva Chandra Reddy #include "src/__support/File/file.h" 114eea8849SSiva Chandra Reddy 12*04a9c625SMichael Jones #include "src/errno/libc_errno.h" 134eea8849SSiva Chandra Reddy #include <stdio.h> 144eea8849SSiva Chandra Reddy 154eea8849SSiva Chandra Reddy namespace __llvm_libc { 164eea8849SSiva Chandra Reddy 174eea8849SSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, setvbuf, 184eea8849SSiva Chandra Reddy (::FILE *__restrict stream, char *__restrict buf, int type, 194eea8849SSiva Chandra Reddy size_t size)) { 204eea8849SSiva Chandra Reddy int err = reinterpret_cast<__llvm_libc::File *>(stream)->set_buffer(buf, size, 214eea8849SSiva Chandra Reddy type); 224eea8849SSiva Chandra Reddy if (err != 0) 23*04a9c625SMichael Jones libc_errno = err; 244eea8849SSiva Chandra Reddy return err; 254eea8849SSiva Chandra Reddy } 264eea8849SSiva Chandra Reddy 274eea8849SSiva Chandra Reddy } // namespace __llvm_libc 28