]> git.eshelyaron.com Git - emacs.git/commitdiff
entered into RCS
authorJim Blandy <jimb@redhat.com>
Fri, 22 May 1987 04:15:12 +0000 (04:15 +0000)
committerJim Blandy <jimb@redhat.com>
Fri, 22 May 1987 04:15:12 +0000 (04:15 +0000)
lib-src/test-distrib.c [new file with mode: 0644]

diff --git a/lib-src/test-distrib.c b/lib-src/test-distrib.c
new file mode 100644 (file)
index 0000000..e1f5be1
--- /dev/null
@@ -0,0 +1,60 @@
+#include <stdio.h>
+
+/* Break string in two parts to avoid buggy C compilers that ignore characters
+   after nulls in strings.  */
+
+char string1[] = "Testing distribution of nonprinting chars:\n\
+Should be 0177: \177 Should be 0377: \377 Should be 0212: \212.\n\
+Should be 0000: ";
+
+char string2[] = ".\n\
+This file is read by the `test-distribution' program.\n\
+If you change it, you will make that program fail.\n";
+
+char buf[300];
+  
+/* Like `read' but keeps trying until it gets SIZE bytes or reaches eof.  */
+int
+cool_read (fd, buf, size)
+     int fd;
+     char *buf;
+     int size;
+{
+  int num, sofar = 0;
+
+  while (1)
+    {
+      if ((num = read (fd, buf + sofar, size - sofar)) == 0)
+       return sofar;
+      else if (num < 0)
+       return num;
+      sofar += num;
+    }
+}
+
+main ()
+{
+  int fd = open ("testfile", 0);
+
+  if (fd < 0)
+    {
+      perror ("opening `testfile'");
+      exit (2);
+    }
+  if (cool_read (fd, buf, sizeof string1) != sizeof string1 ||
+      strcmp (buf, string1) ||
+      cool_read (fd, buf, sizeof string2) != sizeof string2 - 1 ||
+      strncmp (buf, string2, sizeof string2 - 1))
+    {
+      fprintf (stderr, "Data in file `testfile' has been damaged.\n\
+Most likely this means that many nonprinting characters\n\
+have been corrupted in the files of Emacs, and it will not work.\n");
+      exit (2);
+    }
+  close (fd);
+#ifdef VMS
+  exit (1);                    /* On VMS, success is 1.  */
+#else
+  exit (0);
+#endif
+}