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