1 #include <stdio.h>
2 #include <string.h>
3 
4 static int
do_test(void)5 do_test (void)
6 {
7   FILE *f = tmpfile ();
8   char obuf[99999], ibuf[sizeof obuf];
9   char *line;
10   size_t linesz;
11 
12   if (! f)
13     {
14       perror ("tmpfile");
15       return 1;
16     }
17 
18   if (fputs ("line\n", f) == EOF)
19     {
20       perror ("fputs");
21       return 1;
22     }
23 
24   memset (obuf, 'z', sizeof obuf);
25   memset (ibuf, 'y', sizeof ibuf);
26 
27   if (fwrite (obuf, sizeof obuf, 1, f) != 1)
28     {
29       perror ("fwrite");
30       return 1;
31     }
32 
33   rewind (f);
34 
35   line = NULL;
36   linesz = 0;
37   if (getline (&line, &linesz, f) != 5)
38     {
39       perror ("getline");
40       return 1;
41     }
42   if (strcmp (line, "line\n"))
43     {
44       puts ("Lines differ.  Test FAILED!");
45       return 1;
46     }
47 
48   if (fread (ibuf, sizeof ibuf, 1, f) != 1)
49     {
50       perror ("fread");
51       return 1;
52     }
53 
54   if (memcmp (ibuf, obuf, sizeof ibuf))
55     {
56       puts ("Buffers differ.  Test FAILED!");
57       return 1;
58     }
59 
60   asprintf (&line, "\
61 GDB is free software and you are welcome to distribute copies of it\n\
62  under certain conditions; type \"show copying\" to see the conditions.\n\
63 There is absolutely no warranty for GDB; type \"show warranty\" for details.\n\
64 ");
65 
66   puts ("Test succeeded.");
67   return 0;
68 }
69 
70 #define TEST_FUNCTION do_test ()
71 #include "../test-skeleton.c"
72