annotate lib-src/test-distrib.c @ 97095:61de98ebc619

** mairix.el is an interface to mairix, a free tool for indexing and searching locally stored mail. It allows you to query mairix and display the search results with Rmail, Gnus and VM. Note that there is an existing Gnus back end, nnmairix.el, which should be used with Maildir/MH setups.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 29 Jul 2008 17:44:00 +0000
parents 3a4bc081639c
children a9f7e446141d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26083
diff changeset
1 /* test-distrib.c --- testing distribution of nonprinting chars
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26083
diff changeset
2
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
3 Copyright (C) 1987, 1993, 1994, 1995, 1999, 2001, 2002, 2003, 2004, 2005,
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
4 2006, 2007, 2008 Free Software Foundation, Inc.
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26083
diff changeset
5
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
6 This file is part of GNU Emacs.
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26083
diff changeset
7
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
8 GNU Emacs is free software: you can redistribute it and/or modify
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
9 it under the terms of the GNU General Public License as published by
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
11 (at your option) any later version.
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26083
diff changeset
12
94828
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
16 GNU General Public License for more details.
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
17
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
18 You should have received a copy of the GNU General Public License
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
3a4bc081639c Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79748
diff changeset
20
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 26083
diff changeset
21
12935
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
22 #ifdef HAVE_CONFIG_H
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
23 #include <config.h>
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
24 #endif
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
25
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #include <stdio.h>
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27
42146
7ffd5b80ef27 Fix previous change.
Pavel Janík <Pavel@Janik.cz>
parents: 42135
diff changeset
28 #ifdef HAVE_FCNTL_H
42135
dfc99f4ae55e Conditionally include fcntl.h.
Dave Love <fx@gnu.org>
parents: 36226
diff changeset
29 #include <fcntl.h>
dfc99f4ae55e Conditionally include fcntl.h.
Dave Love <fx@gnu.org>
parents: 36226
diff changeset
30 #endif
dfc99f4ae55e Conditionally include fcntl.h.
Dave Love <fx@gnu.org>
parents: 36226
diff changeset
31
25447
76e2d539ecad Include <unistd.h> if available.
Andreas Schwab <schwab@suse.de>
parents: 12976
diff changeset
32 #ifdef HAVE_UNISTD_H
76e2d539ecad Include <unistd.h> if available.
Andreas Schwab <schwab@suse.de>
parents: 12976
diff changeset
33 #include <unistd.h>
76e2d539ecad Include <unistd.h> if available.
Andreas Schwab <schwab@suse.de>
parents: 12976
diff changeset
34 #endif
76e2d539ecad Include <unistd.h> if available.
Andreas Schwab <schwab@suse.de>
parents: 12976
diff changeset
35
12935
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
36 #ifndef O_RDONLY
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
37 #define O_RDONLY 0
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
38 #endif
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
39
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 /* Break string in two parts to avoid buggy C compilers that ignore characters
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 after nulls in strings. */
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 char string1[] = "Testing distribution of nonprinting chars:\n\
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 Should be 0177: \177 Should be 0377: \377 Should be 0212: \212.\n\
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 Should be 0000: ";
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 char string2[] = ".\n\
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 This file is read by the `test-distribution' program.\n\
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 If you change it, you will make that program fail.\n";
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 char buf[300];
42439
d8a417105504 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 42259
diff changeset
52
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 /* Like `read' but keeps trying until it gets SIZE bytes or reaches eof. */
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 int
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 cool_read (fd, buf, size)
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 int fd;
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 char *buf;
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 int size;
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 {
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 int num, sofar = 0;
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 while (1)
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 {
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 if ((num = read (fd, buf + sofar, size - sofar)) == 0)
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 return sofar;
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 else if (num < 0)
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 return num;
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 sofar += num;
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 }
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 }
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
9491
dd3b83e4ceb0 Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents: 2814
diff changeset
72 int
2814
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
73 main (argc, argv)
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
74 int argc;
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
75 char **argv;
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 {
2814
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
77 int fd;
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78
2814
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
79 if (argc != 2)
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
80 {
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
81 fprintf (stderr, "Usage: %s testfile\n", argv[0]);
55500
70c5b89b216b (main): For failing cases, exit with `EXIT_FAILURE'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 55442
diff changeset
82 exit (EXIT_FAILURE);
2814
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
83 }
12935
f65e672e038e [HAVE_CONFIG_H]: Include config.h.
Roland McGrath <roland@gnu.org>
parents: 9491
diff changeset
84 fd = open (argv[1], O_RDONLY);
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 if (fd < 0)
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 {
2814
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
87 perror (argv[1]);
55500
70c5b89b216b (main): For failing cases, exit with `EXIT_FAILURE'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 55442
diff changeset
88 exit (EXIT_FAILURE);
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 }
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 if (cool_read (fd, buf, sizeof string1) != sizeof string1 ||
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 strcmp (buf, string1) ||
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 cool_read (fd, buf, sizeof string2) != sizeof string2 - 1 ||
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 strncmp (buf, string2, sizeof string2 - 1))
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 {
2814
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
95 fprintf (stderr, "Data in file `%s' has been damaged.\n\
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 Most likely this means that many nonprinting characters\n\
2814
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
97 have been corrupted in the files of Emacs, and it will not work.\n",
0da5b58e98ed Install patches from David J. Mackenzie to make the srcdir option
Jim Blandy <jimb@redhat.com>
parents: 10
diff changeset
98 argv[1]);
55500
70c5b89b216b (main): For failing cases, exit with `EXIT_FAILURE'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 55442
diff changeset
99 exit (EXIT_FAILURE);
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 }
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 close (fd);
55442
a47704955f8d Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
102 return EXIT_SUCCESS;
10
445291a2fb96 entered into RCS
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 42439
diff changeset
104
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 42439
diff changeset
105 /* arch-tag: 3a89005d-df98-4c32-aa9f-33570e16a26a
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 42439
diff changeset
106 (do not change this comment) */
55442
a47704955f8d Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
107
a47704955f8d Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 52401
diff changeset
108 /* test-distrib.c ends here */