annotate man/deref.c @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 /*
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 * deref.c
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 * compile command: gcc -g -o deref deref.c
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 * execute command: deref filename.texi > newfile.texi
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 * To: bob@gnu.ai.mit.edu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 * Subject: another tool
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 * Date: 18 Dec 91 16:03:13 EST (Wed)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 * From: gatech!skeeve!arnold@eddie.mit.edu (Arnold D. Robbins)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 * Here is deref.c. It turns texinfo cross references back into the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 * one argument form. It has the same limitations as fixref; one xref per
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 * line and can't cross lines. You can use it to find references that do
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 * cross a line boundary this way:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 * deref < manual > /dev/null 2>errs
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 * (This assumes bash or /bin/sh.) The file errs will have list of lines
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 * where deref could not find matching braces.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 * A gawk manual processed by deref goes through makeinfo without complaint.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 * Compile with gcc and you should be set.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 * Enjoy,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 * Arnold
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 * -----------
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 /*
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 * deref.c
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 * Make all texinfo references into the one argument form.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 * Arnold Robbins
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 * arnold@skeeve.atl.ga.us
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 * December, 1991
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 * Copyright, 1991, Arnold Robbins
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 /*
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 * LIMITATIONS:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 * One texinfo cross reference per line.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 * Cross references may not cross newlines.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 * Use of fgets for input (to be fixed).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 #include <stdio.h>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 #include <ctype.h>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 #include <errno.h>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 /* for gcc on the 3B1, delete if this gives you grief */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 extern int fclose (FILE * fp);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 extern int fprintf (FILE * fp, const char *str,...);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 extern char *strerror (int errno);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 extern char *strchr (char *cp, int ch);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 extern int strncmp (const char *s1, const char *s2, int count);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 extern int errno;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 void process (FILE * fp);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 void repair (char *line, char *ref, int toffset);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 int Errs = 0;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 char *Name = "stdin";
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 int Line = 0;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 char *Me;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 /* main --- handle arguments, global vars for errors */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 int
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 main (int argc, char **argv)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 FILE *fp;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 Me = argv[0];
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 if (argc == 1)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 process (stdin);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 else
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 for (argc--, argv++; *argv != NULL; argc--, argv++)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 if (argv[0][0] == '-' && argv[0][1] == '\0')
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 Name = "stdin";
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 Line = 0;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 process (stdin);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 else if ((fp = fopen (*argv, "r")) != NULL)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 Name = *argv;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 Line = 0;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 process (fp);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98 fclose (fp);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100 else
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 fprintf (stderr, "%s: can not open: %s\n",
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 *argv, strerror (errno));
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104 Errs++;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107 return Errs != 0;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 /* isref --- decide if we've seen a texinfo cross reference */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112 int
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113 isref (char *cp)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115 if (strncmp (cp, "@ref{", 5) == 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116 return 5;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 if (strncmp (cp, "@xref{", 6) == 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 return 6;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119 if (strncmp (cp, "@pxref{", 7) == 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120 return 7;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121 return 0;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 /* process --- read files, look for references, fix them up */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 void
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127 process (FILE * fp)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 char buf[BUFSIZ];
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130 char *cp;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131 int count;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
133 while (fgets (buf, sizeof buf, fp) != NULL)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
135 Line++;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136 cp = strchr (buf, '@');
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 if (cp == NULL)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139 fputs (buf, stdout);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140 continue;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
142 do
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
144 count = isref (cp);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
145 if (count == 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
146 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
147 cp++;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
148 cp = strchr (cp, '@');
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
149 if (cp == NULL)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
150 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
151 fputs (buf, stdout);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
152 goto next;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
153 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
154 continue;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
155 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
156 /* got one */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
157 repair (buf, cp, count);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
158 break;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
159 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
160 while (cp != NULL);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
161 next:;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
162 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
163 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
164
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
165 /* repair --- turn all texinfo cross references into the one argument form */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
166
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
167 void
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
168 repair (char *line, char *ref, int toffset)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
169 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
170 int braces = 1; /* have seen first left brace */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
171 char *cp;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
172
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
173 ref += toffset;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
174
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
175 /* output line up to and including left brace in reference */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
176 for (cp = line; cp <= ref; cp++)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
177 putchar (*cp);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
178
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
179 /* output node name */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
180 for (; *cp && *cp != '}' && *cp != ',' && *cp != '\n'; cp++)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
181 putchar (*cp);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
182
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
183 if (*cp != '}')
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
184 { /* could have been one arg xref */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
185 /* skip to matching right brace */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
186 for (; braces > 0; cp++)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
187 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
188 switch (*cp)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
189 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
190 case '@':
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
191 cp++; /* blindly skip next character */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
192 break;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
193 case '{':
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
194 braces++;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
195 break;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
196 case '}':
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
197 braces--;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
198 break;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
199 case '\n':
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
200 case '\0':
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
201 Errs++;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
202 fprintf (stderr,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
203 "%s: %s: %d: mismatched braces\n",
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
204 Me, Name, Line);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
205 goto out;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
206 default:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
207 break;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
208 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
209 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
210 out:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
211 ;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
212 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
213
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
214 putchar ('}');
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
215 if (*cp == '}')
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
216 cp++;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
217
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
218 /* now the rest of the line */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
219 for (; *cp; cp++)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
220 putchar (*cp);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
221 return;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
222 }
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
223
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
224 /* strerror --- return error string, delete if in your library */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
225
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
226 char *
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
227 strerror (int errno)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
228 {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
229 static char buf[100];
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
230 extern int sys_nerr;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
231 extern char *sys_errlist[];
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
232
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
233 if (errno < sys_nerr && errno >= 0)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
234 return sys_errlist[errno];
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
235
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
236 sprintf (buf, "unknown error %d", errno);
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
237 return buf;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
238 }