about summary refs log tree commit diff
path: root/stdlib/make-errno-constants.awk
blob: 32344dca9574250760896800e3c366861b017173 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Copyright (C) 2017 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.

# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.

# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <http://www.gnu.org/licenses/>.

# Generate errno_constants.pysym from errno.texi.
# errno.texi contains lines like:
# @errno{ENOSYS, 123, Function not implemented}
# The number is only relevant for the Hurd.

BEGIN {
    print "#include <errno.h>"
    print ""
    print "-- Errno constants"

    # Some error constants do not exist on all supported operating systems.
    # FIXME: Encode this information in errno.texi.
    ## (Sometimes) two names for the same number
    optional["EDEADLOCK"]	= 1
    optional["EDEADLK"]		= 1
    optional["EOPNOTSUPP"]	= 1
    optional["ENOTSUP"]		= 1
    optional["EWOULDBLOCK"]	= 1
    optional["EAGAIN"]		= 1
    ## BSD-specific
    optional["EAUTH"]		= 1
    optional["EBADRPC"]		= 1
    optional["EFTYPE"]		= 1
    optional["ENEEDAUTH"]	= 1
    optional["EPROCLIM"]	= 1
    optional["EPROCUNAVAIL"]	= 1
    optional["EPROGMISMATCH"]	= 1
    optional["EPROGUNAVAIL"]	= 1
    optional["ERPCMISMATCH"]	= 1
    ## GNU-specific
    optional["EBACKGROUND"]	= 1
    optional["ED"]		= 1
    optional["EDIED"]		= 1
    optional["EGRATUITOUS"]	= 1
    optional["EGREGIOUS"]	= 1
    optional["EIEIO"]		= 1
}

/^@errno\{/ {
    e = substr($1, 8, length($1)-8)
    if (e in optional)
      {
	print "#ifdef", e
	print e
	print "#endif"
      }
    else
	print e
}