(server-process-filter): Don't force the authentication
[bpt/emacs.git] / lib-src / test-distrib.c
CommitLineData
b3ae7a0a
GM
1/* test-distrib.c --- testing distribution of nonprinting chars
2
92b47a4a 3 Copyright (C) 1987, 1993, 1994, 1995, 1999, 2001, 2002, 2003,
a5b68355 4 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
b3ae7a0a
GM
5
6 This file is part of GNU Emacs.
7
8 GNU Emacs is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
4a9f99bd 10 the Free Software Foundation; either version 3, or (at your option)
b3ae7a0a
GM
11 any later version.
12
13 GNU Emacs is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
6666a3c3 19 along with GNU Emacs; see the file COPYING. If not, write to the
364c38d3
LK
20 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA. */
b3ae7a0a 22
33b78bd6
RM
23#ifdef HAVE_CONFIG_H
24#include <config.h>
25#endif
26
042c85b8
JB
27#include <stdio.h>
28
af5cae05 29#ifdef HAVE_FCNTL_H
f0e8db05
DL
30#include <fcntl.h>
31#endif
32
9ee8cf9e
AS
33#ifdef HAVE_UNISTD_H
34#include <unistd.h>
35#endif
36
33b78bd6
RM
37#ifndef O_RDONLY
38#define O_RDONLY 0
39#endif
40
042c85b8
JB
41/* Break string in two parts to avoid buggy C compilers that ignore characters
42 after nulls in strings. */
43
44char string1[] = "Testing distribution of nonprinting chars:\n\
45Should be 0177: \177 Should be 0377: \377 Should be 0212: \212.\n\
46Should be 0000: ";
47
48char string2[] = ".\n\
49This file is read by the `test-distribution' program.\n\
50If you change it, you will make that program fail.\n";
51
52char buf[300];
80b2cbf2 53
042c85b8
JB
54/* Like `read' but keeps trying until it gets SIZE bytes or reaches eof. */
55int
56cool_read (fd, buf, size)
57 int fd;
58 char *buf;
59 int size;
60{
61 int num, sofar = 0;
62
63 while (1)
64 {
65 if ((num = read (fd, buf + sofar, size - sofar)) == 0)
66 return sofar;
67 else if (num < 0)
68 return num;
69 sofar += num;
70 }
71}
72
340ff9de 73int
d2d92f7a
JB
74main (argc, argv)
75 int argc;
76 char **argv;
042c85b8 77{
d2d92f7a 78 int fd;
042c85b8 79
d2d92f7a
JB
80 if (argc != 2)
81 {
82 fprintf (stderr, "Usage: %s testfile\n", argv[0]);
80e26b66 83 exit (EXIT_FAILURE);
d2d92f7a 84 }
33b78bd6 85 fd = open (argv[1], O_RDONLY);
042c85b8
JB
86 if (fd < 0)
87 {
d2d92f7a 88 perror (argv[1]);
80e26b66 89 exit (EXIT_FAILURE);
042c85b8
JB
90 }
91 if (cool_read (fd, buf, sizeof string1) != sizeof string1 ||
92 strcmp (buf, string1) ||
93 cool_read (fd, buf, sizeof string2) != sizeof string2 - 1 ||
94 strncmp (buf, string2, sizeof string2 - 1))
95 {
d2d92f7a 96 fprintf (stderr, "Data in file `%s' has been damaged.\n\
042c85b8 97Most likely this means that many nonprinting characters\n\
d2d92f7a
JB
98have been corrupted in the files of Emacs, and it will not work.\n",
99 argv[1]);
80e26b66 100 exit (EXIT_FAILURE);
042c85b8
JB
101 }
102 close (fd);
65396510 103 return EXIT_SUCCESS;
042c85b8 104}
ab5796a9
MB
105
106/* arch-tag: 3a89005d-df98-4c32-aa9f-33570e16a26a
107 (do not change this comment) */
65396510
TTN
108
109/* test-distrib.c ends here */