Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions libc/config/linux/aarch64/headers.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ set(TARGET_PUBLIC_HEADERS
libc.include.unistd
libc.include.wchar
libc.include.uchar
libc.include.sysexits

libc.include.sys_ioctl
# Disabled due to epoll_wait syscalls not being available on this platform.
Expand Down
1 change: 1 addition & 0 deletions libc/config/linux/x86_64/headers.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,5 @@ set(TARGET_PUBLIC_HEADERS
libc.include.sys_types
libc.include.sys_utsname
libc.include.sys_wait
libc.include.sysexits
)
10 changes: 10 additions & 0 deletions libc/include/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,16 @@ add_header_macro(
.llvm-libc-types.stdfix-types
)


add_header_macro(
sysexits
../libc/include/sysexits.yaml
sysexits.h
DEPENDS
.llvm-libc-macros.sysexits_macros
)


# TODO: This should be conditional on POSIX networking being included.
file(MAKE_DIRECTORY ${LIBC_INCLUDE_DIR}/arpa)

Expand Down
7 changes: 7 additions & 0 deletions libc/include/llvm-libc-macros/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -321,3 +321,10 @@ add_macro_header(
HDR
pthread-macros.h
)

add_macro_header(
sysexits_macros
HDR
sysexits-macros.h
)

23 changes: 23 additions & 0 deletions libc/include/llvm-libc-macros/sysexits-macros.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#ifndef SYSEXITS_MACROS_H
#define SYSEXITS_MACROS_H

#define EX_OK 0 // Successful termination
#define EX_USAGE 64 // Command line usage error
#define EX_DATAERR 65 // Data format error
#define EX_NOINPUT 66 // Cannot open input
#define EX_NOUSER 67 // Addressee unknown
#define EX_NOHOST 68 // Host name unknown
#define EX_UNAVAILABLE 69 // Service unavailable
#define EX_SOFTWARE 70 // Internal software error
#define EX_OSERR 71 // Operating system error
#define EX_OSFILE 72 // System file error
#define EX_CANTCREAT 73 // Cannot create (user) output file
#define EX_IOERR 74 // Input/output error
#define EX_TEMPFAIL 75 // Temporary failure, try again
#define EX_PROTOCOL 76 // Remote protocol error
#define EX_NOPERM 77 // Permission denied
#define EX_CONFIG 78 // Configuration error
#define EX_INTERNAL 80 // Internal error
#define EX_INVALIDARG 81 // Invalid argument
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where did you find EX_INTERNAL and EX_INVALIDARG? glibc, bionic, and musl only have up to EX_CONFIG.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question still stands; if these are from a BSD, it would be good to know which BSD adds these two new symbolic constants.


#endif // SYSEXITS_MACROS_H
17 changes: 17 additions & 0 deletions libc/include/sysexits.h.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//===-- POSIX header sysexits.h -----------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_LIBC_SYSEXITS_H
#define LLVM_LIBC_SYSEXITS_H

#include "__llvm-libc-common.h"
#include "llvm-libc-macros/sysexits-macros.h"

%%public_api()

#endif // LLVM_LIBC_SYSEXITS_H

9 changes: 9 additions & 0 deletions libc/include/sysexits.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
header: sysexits.h
header_template: sysexits.h.def
standards:
- POSIX
macros: []
types: []
enums: []
objects: []
functions: []