Previously, we included all of `<locale.h>` in order to get `locale_t`.
This commit separates it into a `<bits/locale-t.h>` header (generated by
cbindgen) to better deal with this.
Fish only requires BSHELL. The constants are implementation specific so
this header will evolve as needed.
Cbindgen doesn't emit defines for strings (even CStrs) so I only
provided what's needed for Fish in a C header for now with the ideal
implementation, in Rust, unbuilt.
Linux's syslog is a local socket, so this uses the recent UDS work.
* Most of redox.rs is refactored into mod.rs now which has all of the C
facing functions and consts.
* I wrapped the global logger in a Mutex instead of a RwLock. The logger
is almost always locked for writing so a Mutex is simpler as RwLock
provides no benefits.
* I implemented LOG_PERROR which also prints errors to stderr as well as
the log.
* Syslog should be sys/syslog.h with syslog.h as an alias (the
original code only had syslog.h).
This was triggered by gcc for some reason It included sys/types.h and
assumed sys/select.h to be there. And that seams to be the case in musl.
The problem with relibc here is that sys/types.h is are part of relibc
"include/*.h" files, while sys/select.h is generated by cbindgen. That
makes it impossible to #include select.h in types.h epsecially that
there are files like fcntl.c that uses types.h. They would complain
about missing headers. I fixed this by renaming sys/types.h to
sys/types_internal.h and then generating types.h using cbindgen as well
except for that. however fcntl and dlmalloc can include types_internal
instead of types.h
This patch creates wctype.h and impelementat two functions
that belong to that header file towupper and towlower. These
functions are building blocks for wcscasecmp and wcsncasecmp
which are utilized by binutils.
The implementation for towlower and towupper seams to be complex
so this implementation is mimicking that of musl libc
This patch implements sys/user.h file that works for both x86_64 as well
as aarch64. This include file is used by sys/procfs.h which is needed
dependency for binutils. There is bug in this patch in aarch64 implementation
which is the lack of f128 implementation in rust, thus we can't create cbinding
for long double.