xref: /aosp_15_r20/external/compiler-rt/test/msan/getline.cc (revision 7c3d14c8b49c529e04be81a3ce6f5cc23712e4c6)
1*7c3d14c8STreehugger Robot // RUN: echo "abcde" > %t-testdata
2*7c3d14c8STreehugger Robot // RUN: echo "12345" >> %t-testdata
3*7c3d14c8STreehugger Robot // RUN: %clangxx_msan -O0 %s -o %t && %run %t %t-testdata
4*7c3d14c8STreehugger Robot // RUN: %clangxx_msan -O2 %s -o %t && %run %t %t-testdata
5*7c3d14c8STreehugger Robot // RUN: %clang_msan -O0 -xc %s -o %t && %run %t %t-testdata
6*7c3d14c8STreehugger Robot // RUN: %clang_msan -O2 -xc %s -o %t && %run %t %t-testdata
7*7c3d14c8STreehugger Robot // RUN: %clang_msan -O0 -xc -D_GNU_SOURCE=1 %s -o %t && %run %t %t-testdata
8*7c3d14c8STreehugger Robot // RUN: %clang_msan -O2 -xc -D_GNU_SOURCE=1 %s -o %t && %run %t %t-testdata
9*7c3d14c8STreehugger Robot 
10*7c3d14c8STreehugger Robot #if defined(__FreeBSD__)
11*7c3d14c8STreehugger Robot #define _WITH_GETLINE  // To declare getline().
12*7c3d14c8STreehugger Robot #endif
13*7c3d14c8STreehugger Robot 
14*7c3d14c8STreehugger Robot #include <assert.h>
15*7c3d14c8STreehugger Robot #include <stdio.h>
16*7c3d14c8STreehugger Robot #include <stdlib.h>
17*7c3d14c8STreehugger Robot #include <string.h>
18*7c3d14c8STreehugger Robot 
main(int argc,char ** argv)19*7c3d14c8STreehugger Robot int main(int argc, char **argv) {
20*7c3d14c8STreehugger Robot   assert(argc == 2);
21*7c3d14c8STreehugger Robot   printf("%s\n", argv[1]);
22*7c3d14c8STreehugger Robot 
23*7c3d14c8STreehugger Robot   FILE *fp = fopen(argv[1], "r");
24*7c3d14c8STreehugger Robot   assert(fp);
25*7c3d14c8STreehugger Robot 
26*7c3d14c8STreehugger Robot   char *line = 0;
27*7c3d14c8STreehugger Robot   size_t len = 0;
28*7c3d14c8STreehugger Robot   int n = getline(&line, &len, fp);
29*7c3d14c8STreehugger Robot   assert(n == 6);
30*7c3d14c8STreehugger Robot   assert(strcmp(line, "abcde\n") == 0);
31*7c3d14c8STreehugger Robot 
32*7c3d14c8STreehugger Robot   n = getline(&line, &len, fp);
33*7c3d14c8STreehugger Robot   assert(n == 6);
34*7c3d14c8STreehugger Robot   assert(strcmp(line, "12345\n") == 0);
35*7c3d14c8STreehugger Robot 
36*7c3d14c8STreehugger Robot   free(line);
37*7c3d14c8STreehugger Robot   fclose(fp);
38*7c3d14c8STreehugger Robot 
39*7c3d14c8STreehugger Robot   return 0;
40*7c3d14c8STreehugger Robot }
41