Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Decent semantic header separation is hard. It's always
an ongoing process. Here socket.h always included webipc.h
for listen(), and webipc.h always included djbunix.h for
socket_internal() and socketpair_internal(). That's ugh.
Just move all the socket stuff into one socket header.
Of course, djbunix.h is still needed most of the time for
fd_close() and other operations on fds, but those are
generic anyway.
Also, O_CLOEXEC exists everywhere now, so we can use it as well
as O_NONBLOCK instead of redefining the flags in djbunix.h.
|
|
|
|
|
|
|
|
flock() doesn't have a way to test for a lock without taking it.
lockf() doesn't have shared locks.
The only way to have both is fcntl(). So I rewrote all the
locking stuff around fcntl(), and used the opportunity to change
the interface.
The point of changing the interface is to stop having to bother
with the old one, so to hell with compatibility, let's just do a
major bump.
|
|
|
|
|
|
|
|
|
|
- pathexec_run is now called exec_ae
a for provided file name (default: argv[0])
e for provided envp (default: environ)
- pathexec is now called mexec. m for merge environment. Option letters are:
a for provided file name (default: argv[0])
e for provided envp (default: environ)
f for provided envp *and* length of the envp
m for provided modif string plus its length (the length is always needed
because the modifs are null-terminated)
n for provided modif string, length *and* number of modifs
- functions have a foo0 version for _exit(0) when argv[0] is null
- functions have a xfoo version to die if the exec fails
- and a xfoo0
- Compatibility #defines and #includes are there until the next major bump
|
|
|
|
|
|
|
|
|
|
|
|
The goal is to make late channel creation easy, as opposed to
textclient which always creates a new channel at start time.
This commit also moves posixishard.h inclusions as late as possible.
|
|
|
|
|
|
|
|
void ** does not exist: the address of a generic pointer is not
properly defined (different pointer types may have different
representations). So, alloc_realloc cannot exist as is without UB.
Fortunately, it's not supposed to be used in the skalibs programming
style, and skalibs itself only uses it in two places
(stralloc_ready_tuned and stralloc_shrink) where the pointer is a
char *.
So we just fix the UB by making alloc_realloc() take a char **,
and it's only defined for that pointer type.
Nothing to see here folks, nothing happened at all.
|
|
|
|
|
|
This is arguably a bugfix, since selfpipe without signalfd
relies on signals being actually delivered, and a process may
have inherited a nonempty sigprocmask.
Also use SIG_BLOCK instead of SIG_SETMASK when using
selfpipe_trapset() with signalfd, because we shouldn't unblock
signals that may have previously been blocked. This is also
arguably a bugfix.
This commit is essential for using the version of s6-linux-init
that blocks SIGINT before disablecad on kernels without signalfd.
Without it, SIGINT never gets unblocked, so it's never delivered
to s6-svscan.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__GLIBC__ and similar ftms are not defined in the compiler, but
in features.h, which isn't POSIX so cannot be included, and
standard headers can't be included either because nonposix.h
defines ftms that must exist *prior to* std headers inclusion.
The kernel ftms, however, are defined by the compiler, so we can
use them.
|
|
|
|
|
|
|
|
|
|
Remaining clr:
emptyregex: can be safely guessed to no
nullispointer: can't be safely guessed, but do we need the test?
devurandom: can't be safely guessed
malloc0: can more or less be safely guessed to no
|
|
|
|
|
|
|
|
* --enable-clock and --enable-monotonic are gone
* tain_sysclock() has been renamed tain_wallclock_read()
* tain_wallclock_read() reads from CLOCK_REALTIME (or gettimeofday())
* tain_clockmon[_init]() have been renamed to tain_stopwatch_[read|init]()
and now accept a monotonic clock name as an extra argument
* tain_now() points to the system (wall) clock by default
* tain_now_set_[stopwatch|wallclock]() can be used to switch
Now to make a pass on all skarnet.org programs and add a
tain_now_set_stopwatch() call everywhere needed... >.>
|
|
|