On March 23, 2021, Nokia transferred the copyrights in the Plan 9 software
to the Plan 9 Foundation, which relicensed them under the MIT license.
This commit updates the Plan 9 from User Space license to reflect the
new base license. The vast majority of the contributions beyond the
base Plan 9 set were by me, many of them explicitly under an MIT license.
Those are all under the new MIT license now as well.
The port of mk to Unix was taken from Inferno via Vita Nuova and had
been made available under GPL, but Vita Nuova has relicensed Inferno
under the MIT license as well, to match the new Plan 9 license.
Michael Teichgraber contributed src/lib9/zoneinfo.c explicitly under
the Lucent Public License but has agreed to change the contribution
to the MIT license now used in the rest of the distribution.
There remain a few exceptions, most notably fonts.
See the root LICENSE file for full details.
The only mention of the Lucent Public License in the whole tree now
is in the LICENSE file, explaining the history.
getdirentries(2) has been deprecated on macOS since 10.5 (ten releases ago).
Using it requires disabling 64-bit inodes, but that in turn makes binaries
incompatible with some dynamic libraries, most notably ASAN.
At some point getdirentries(2) will actually be removed.
For both these reasons, switch to opendir/readdir.
A little clunky since we have to keep the DIR* hidden away
to preserve the int fd interfaces, but it lets us remove a bunch
of OS-specific code too.
The issue manifests in fork: POSIX fork mandates that a
fork'd process is created with a single thread. If a
multithreaded program forks, and some thread was in
malloc() when the fork() happened, then in the child
the lock will be held but there will be no thread to
release it.
We assume the system malloc() must already know how to
deal with this and is thread-safe, but it won't know about
our custom spinlock. Judging that this is no longer
necessary (the lock code was added 15 years ago) we remove
it.
Signed-off-by: Dan Cross <cross@gajendra.net>
Real disk devices should be block devices anyway.
One user reported the disksize check causing a
system reboot during vac of a tree with an "interesting"
device.
Fixes#103.
Under certain conditions it looks like frexp gets #defined
to something else on macOS during system headers,
which then breaks the declaration in libc.h.
Remote whitespace at the ends of lines.
Remove blank lines from the ends of files.
Change modes on source files so that they
are not executable.
Signed-off-by: Dan Cross <cross@gajendra.net>
GCC pointed this out with some "warning: ‘strncpy’ specified bound NUM
equals destination size [-Wstringop-truncation]" warnings.
Change-Id: Id8408b165f6e4ae82c96a77599d89f658d979b32
These make no sense and are not really needed at all.
Add a best-effort attempt to get at the gcc/clang macro
in lib9.h, but if it fails, no big deal.
Fixes#324.
As written, it is passing a rune to strchr, which likely ignores
all but the bottom 8 bits of the rune. Long-standing Plan 9 bug too.
Fixes#87.
Change-Id: I6a833373b308bed8760d6989972c7f77b4ef3838
Reviewed-on: https://plan9port-review.googlesource.com/2921
Reviewed-by: Russ Cox <rsc@swtch.com>
On some systems, the third argument of connect() and bind()
is expected to be the length of the address family instead
of the length of the sockaddr structure.
R=rsc
http://codereview.appspot.com/6489072
The function p9dialparse() returns the host as a sockaddr_storage
structure instead of a u32int, to be able to handle both IPv4
and IPv6 addresses. Because the sockaddr_storage structure also
handle port numbers and Unix path names, there is no longer
need to set them in the calling functions. However, these values
are still returned for convenience.
The sockaddr_in and sockaddr_un structures have been replaced
by sockaddr_storage to handle Unix, IPv4 and IPv6 sockets.
Names and addresses are resolved using either gethostbyname()
or getaddrinfo() functions.
The getaddrinfo() function is documented in RFC2553 and standardized
since POSIX.1-2001. It supports both IPv4 and IPv6 addresses.
The gethostbyname() function is deprecated since POSIX.1-2008.
However, some libc implementations don't handle getaddrinfo()
properly, thus we preferred to try gethostbyname() first.
I've tried to preserve most of the old code logic to prevent
from surprising or unwanted behavior.
R=rsc
http://codereview.appspot.com/6255068