diff options
| author | Jim Blandy | 1987-05-22 04:15:12 +0000 |
|---|---|---|
| committer | Jim Blandy | 1987-05-22 04:15:12 +0000 |
| commit | 042c85b84fcc22b02025bdc6d9b2fe5152e5ae48 (patch) | |
| tree | 3aa6e333c8598084bea995a2291b655beca5a208 /lib-src | |
| parent | 8523fe3bc29c8a6157608a6f61d00630a77862b8 (diff) | |
| download | emacs-042c85b84fcc22b02025bdc6d9b2fe5152e5ae48.tar.gz emacs-042c85b84fcc22b02025bdc6d9b2fe5152e5ae48.zip | |
entered into RCS
Diffstat (limited to 'lib-src')
| -rw-r--r-- | lib-src/test-distrib.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib-src/test-distrib.c b/lib-src/test-distrib.c new file mode 100644 index 00000000000..e1f5be11861 --- /dev/null +++ b/lib-src/test-distrib.c | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | #include <stdio.h> | ||
| 2 | |||
| 3 | /* Break string in two parts to avoid buggy C compilers that ignore characters | ||
| 4 | after nulls in strings. */ | ||
| 5 | |||
| 6 | char string1[] = "Testing distribution of nonprinting chars:\n\ | ||
| 7 | Should be 0177: \177 Should be 0377: \377 Should be 0212: \212.\n\ | ||
| 8 | Should be 0000: "; | ||
| 9 | |||
| 10 | char string2[] = ".\n\ | ||
| 11 | This file is read by the `test-distribution' program.\n\ | ||
| 12 | If you change it, you will make that program fail.\n"; | ||
| 13 | |||
| 14 | char buf[300]; | ||
| 15 | |||
| 16 | /* Like `read' but keeps trying until it gets SIZE bytes or reaches eof. */ | ||
| 17 | int | ||
| 18 | cool_read (fd, buf, size) | ||
| 19 | int fd; | ||
| 20 | char *buf; | ||
| 21 | int size; | ||
| 22 | { | ||
| 23 | int num, sofar = 0; | ||
| 24 | |||
| 25 | while (1) | ||
| 26 | { | ||
| 27 | if ((num = read (fd, buf + sofar, size - sofar)) == 0) | ||
| 28 | return sofar; | ||
| 29 | else if (num < 0) | ||
| 30 | return num; | ||
| 31 | sofar += num; | ||
| 32 | } | ||
| 33 | } | ||
| 34 | |||
| 35 | main () | ||
| 36 | { | ||
| 37 | int fd = open ("testfile", 0); | ||
| 38 | |||
| 39 | if (fd < 0) | ||
| 40 | { | ||
| 41 | perror ("opening `testfile'"); | ||
| 42 | exit (2); | ||
| 43 | } | ||
| 44 | if (cool_read (fd, buf, sizeof string1) != sizeof string1 || | ||
| 45 | strcmp (buf, string1) || | ||
| 46 | cool_read (fd, buf, sizeof string2) != sizeof string2 - 1 || | ||
| 47 | strncmp (buf, string2, sizeof string2 - 1)) | ||
| 48 | { | ||
| 49 | fprintf (stderr, "Data in file `testfile' has been damaged.\n\ | ||
| 50 | Most likely this means that many nonprinting characters\n\ | ||
| 51 | have been corrupted in the files of Emacs, and it will not work.\n"); | ||
| 52 | exit (2); | ||
| 53 | } | ||
| 54 | close (fd); | ||
| 55 | #ifdef VMS | ||
| 56 | exit (1); /* On VMS, success is 1. */ | ||
| 57 | #else | ||
| 58 | exit (0); | ||
| 59 | #endif | ||
| 60 | } | ||