Fix getpeerucred and ucred_get
[kopensolaris-gnu/glibc.git] / stdio-common / tst-ungetc.c
index 67c45d4..44cf6a6 100644 (file)
@@ -1,7 +1,9 @@
 /* Test for ungetc bugs.  */
 
 #include <stdio.h>
+#include <unistd.h>
 
+#undef assert
 #define assert(x) \
   if (!(x)) \
     { \
@@ -17,21 +19,40 @@ main (int argc, char *argv[])
   FILE *fp = NULL;
   int retval = 0;
   int c;
+  char buffer[64];
 
   name = tmpnam (NULL);
   fp = fopen (name, "w");
   assert (fp != NULL)
-  fputs ("bl", fp);
+  fputs ("bla", fp);
   fclose (fp);
   fp = NULL;
 
   fp = fopen (name, "r");
-  assert (fp != NULL)
-  assert (getc (fp) != EOF);
-  assert ((c = getc (fp)) != EOF);
+  assert (fp != NULL);
+  assert (ungetc ('z', fp) == 'z');
+  assert (getc (fp) == 'z');
+  assert (getc (fp) == 'b');
+  assert (getc (fp) == 'l');
+  assert (ungetc ('m', fp) == 'm');
+  assert (getc (fp) == 'm');
+  assert ((c = getc (fp)) == 'a');
   assert (getc (fp) == EOF);
   assert (ungetc (c, fp) == c);
   assert (feof (fp) == 0);
+  assert (getc (fp) == c);
+  assert (getc (fp) == EOF);
+  fclose (fp);
+  fp = NULL;
+
+  fp = fopen (name, "r");
+  assert (fp != NULL);
+  assert (getc (fp) == 'b');
+  assert (getc (fp) == 'l');
+  assert (ungetc ('b', fp) == 'b');
+  assert (fread (buffer, 1, 64, fp) == 2);
+  assert (buffer[0] == 'b');
+  assert (buffer[1] == 'a');
 
 the_end:
   if (fp != NULL)