mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 01:13:30 +00:00
tools/generate_errno_name:
Use a secondary switch to handle errno names that may be defined to
the same value as other names.
runtime/mercury_errno_name.c:
Regenerate this file.
216 lines
2.4 KiB
Bash
Executable File
216 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# This generates runtime/mercury_errno_name.c
|
|
#
|
|
set -eu
|
|
|
|
# This list is taken from:
|
|
# - Cosmopolitan libc
|
|
# https://github.com/jart/cosmopolitan/blob/master/libc/sysv/consts.sh
|
|
# - moreutils `errno -l' output on Linux
|
|
#
|
|
names="
|
|
ENOSYS
|
|
EPERM
|
|
ENOENT
|
|
ESRCH
|
|
EINTR
|
|
EIO
|
|
ENXIO
|
|
E2BIG
|
|
ENOEXEC
|
|
EBADF
|
|
ECHILD
|
|
EAGAIN
|
|
ENOMEM
|
|
EACCES
|
|
EFAULT
|
|
ENOTBLK
|
|
EBUSY
|
|
EEXIST
|
|
EXDEV
|
|
ENODEV
|
|
ENOTDIR
|
|
EISDIR
|
|
EINVAL
|
|
ENFILE
|
|
EMFILE
|
|
ENOTTY
|
|
ETXTBSY
|
|
EFBIG
|
|
ENOSPC
|
|
EDQUOT
|
|
ESPIPE
|
|
EROFS
|
|
EMLINK
|
|
EPIPE
|
|
EDOM
|
|
ERANGE
|
|
EDEADLK
|
|
ENAMETOOLONG
|
|
ENOLCK
|
|
ELOOP
|
|
ENOMSG
|
|
EIDRM
|
|
ETIME
|
|
EPROTO
|
|
EOVERFLOW
|
|
EILSEQ
|
|
EUSERS
|
|
ENOTSOCK
|
|
EDESTADDRREQ
|
|
EMSGSIZE
|
|
EPROTOTYPE
|
|
ENOPROTOOPT
|
|
EPROTONOSUPPORT
|
|
ESOCKTNOSUPPORT
|
|
EOPNOTSUPP
|
|
EPFNOSUPPORT
|
|
EAFNOSUPPORT
|
|
EADDRINUSE
|
|
EADDRNOTAVAIL
|
|
ENETDOWN
|
|
ENETUNREACH
|
|
ENETRESET
|
|
ECONNABORTED
|
|
ECONNRESET
|
|
ENOBUFS
|
|
EISCONN
|
|
ENOTCONN
|
|
ESHUTDOWN
|
|
ETOOMANYREFS
|
|
ETIMEDOUT
|
|
ECONNREFUSED
|
|
EHOSTDOWN
|
|
EHOSTUNREACH
|
|
EALREADY
|
|
EINPROGRESS
|
|
ESTALE
|
|
EREMOTE
|
|
EBADRPC
|
|
ERPCMISMATCH
|
|
EPROGUNAVAIL
|
|
EPROGMISMATCH
|
|
EPROCUNAVAIL
|
|
EFTYPE
|
|
EAUTH
|
|
ENEEDAUTH
|
|
EPROCLIM
|
|
ENOATTR
|
|
EPWROFF
|
|
EDEVERR
|
|
EBADEXEC
|
|
EBADARCH
|
|
ESHLIBVERS
|
|
EBADMACHO
|
|
ENOPOLICY
|
|
EBADMSG
|
|
ECANCELED
|
|
EOWNERDEAD
|
|
ENOTRECOVERABLE
|
|
ENONET
|
|
ERESTART
|
|
ENODATA
|
|
ENOSR
|
|
ENOSTR
|
|
EMULTIHOP
|
|
ENOLINK
|
|
ENOMEDIUM
|
|
EMEDIUMTYPE
|
|
EBADFD
|
|
ECHRNG
|
|
EL2NSYNC
|
|
EL3HLT
|
|
EL3RST
|
|
ELNRNG
|
|
EUNATCH
|
|
ENOCSI
|
|
EL2HLT
|
|
EBADE
|
|
EBADR
|
|
EXFULL
|
|
ENOANO
|
|
EBADRQC
|
|
EBADSLT
|
|
ENOPKG
|
|
EADV
|
|
ESRMNT
|
|
ECOMM
|
|
EDOTDOT
|
|
ENOTUNIQ
|
|
EREMCHG
|
|
ELIBACC
|
|
ELIBBAD
|
|
ELIBSCN
|
|
ELIBMAX
|
|
ELIBEXEC
|
|
ESTRPIPE
|
|
EUCLEAN
|
|
ENOTNAM
|
|
ENAVAIL
|
|
EISNAM
|
|
EREMOTEIO
|
|
ENOKEY
|
|
EKEYEXPIRED
|
|
EKEYREVOKED
|
|
EKEYREJECTED
|
|
ERFKILL
|
|
EHWPOISON
|
|
EBFONT
|
|
"
|
|
|
|
# Potential aliases:
|
|
# - EWOULDBLOCK should be the same as EAGAIN
|
|
# - EDEADLOCK should be the same as EDEADLK
|
|
# - ENOTSUP may be the same as EOPNOTSUPP on some platforms
|
|
# - ENOTEMPTY may be the same as EEXIST on some platforms
|
|
possible_aliases="
|
|
EWOULDBLOCK
|
|
EDEADLOCK
|
|
ENOTSUP
|
|
ENOTEMPTY
|
|
"
|
|
|
|
cat <<EOF
|
|
// vim: ts=4 sw=4 expandtab ft=c
|
|
|
|
// Copyright (C) 2022, 2025 The Mercury team.
|
|
// This file is distributed under the terms specified in COPYING.LIB.
|
|
|
|
// Generated by generate_errno_name.
|
|
|
|
#include <errno.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "mercury_errno_name.h"
|
|
|
|
const char *
|
|
MR_errno_name(int errnum)
|
|
{
|
|
switch (errnum) {
|
|
EOF
|
|
|
|
for name in $names ; do
|
|
echo "#ifdef $name"
|
|
echo " case $name: return \"$name\";"
|
|
echo "#endif"
|
|
done
|
|
|
|
cat <<EOF
|
|
default:
|
|
switch (errnum) {
|
|
EOF
|
|
|
|
for name in $possible_aliases ; do
|
|
echo "#ifdef $name"
|
|
echo " case $name: return \"$name\";"
|
|
echo "#endif"
|
|
done
|
|
|
|
cat <<EOF
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
EOF
|