]>
Commit | Line | Data |
---|---|---|
bfff8b1b | 1 | # Copyright (C) 1991-2017 Free Software Foundation, Inc. |
28f540f4 RM |
2 | # This file is part of the GNU C Library. |
3 | ||
4 | # The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
5 | # modify it under the terms of the GNU Lesser General Public |
6 | # License as published by the Free Software Foundation; either | |
7 | # version 2.1 of the License, or (at your option) any later version. | |
28f540f4 RM |
8 | |
9 | # The GNU C Library is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 12 | # Lesser General Public License for more details. |
28f540f4 | 13 | |
41bdb6e2 | 14 | # You should have received a copy of the GNU Lesser General Public |
59ba27a6 PE |
15 | # License along with the GNU C Library; if not, see |
16 | # <http://www.gnu.org/licenses/>. | |
28f540f4 | 17 | |
22d57dd3 | 18 | # errno.texi contains lines like: |
28f540f4 RM |
19 | # @comment errno.h |
20 | # @comment POSIX.1: Function not implemented | |
21 | # @deftypevr Macro int ENOSYS | |
22 | # @comment errno 78 | |
a78b0f18 RM |
23 | # Descriptive paragraph... |
24 | # @end deftypevr | |
28f540f4 RM |
25 | |
26 | BEGIN { | |
c0d9fffd RM |
27 | |
28 | # Here we list the E* names that might be duplicate names for the | |
29 | # same integer value on some systems. This causes the code below | |
30 | # to generate ``#if defined (ALIAS) && ALIAS != ORIGINAL'' in the code, | |
31 | # so the output does not presume that these are in fact aliases. | |
32 | # We list here all the known potential cases on any system, | |
33 | # so that the C source we produce will do the right thing based | |
34 | # on the actual #define'd values it's compiled with. | |
35 | alias["EWOULDBLOCK"]= "EAGAIN"; | |
36 | alias["EDEADLOCK"] = "EDEADLK"; | |
37 | alias["ENOTSUP"] = "EOPNOTSUPP"; | |
28160ffb | 38 | |
28f540f4 RM |
39 | print "/* This file is generated from errno.texi by errlist.awk. */" |
40 | print ""; | |
b25ae9c6 | 41 | print "#include <errno.h>"; |
4360eafd | 42 | print "#include <libintl.h>"; |
b25ae9c6 | 43 | print ""; |
5aa8ff62 UD |
44 | print "#ifndef ERR_REMAP"; |
45 | print "# define ERR_REMAP(n) n"; | |
e1586792 UD |
46 | print "#endif"; |
47 | print ""; | |
4022d8ed | 48 | |
4b359a27 RM |
49 | print "#if !defined EMIT_ERR_MAX && !defined ERRLIST_NO_COMPAT"; |
50 | print "# include <errlist-compat.h>"; | |
51 | print "#endif"; | |
52 | print "#ifdef ERR_MAX"; | |
53 | print "# define ERRLIST_SIZE ERR_MAX + 1"; | |
54 | print "#else" | |
eb1ed03d | 55 | print "# define ERR_MAX 0"; |
4b359a27 RM |
56 | print "# define ERRLIST_SIZE"; |
57 | print "#endif"; | |
58 | ||
59 | print "const char *const _sys_errlist_internal[ERRLIST_SIZE] ="; | |
28f540f4 | 60 | print " {"; |
b25ae9c6 | 61 | print " [0] = N_(\"Success\")," |
28f540f4 | 62 | } |
4022d8ed | 63 | |
28f540f4 RM |
64 | $1 == "@comment" && $2 == "errno.h" { errnoh=1; next } |
65 | errnoh == 1 && $1 == "@comment" \ | |
66 | { | |
67 | ++errnoh; | |
68 | etext = $3; | |
69 | for (i = 4; i <= NF; ++i) | |
70 | etext = etext " " $i; | |
71 | next; | |
72 | } | |
73 | errnoh == 2 && $1 == "@deftypevr" && $2 == "Macro" && $3 == "int" \ | |
74 | { | |
75 | e = $4; errnoh++; next; | |
76 | } | |
77 | errnoh == 3 && $1 == "@comment" && $2 == "errno" \ | |
78 | { | |
79 | errno = $3 + 0; | |
28160ffb RM |
80 | if (alias[e]) |
81 | printf "#if defined (%s) && %s != %s\n", e, e, alias[e]; | |
b25ae9c6 RM |
82 | else |
83 | printf "#ifdef %s\n", e; | |
a78b0f18 RM |
84 | errnoh = 4; |
85 | desc=""; | |
86 | next; | |
87 | } | |
88 | errnoh == 4 && $1 == "@end" && $2 == "deftypevr" \ | |
89 | { | |
90 | printf "/*%s */\n", desc; | |
5aa8ff62 | 91 | printf " [ERR_REMAP (%s)] = N_(\"%s\"),\n", e, etext; |
4022d8ed RM |
92 | printf "# if %s > ERR_MAX\n", e; |
93 | print "# undef ERR_MAX"; | |
94 | printf "# define ERR_MAX %s\n", e; | |
95 | print "# endif"; | |
b25ae9c6 | 96 | print "#endif"; |
a78b0f18 | 97 | errnoh = 0; |
28f540f4 RM |
98 | next; |
99 | } | |
a78b0f18 RM |
100 | errnoh == 4 \ |
101 | { | |
102 | # This magic tag in C comments gets them copied into libc.pot. | |
4902d2c3 | 103 | desc = desc "\nTRANS" ($0 != "" ? " " : "") $0; next |
a78b0f18 | 104 | } |
28f540f4 RM |
105 | { errnoh=0 } |
106 | END { | |
28f540f4 RM |
107 | print " };"; |
108 | print ""; | |
2103c260 RM |
109 | print "#define NERR \\"; |
110 | print " (sizeof _sys_errlist_internal / sizeof _sys_errlist_internal [0])"; | |
111 | print "const int _sys_nerr_internal = NERR;" | |
4022d8ed | 112 | print ""; |
4f41c682 | 113 | print "#if IS_IN (libc) && !defined ERRLIST_NO_COMPAT"; |
5fe14d96 | 114 | print "# include <errlist-compat.c>"; |
5aa8ff62 | 115 | print "#endif"; |
4022d8ed RM |
116 | print ""; |
117 | print "#ifdef EMIT_ERR_MAX"; | |
118 | print "void dummy (void)" | |
119 | print "{ asm volatile (\" @@@ %0 @@@ \" : : \"i\" (ERR_REMAP (ERR_MAX))); }" | |
e1586792 | 120 | print "#endif"; |
4022d8ed | 121 | } |