1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// test <stdio.h> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <stdio.h> 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <type_traits> 14212714f805dc3b00e351b1556395f18c5ae70c25Eric Fiselier#include "test_macros.h" 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef BUFSIZ 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error BUFSIZ not defined 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef EOF 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error EOF not defined 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef FILENAME_MAX 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error FILENAME_MAX not defined 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef FOPEN_MAX 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error FOPEN_MAX not defined 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef L_tmpnam 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error L_tmpnam not defined 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef NULL 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error NULL not defined 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef SEEK_CUR 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error SEEK_CUR not defined 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef SEEK_END 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error SEEK_END not defined 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef SEEK_SET 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error SEEK_SET not defined 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef TMP_MAX 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error TMP_MAX not defined 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef _IOFBF 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error _IOFBF not defined 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef _IOLBF 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error _IOLBF not defined 62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef _IONBF 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error _IONBF not defined 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef stderr 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error stderr not defined 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef stdin 73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error stdin not defined 74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef stdout 77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error stdout not defined 78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif 79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cstdarg> 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 82212714f805dc3b00e351b1556395f18c5ae70c25Eric Fiselier#pragma GCC diagnostic ignored "-Wformat-zero-length" 83212714f805dc3b00e351b1556395f18c5ae70c25Eric Fiselier#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // for tmpnam 84896baa2547b5e520c72cda5768d3af2d48f50285Howard Hinnant 85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant FILE* fp = 0; 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant fpos_t fpos = {0}; 89212714f805dc3b00e351b1556395f18c5ae70c25Eric Fiselier size_t s = 0; ((void)s); 90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant char* cp = 0; 91212714f805dc3b00e351b1556395f18c5ae70c25Eric Fiselier char arr[] = {'a', 'b'}; 92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant va_list va; 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(remove("")), int>::value), ""); 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(rename("","")), int>::value), ""); 95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tmpfile()), FILE*>::value), ""); 96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(tmpnam(cp)), char*>::value), ""); 97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fclose(fp)), int>::value), ""); 98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fflush(fp)), int>::value), ""); 99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fopen("", "")), FILE*>::value), ""); 100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(freopen("", "", fp)), FILE*>::value), ""); 101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(setbuf(fp,cp)), void>::value), ""); 102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(vfprintf(fp,"",va)), int>::value), ""); 1030a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(fprintf(fp," ")), int>::value), ""); 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fscanf(fp,"")), int>::value), ""); 1050a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(printf("\n")), int>::value), ""); 1060a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(scanf("\n")), int>::value), ""); 1070a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(snprintf(cp,0,"p")), int>::value), ""); 1080a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(sprintf(cp," ")), int>::value), ""); 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(sscanf("","")), int>::value), ""); 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(vfprintf(fp,"",va)), int>::value), ""); 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(vfscanf(fp,"",va)), int>::value), ""); 1120a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(vprintf(" ",va)), int>::value), ""); 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(vscanf("",va)), int>::value), ""); 1140a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(vsnprintf(cp,0," ",va)), int>::value), ""); 1150a111118a60290ec0c650fbd0327403c4b118bddHoward Hinnant static_assert((std::is_same<decltype(vsprintf(cp," ",va)), int>::value), ""); 116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(vsscanf("","",va)), int>::value), ""); 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fgetc(fp)), int>::value), ""); 118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fgets(cp,0,fp)), char*>::value), ""); 119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fputc(0,fp)), int>::value), ""); 120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fputs("",fp)), int>::value), ""); 121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(getc(fp)), int>::value), ""); 122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(getchar()), int>::value), ""); 123212714f805dc3b00e351b1556395f18c5ae70c25Eric Fiselier#if TEST_STD_VER < 14 124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(gets(cp)), char*>::value), ""); 125e48b0c40ad37cb38282e3005cfe1992922768f70Eric Fiselier#endif 126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(putc(0,fp)), int>::value), ""); 127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(putchar(0)), int>::value), ""); 128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(puts("")), int>::value), ""); 129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ungetc(0,fp)), int>::value), ""); 130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fread((void*)0,0,0,fp)), size_t>::value), ""); 131212714f805dc3b00e351b1556395f18c5ae70c25Eric Fiselier static_assert((std::is_same<decltype(fwrite((const void*)arr,1,0,fp)), size_t>::value), ""); 132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fgetpos(fp, &fpos)), int>::value), ""); 133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fseek(fp, 0,0)), int>::value), ""); 134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(fsetpos(fp, &fpos)), int>::value), ""); 135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ftell(fp)), long>::value), ""); 136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(rewind(fp)), void>::value), ""); 137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(clearerr(fp)), void>::value), ""); 138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(feof(fp)), int>::value), ""); 139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(ferror(fp)), int>::value), ""); 140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant static_assert((std::is_same<decltype(perror("")), void>::value), ""); 141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 142