Rewrote ID frobnication to do the right thing.
[glibc/history.git] / sysdeps / mach / hurd / errlist.awk
bloba06ec88af7aab8b58881ea0bc86b36cf71af876b
1 # Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
2 # This file is part of the GNU C Library.
4 # The GNU C Library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Library General Public License
6 # as published by the Free Software Foundation; either version 2 of
7 # the License, or (at your option) any later version.
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
12 # Library General Public License for more details.
14 # You should have received a copy of the GNU Library General Public
15 # License along with the GNU C Library; see the file COPYING.LIB. If
16 # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 # Cambridge, MA 02139, USA.
19 # errno.texinfo contains lines like:
20 # @comment errno.h
21 # @comment POSIX.1: Function not implemented
22 # @deftypevr Macro int ENOSYS
23 # @comment errno 78
25 BEGIN {
26 print "/* This file is generated from errno.texi by errlist.awk. */"
27 print "";
28 print "#ifndef HAVE_GNU_LD"
29 print "#define _sys_nerr sys_nerr"
30 print "#define _sys_errlist sys_errlist"
31 print "#endif"
32 print ""
33 print "const char *_sys_errlist[] =";
34 print " {";
35 maxerrno = 0;
36 print " \"Success\","
38 $1 == "@comment" && $2 == "errno.h" { errnoh=1; next }
39 errnoh == 1 && $1 == "@comment" \
41 ++errnoh;
42 etext = $3;
43 for (i = 4; i <= NF; ++i)
44 etext = etext " " $i;
45 next;
47 errnoh == 2 && $1 == "@deftypevr" && $2 == "Macro" && $3 == "int" \
49 e = $4; errnoh++; next;
51 errnoh == 3 && $1 == "@comment" && $2 == "errno" \
53 errno = $3 + 0;
54 msgs[errno] = etext;
55 names[errno] = e;
56 if (errno > maxerrno) maxerrno = errno;
57 next;
59 { errnoh=0 }
60 END {
61 for (i = 1; i <= maxerrno; ++i)
63 if (names[i] == "")
64 print " \"Reserved error " i "\",";
65 else
66 printf "%-40s/* %d = %s */\n", " \"" msgs[i] "\",", i, names[i];
68 print " };";
69 print "";
70 print "#include <errno.h>";
71 printf "#if _HURD_ERRNOS != %d\n", maxerrno+1;
72 print "#error errlist/errnos generation bug";
73 print "#endif"
74 printf "const int _sys_nerr = %d;\n", maxerrno+1;
75 print "weak_alias (_sys_errlist, sys_errlist)"
76 print "weak_alias (_sys_nerr, sys_nerr)"