+++ /dev/null
-diff -ru nbsdsrc/src/lib/libc/Makefile lib/nbsd_libc/Makefile
---- nbsdsrc/src/lib/libc/Makefile
-+++ lib/nbsd_libc/Makefile
-@@ -17,6 +17,9 @@
- # The Hesiod functions are always in libc. To choose that getpwent() and friends
- # actually call the Hesiod functions, put -DHESIOD on the CPPFLAGS line below.
-
-+.if defined(__MINIX)
-+.include "minix-config.inc"
-+.endif
- .include "Makefile.inc"
-
- LIB= c
-@@ -41,6 +44,7 @@
- mv -f assym.h.tmp assym.h
- .endif
-
-+.if !defined(__MINIX)
- # The following controls how to build compatibility code for old NetBSD
- # binaries. If BUILDCOLD is yes, then we build a separate library; otherwise
- # we include the code in libc.
-@@ -52,6 +56,9 @@
- COMPATDIR=${.CURDIR}/compat
- .include "${.CURDIR}/compat/Makefile.inc"
- .endif
-+.else
-+BUILDCOLD= no
-+.endif
-
- .include "${.CURDIR}/../../common/lib/libc/Makefile.inc"
- .include "${.CURDIR}/atomic/Makefile.inc"
-@@ -64,7 +71,11 @@
- .include "${.CURDIR}/dlfcn/Makefile.inc"
- .include "${.CURDIR}/gdtoa/Makefile.inc"
- .include "${.CURDIR}/gen/Makefile.inc"
-+.if defined(__MINIX)
-+# gmon needs profil()
-+.else
- .include "${.CURDIR}/gmon/Makefile.inc"
-+.endif
- .include "${.CURDIR}/hash/Makefile.inc"
- .include "${.CURDIR}/iconv/Makefile.inc"
- .include "${.CURDIR}/inet/Makefile.inc"
-@@ -84,7 +95,11 @@
- .include "${.CURDIR}/regex/Makefile.inc"
- .endif
- .include "${.CURDIR}/resolv/Makefile.inc"
-+.if defined(__MINIX)
-+# RPC needs pollts() and a reserved port allocator.
-+.else
- .include "${.CURDIR}/rpc/Makefile.inc"
-+.endif
- .include "${.CURDIR}/ssp/Makefile.inc"
- .include "${.CURDIR}/stdio/Makefile.inc"
- .include "${.CURDIR}/stdlib/Makefile.inc"
-@@ -92,7 +107,11 @@
- .include "${.CURDIR}/termios/Makefile.inc"
- .include "${.CURDIR}/thread-stub/Makefile.inc"
- .include "${.CURDIR}/time/Makefile.inc"
-+.if defined(__MINIX)
-+.include "${.CURDIR}/sys-minix/Makefile.inc"
-+.else
- .include "${.CURDIR}/sys/Makefile.inc"
-+.endif
- .include "${.CURDIR}/uuid/Makefile.inc"
- .if (${MKYP} != "no")
- .include "${.CURDIR}/yp/Makefile.inc"
-@@ -121,7 +140,11 @@
- NLS= C.msg Pig.msg ca.msg cs.msg de.msg es.msg fi.msg fr.msg nl.msg \
- no.msg pl.msg sk.msg sv.msg
-
-+.if defined(__MINIX)
-+realall:
-+.else
- realall: tags
-+.endif
- tags: ${.OBJDIR}/tags
- ${.OBJDIR}/tags: ${SRCS}
- ${_MKTARGET_CREATE}
-@@ -130,9 +153,11 @@
- sed "s;\([^:]*\):\([^(]*\)(\([^, )]*\)\(.*\);\3 \1 /^\2(\3\4$$/;" \
- >> ${.TARGET}; sort -o ${.TARGET} ${.TARGET}
-
-+.if !defined(__MINIX)
- FILES= ${.OBJDIR}/tags
- FILESNAME= libc.tags
- FILESDIR= /var/db
-+.endif
-
-
- # workaround for I18N stuffs: build singlebyte setlocale() for libc.a,
-@@ -146,4 +171,8 @@
-
- # force the dynamic linker to initialize libc first
- SHLIB_SHFLAGS+= -Wl,-z,initfirst
-+
-+.include <bsd.own.mk>
-+SUBDIR+= pkgconfig
-+.include <bsd.subdir.mk>
-
-diff -ru nbsdsrc/src/lib/libc/Makefile.inc lib/nbsd_libc/Makefile.inc
---- nbsdsrc/src/lib/libc/Makefile.inc
-+++ lib/nbsd_libc/Makefile.inc
-@@ -19,14 +19,22 @@
-
- USE_FORT?= yes
-
-+.if defined(__MINIX)
-+USE_SHLIBDIR= no
-+.else
- USE_SHLIBDIR= yes
-+.endif
-
- CITRUS?= yes
-
- .include <bsd.own.mk>
-
- WARNS=4
-+.if defined(__MINIX)
-+CPPFLAGS+= -D_LIBC
-+.else
- CPPFLAGS+= -D_LIBC -DLIBC_SCCS -DSYSLIBC_SCCS -D_REENTRANT
-+.endif
-
- .if (${USE_HESIOD} != "no")
- CPPFLAGS+= -DHESIOD
-diff -ru nbsdsrc/src/lib/libc/arch/i386/Makefile.inc lib/nbsd_libc/arch/i386/Makefile.inc
---- nbsdsrc/src/lib/libc/arch/i386/Makefile.inc
-+++ lib/nbsd_libc/arch/i386/Makefile.inc
-@@ -1,3 +1,5 @@
- # $NetBSD: Makefile.inc,v 1.20 2006/06/17 18:04:23 uwe Exp $
-
-+.if !defined(__MINIX)
- SRCS+= __sigaction14_sigtramp.c __sigtramp2.S
-+.endif
-diff -ru nbsdsrc/src/lib/libc/arch/i386/gen/Makefile.inc lib/nbsd_libc/arch/i386/gen/Makefile.inc
---- nbsdsrc/src/lib/libc/arch/i386/gen/Makefile.inc
-+++ lib/nbsd_libc/arch/i386/gen/Makefile.inc
-@@ -7,10 +7,18 @@
-
- SRCS+= setjmp.S _setjmp.S sigsetjmp.S
-
-+.if defined(__MINIX)
-+# Already defined in sys-minix
-+.else
- SRCS+= resumecontext.S swapcontext.S
-+.endif
-
- # objects built from C sources
-+.if defined(__MINIX)
-+SRCS+= bswap64.c
-+.else
- SRCS+= bswap64.c _lwp.c makecontext.c
-+.endif
-
- # Common ieee754 constants and functions
- SRCS+= infinityf_ieee754.c infinity_ieee754.c
-diff -ru nbsdsrc/src/lib/libc/arch/i386/gen/setjmp.S lib/nbsd_libc/arch/i386/gen/setjmp.S
---- nbsdsrc/src/lib/libc/arch/i386/gen/setjmp.S
-+++ lib/nbsd_libc/arch/i386/gen/setjmp.S
-@@ -85,7 +85,11 @@
- PIC_PROLOGUE
- pushl $0
- pushl %edx
-+#ifdef __minix
-+ pushl $2 /* SIG_SETMASK */
-+#else
- pushl $3 /* SIG_SETMASK */
-+#endif
- #ifdef PIC
- call PIC_PLT(_C_LABEL(__sigprocmask14))
- #else
-diff -ru nbsdsrc/src/lib/libc/arch/i386/gen/sigsetjmp.S lib/nbsd_libc/arch/i386/gen/sigsetjmp.S
---- nbsdsrc/src/lib/libc/arch/i386/gen/sigsetjmp.S
-+++ lib/nbsd_libc/arch/i386/gen/sigsetjmp.S
-@@ -85,7 +85,11 @@
- PIC_PROLOGUE
- pushl $0
- pushl %edx
-+#ifdef __minix
-+ pushl $2 /* SIG_SETMASK */
-+#else
- pushl $3 /* SIG_SETMASK */
-+#endif
- #ifdef PIC
- call PIC_PLT(_C_LABEL(__sigprocmask14))
- #else
-diff -ru nbsdsrc/src/lib/libc/cdb/cdbr.c lib/nbsd_libc/cdb/cdbr.c
---- nbsdsrc/src/lib/libc/cdb/cdbr.c
-+++ lib/nbsd_libc/cdb/cdbr.c
-@@ -122,7 +122,22 @@
- cdbr->index_size = 4;
-
- cdbr->mmap_size = (size_t)sb.st_size;
-+#ifdef __minix
-+ cdbr->mmap_base = mmap(NULL, cdbr->mmap_size, PROT_READ, MAP_ANON, -1, (off_t)0);
-+ if (cdbr->mmap_base == MAP_FAILED) {
-+ free(cdbr);
-+ return NULL;
-+ }
-+
-+ if (read(fd, cdbr->mmap_base, cdbr->mmap_size) != cdbr->mmap_size)
-+ {
-+ munmap(cdbr->mmap_base, cdbr->mmap_size);
-+ free(cdbr);
-+ return NULL;
-+ }
-+#else /* !__minix */
- cdbr->mmap_base = mmap(NULL, cdbr->mmap_size, PROT_READ, MAP_FILE|MAP_SHARED, fd, 0);
-+#endif /* __minix */
- close(fd);
-
- if (cdbr->mmap_base == MAP_FAILED) {
-diff -ru nbsdsrc/src/lib/libc/citrus/Makefile.inc lib/nbsd_libc/citrus/Makefile.inc
---- nbsdsrc/src/lib/libc/citrus/Makefile.inc
-+++ lib/nbsd_libc/citrus/Makefile.inc
-@@ -3,8 +3,8 @@
- # sources
- .PATH: ${ARCHDIR}/citrus ${.CURDIR}/citrus
-
--MODULE_SHLIB_MAJOR!= . ${NETBSDSRCDIR}/lib/i18n_module/shlib_version ; echo $$major
--CPPFLAGS.citrus_module.c+=-DI18NMODULE_MAJOR=${MODULE_SHLIB_MAJOR}
-+#MODULE_SHLIB_MAJOR!= . ${NETBSDSRCDIR}/lib/i18n_module/shlib_version ; echo $$major
-+#CPPFLAGS.citrus_module.c+=-DI18NMODULE_MAJOR=${MODULE_SHLIB_MAJOR}
- SRCS+= citrus_bcs.c citrus_bcs_strtol.c citrus_bcs_strtoul.c \
- citrus_csmapper.c citrus_ctype.c citrus_ctype_fallback.c \
- citrus_db.c citrus_db_hash.c citrus_esdb.c citrus_hash.c \
-diff -ru nbsdsrc/src/lib/libc/citrus/citrus_mmap.c lib/nbsd_libc/citrus/citrus_mmap.c
---- nbsdsrc/src/lib/libc/citrus/citrus_mmap.c
-+++ lib/nbsd_libc/citrus/citrus_mmap.c
-@@ -74,12 +74,25 @@
- goto error;
- }
-
-+#ifdef __minix
-+ head = mmap(NULL, (size_t)st.st_size, PROT_READ, MAP_ANON, -1, (off_t)0);
-+ if (head == MAP_FAILED) {
-+ ret = errno;
-+ goto error;
-+ }
-+
-+ if (read(fd, head, st.st_size) != st.st_size) {
-+ ret = errno;
-+ goto error;
-+ }
-+#else /* !__minix */
- head = mmap(NULL, (size_t)st.st_size, PROT_READ, MAP_FILE|MAP_PRIVATE,
- fd, (off_t)0);
- if (head == MAP_FAILED) {
- ret = errno;
- goto error;
- }
-+#endif /* !__minix */
- _region_init(r, head, (size_t)st.st_size);
-
- error:
-diff -ru nbsdsrc/src/lib/libc/compat-43/Makefile.inc lib/nbsd_libc/compat-43/Makefile.inc
---- nbsdsrc/src/lib/libc/compat-43/Makefile.inc
-+++ lib/nbsd_libc/compat-43/Makefile.inc
-@@ -4,11 +4,19 @@
- # compat-43 sources
- .PATH: ${ARCHDIR}/compat-43 ${.CURDIR}/compat-43
-
-+.if defined(__MINIX)
-+# Unsupported by Minix
-+# gethostid.c sethostid.c setpgrp.c setrgid.c setruid.c sigcompat.c
-+
-+SRCS+= creat.c getdtablesize.c killpg.c
-+
-+.else
- SRCS+= creat.c getdtablesize.c gethostid.c \
- killpg.c sethostid.c setpgrp.c \
- setrgid.c setruid.c sigcompat.c
- .if !defined(AUDIT)
- SRCS+= getwd.c
-+.endif
- .endif
-
- # XXX this is to get <compat/sys/signal.h>
-diff -ru nbsdsrc/src/lib/libc/db/btree/bt_open.c lib/nbsd_libc/db/btree/bt_open.c
---- nbsdsrc/src/lib/libc/db/btree/bt_open.c
-+++ lib/nbsd_libc/db/btree/bt_open.c
-@@ -262,7 +262,16 @@
- * Don't overflow the page offset type.
- */
- if (b.psize == 0) {
-- b.psize = sb.st_blksize;
-+#ifdef __minix
-+ if (sb.st_blksize == 0) {
-+ /* 0 in 2 cases: upgrade from old to new struct stat or
-+ * there is a bug in underlying fs.
-+ */
-+ b.psize = MINIX_ST_BLKSIZE;
-+ } else
-+#endif
-+ b.psize = sb.st_blksize;
-+
- if (b.psize < MINPSIZE)
- b.psize = MINPSIZE;
- if (b.psize > MAX_PAGE_OFFSET + 1)
-diff -ru nbsdsrc/src/lib/libc/db/db/db.c lib/nbsd_libc/db/db/db.c
---- nbsdsrc/src/lib/libc/db/db/db.c
-+++ lib/nbsd_libc/db/db/db.c
-@@ -57,9 +57,15 @@
- {
-
- #define DB_FLAGS (DB_LOCK | DB_SHMEM | DB_TXN)
-+#ifdef __minix
-+#define USE_OPEN_FLAGS \
-+ (O_CREAT | O_EXCL | O_NONBLOCK | O_RDONLY | \
-+ O_RDWR | O_TRUNC)
-+#else /* !__minix */
- #define USE_OPEN_FLAGS \
- (O_CREAT | O_EXCL | O_EXLOCK | O_NONBLOCK | O_RDONLY | \
- O_RDWR | O_SHLOCK | O_TRUNC)
-+#endif /* __minix */
-
- if ((flags & ~(USE_OPEN_FLAGS | DB_FLAGS)) == 0)
- switch (type) {
-diff -ru nbsdsrc/src/lib/libc/db/hash/hash.c lib/nbsd_libc/db/hash/hash.c
---- nbsdsrc/src/lib/libc/db/hash/hash.c
-+++ lib/nbsd_libc/db/hash/hash.c
-@@ -301,7 +301,16 @@
- if (file != NULL) {
- if (stat(file, &statbuf))
- return (NULL);
-- hashp->BSIZE = MIN(statbuf.st_blksize, MAX_BSIZE);
-+#ifdef __minix
-+ if (statbuf.st_blksize == 0) {
-+ /* 0 in 2 cases: upgrade from old to new struct stat or
-+ * there is a bug in underlying fs.
-+ */
-+ hashp->BSIZE = MIN(MINIX_ST_BLKSIZE, MAX_BSIZE);
-+ } else
-+#endif
-+ hashp->BSIZE = MIN(statbuf.st_blksize, MAX_BSIZE);
-+
- hashp->BSHIFT = __log2((uint32_t)hashp->BSIZE);
- }
-
-diff -ru nbsdsrc/src/lib/libc/dlfcn/dlfcn_elf.c lib/nbsd_libc/dlfcn/dlfcn_elf.c
---- nbsdsrc/src/lib/libc/dlfcn/dlfcn_elf.c
-+++ lib/nbsd_libc/dlfcn/dlfcn_elf.c
-@@ -48,7 +48,12 @@
- #define dl_iterate_phdr ___dl_iterate_phdr
-
- #define ELFSIZE ARCH_ELFSIZE
-+#ifdef __minix
-+#include <sys/null.h>
-+#include <dlfcn.h>
-+#else
- #include "rtld.h"
-+#endif
-
- #ifdef __weak_alias
- __weak_alias(dlopen,___dlopen)
-@@ -128,6 +133,7 @@
- return -1;
- }
-
-+#ifndef __minix
- /*ARGSUSED*/
- int
- dl_iterate_phdr(int (*callback)(struct dl_phdr_info *, size_t, void *),
-@@ -136,3 +142,4 @@
-
- return 0;
- }
-+#endif
-diff -ru nbsdsrc/src/lib/libc/gdtoa/gdtoa_locks.c lib/nbsd_libc/gdtoa/gdtoa_locks.c
---- nbsdsrc/src/lib/libc/gdtoa/gdtoa_locks.c
-+++ lib/nbsd_libc/gdtoa/gdtoa_locks.c
-@@ -7,4 +7,6 @@
-
- #include "gdtoaimp.h"
-
-+#ifdef _REENTRANT /* !__minix */
- mutex_t __gdtoa_locks[2] = { MUTEX_INITIALIZER, MUTEX_INITIALIZER };
-+#endif /* _REENTRANT */
-diff -ru nbsdsrc/src/lib/libc/gdtoa/gdtoaimp.h lib/nbsd_libc/gdtoa/gdtoaimp.h
---- nbsdsrc/src/lib/libc/gdtoa/gdtoaimp.h
-+++ lib/nbsd_libc/gdtoa/gdtoaimp.h
-@@ -1,4 +1,4 @@
--/* $NetBSD: gdtoaimp.h,v 1.7 2009/05/07 20:31:44 christos Exp $ */
-+/* $NetBSD: gdtoaimp.h,v 1.8 2011/01/21 23:36:49 christos Exp $ */
-
- /****************************************************************
-
-@@ -276,7 +276,7 @@
- Exactly one of IEEE_LITTLE_ENDIAN, IEEE_BIG_ENDIAN, VAX, or IBM should be defined.
- #endif
-
--typedef union { double d; ULong L[2]; } U;
-+typedef union { double d; ULong L[2]; } __attribute__((__may_alias__)) U;
-
- #ifdef YES_ALIAS
- #define dval(x) x
-diff -ru nbsdsrc/src/lib/libc/gen/Makefile.inc lib/nbsd_libc/gen/Makefile.inc
---- nbsdsrc/src/lib/libc/gen/Makefile.inc
-+++ lib/nbsd_libc/gen/Makefile.inc
-@@ -2,9 +2,57 @@
- # from: @(#)Makefile.inc 8.6 (Berkeley) 5/4/95
-
- # gen sources
-+.if defined(__MINIX)
-+.PATH: ${.CURDIR}/gen/minix
-+.endif
- .PATH: ${ARCHDIR}/gen ${.CURDIR}/gen
-
-+.if defined(__MINIX)
-+# Unsupported by Minix.
-+# closefrom.c confstr.c extattr.c getdevmajor.c getmntinfo.c \
-+# pthread_atfork.c setdomainname.c sethostname.c setproctitle.c \
-+# sysctl.c sysctlbyname.c sysctlgetmibinfo.c sysctlnametomib.c \
-+# devname.c wait3.c
-+
-+# To be ported
-+# nlist.c nlist_aout.c nlist_coff.c nlist_ecoff.c nlist_elf32.c nlist_elf64.c
-+#
-+# Not useful but portable
-+# disklabel.c
-+#
-+# Already in getprogname
-+# setprogname.c
-+
- SRCS+= _errno.c alarm.c alphasort.c arc4random.c assert.c basename.c clock.c \
-+ closedir.c ctermid.c ctype_.c daemon.c \
-+ dehumanize_number.c dirname.c err.c errx.c \
-+ errlist.c errno.c execl.c execle.c execlp.c execv.c execvp.c \
-+ fmtcheck.c fmtmsg.c fnmatch.c fstab.c ftok.c \
-+ fts.c ftw.c getbsize.c getcap.c getcwd.c \
-+ getdomainname.c getgrent.c \
-+ getgrouplist.c getgroupmembership.c gethostname.c \
-+ getloadavg.c getlogin.c \
-+ getnetgrent.c getpagesize.c \
-+ getpass.c getprogname.c getpwent.c getttyent.c \
-+ getusershell.c glob.c humanize_number.c initdir.c initgroups.c \
-+ isascii.c isatty.c isctype.c lockf.c nftw.c \
-+ nice.c \
-+ opendir.c \
-+ pause.c popen.c psignal.c ptree.c pwcache.c \
-+ pw_scan.c raise.c randomid.c rb.c readdir.c rewinddir.c \
-+ scandir.c seekdir.c \
-+ setjmperr.c setmode.c \
-+ shquote.c shquotev.c sighold.c sigignore.c siginterrupt.c \
-+ siglist.c signal.c signame.c sigrelse.c \
-+ sigset.c sigsetops.c sleep.c \
-+ stringlist.c sysconf.c \
-+ syslog.c telldir.c time.c \
-+ times.c toascii.c tolower_.c ttyname.c ttyslot.c \
-+ toupper_.c ualarm.c ulimit.c uname.c unvis.c usleep.c utime.c utmp.c \
-+ utmpx.c valloc.c vis.c warn.c warnx.c \
-+ vwarn.c vwarnx.c verr.c verrx.c wait.c waitpid.c wordexp.c
-+.else
-+SRCS+= _errno.c alarm.c alphasort.c arc4random.c assert.c basename.c clock.c \
- closedir.c closefrom.c confstr.c ctermid.c ctype_.c daemon.c \
- dehumanize_number.c devname.c dirname.c disklabel.c err.c errx.c \
- errlist.c errno.c execl.c execle.c execlp.c execv.c execvp.c \
-@@ -32,6 +80,7 @@
- toupper_.c ualarm.c ulimit.c uname.c unvis.c usleep.c utime.c utmp.c \
- utmpx.c valloc.c vis.c wait.c wait3.c waitpid.c warn.c warnx.c \
- vwarn.c vwarnx.c verr.c verrx.c wordexp.c
-+.endif
-
- # indirect reference stubs, to be removed soon.
- SRCS+= _err.c _errx.c \
-@@ -163,7 +212,12 @@
- CPPFLAGS.tolower_.c+= -I${LIBCDIR}/locale
- CPPFLAGS.toupper_.c+= -I${LIBCDIR}/locale
-
-+.if defined(__MINIX)
-+errlist.c: errlist.awk ${MINIXSRCDIR}/nbsd_include/sys/errno.h
-+ cat ${MINIXSRCDIR}/nbsd_include/sys/errno.h | ${TOOL_SED} 's/(_SIGN//' | ${TOOL_AWK} -f ${MINIXSRCDIR}/lib/nbsd_libc/gen/errlist.awk > ${.TARGET}
-+.else
- errlist.c: errlist.awk ${NETBSDSRCDIR}/sys/sys/errno.h
- ${TOOL_AWK} -f ${.ALLSRC} > ${.TARGET}
-+.endif
-
- CLEANFILES+= errlist.c
-diff -ru nbsdsrc/src/lib/libc/gen/_verr.c lib/nbsd_libc/gen/_verr.c
---- nbsdsrc/src/lib/libc/gen/_verr.c
-+++ lib/nbsd_libc/gen/_verr.c
-@@ -13,6 +13,9 @@
- #if defined(__indr_reference)
- __indr_reference(_verr, verr)
- #else
-+#ifdef __minix
-+#include <stdarg.h>
-+#endif
-
- __dead void _verr(int, const char *, _BSD_VA_LIST_);
-
-diff -ru nbsdsrc/src/lib/libc/gen/_verrx.c lib/nbsd_libc/gen/_verrx.c
---- nbsdsrc/src/lib/libc/gen/_verrx.c
-+++ lib/nbsd_libc/gen/_verrx.c
-@@ -13,6 +13,9 @@
- #if defined(__indr_reference)
- __indr_reference(_verrx, verrx)
- #else
-+#ifdef __minix
-+#include <stdarg.h>
-+#endif
-
- __dead void _verrx(int, const char *, _BSD_VA_LIST_);
-
-diff -ru nbsdsrc/src/lib/libc/gen/_vwarn.c lib/nbsd_libc/gen/_vwarn.c
---- nbsdsrc/src/lib/libc/gen/_vwarn.c
-+++ lib/nbsd_libc/gen/_vwarn.c
-@@ -13,6 +13,9 @@
- #if defined(__indr_reference)
- __indr_reference(_vwarn, vwarn)
- #else
-+#ifdef __minix
-+#include <stdarg.h>
-+#endif
-
- void _vwarn(const char *, _BSD_VA_LIST_);
-
-diff -ru nbsdsrc/src/lib/libc/gen/_vwarnx.c lib/nbsd_libc/gen/_vwarnx.c
---- nbsdsrc/src/lib/libc/gen/_vwarnx.c
-+++ lib/nbsd_libc/gen/_vwarnx.c
-@@ -13,6 +13,9 @@
- #if defined(__indr_reference)
- __indr_reference(_vwarnx, vwarnx)
- #else
-+#ifdef __minix
-+#include <stdarg.h>
-+#endif
-
- void _vwarnx(const char *, _BSD_VA_LIST_);
-
-diff -ru nbsdsrc/src/lib/libc/gen/_warn.c lib/nbsd_libc/gen/_warn.c
---- nbsdsrc/src/lib/libc/gen/_warn.c
-+++ lib/nbsd_libc/gen/_warn.c
-@@ -24,7 +24,11 @@
- va_list ap;
-
- va_start(ap, fmt);
-+#ifdef __minix
-+ _vwarn(fmt, ap);
-+#else
- _vwarn(eval, fmt, ap);
-+#endif
- va_end(ap);
- }
- #endif
-diff -ru nbsdsrc/src/lib/libc/gen/_warnx.c lib/nbsd_libc/gen/_warnx.c
---- nbsdsrc/src/lib/libc/gen/_warnx.c
-+++ lib/nbsd_libc/gen/_warnx.c
-@@ -24,7 +24,11 @@
- va_list ap;
-
- va_start(ap, fmt);
-+#ifdef __minix
-+ _vwarnx(fmt, ap);
-+#else
- _vwarnx(eval, fmt, ap);
-+#endif
- va_end(ap);
- }
-
-diff -ru nbsdsrc/src/lib/libc/gen/closedir.c lib/nbsd_libc/gen/closedir.c
---- nbsdsrc/src/lib/libc/gen/closedir.c
-+++ lib/nbsd_libc/gen/closedir.c
-@@ -38,6 +38,11 @@
- #endif
- #endif /* LIBC_SCCS and not lint */
-
-+#ifdef __minix
-+/* NetBSD BUG: reentrant.h defines includes. */
-+#include <sys/types.h>
-+#endif /* !__minix */
-+
- #include "namespace.h"
- #include "reentrant.h"
- #include "extern.h"
-diff -ru nbsdsrc/src/lib/libc/gen/errlist.awk lib/nbsd_libc/gen/errlist.awk
---- nbsdsrc/src/lib/libc/gen/errlist.awk
-+++ lib/nbsd_libc/gen/errlist.awk
-@@ -85,9 +85,13 @@
- i1 = index(desc, "/*") + 3;
- l = length(desc);
- desc = substr(desc, i1, l - i1 - 2);
-- if (number != errno) {
-- printf("error number mismatch %d != %d\n", number, errno) > "/dev/stderr";
-+ if (number < errno) {
-+ printf("%s\n error number mismatch %d != %d\n", $0, number, errno) > "/dev/stderr";
- exit(1);
-+ }
-+ while(errno < number) {
-+ perror("UNDEFINED", errno, "Undefined error: " errno);
-+ errno++;
- }
- perror(name, number, desc);
- errno++;
-diff -ru nbsdsrc/src/lib/libc/gen/execl.c lib/nbsd_libc/gen/execl.c
---- nbsdsrc/src/lib/libc/gen/execl.c
-+++ lib/nbsd_libc/gen/execl.c
-@@ -56,7 +56,7 @@
- execl(const char *name, const char *arg, ...)
- {
- int r;
--#if defined(__i386__) || defined(__m68k__)
-+#if (defined(__i386__) || defined(__m68k__)) && !defined(__minix)
- r = execve(name, __UNCONST(&arg), environ);
- return r;
- #else
-diff -ru nbsdsrc/src/lib/libc/gen/execle.c lib/nbsd_libc/gen/execle.c
---- nbsdsrc/src/lib/libc/gen/execle.c
-+++ lib/nbsd_libc/gen/execle.c
-@@ -50,7 +50,7 @@
- int
- execle(const char *name, const char *arg, ...)
- {
--#if defined(__i386__) || defined(__m68k__)
-+#if (defined(__i386__) || defined(__m68k__)) && !defined(__minix)
- va_list ap;
- char **envp;
-
-diff -ru nbsdsrc/src/lib/libc/gen/execlp.c lib/nbsd_libc/gen/execlp.c
---- nbsdsrc/src/lib/libc/gen/execlp.c
-+++ lib/nbsd_libc/gen/execlp.c
-@@ -50,7 +50,7 @@
- int
- execlp(const char *name, const char *arg, ...)
- {
--#if defined(__i386__) || defined(__m68k__)
-+#if (defined(__i386__) || defined(__m68k__)) && !defined(__minix)
- return execvp(name, __UNCONST(&arg));
- #else
- va_list ap;
-diff -ru nbsdsrc/src/lib/libc/gen/fts.c lib/nbsd_libc/gen/fts.c
---- nbsdsrc/src/lib/libc/gen/fts.c
-+++ lib/nbsd_libc/gen/fts.c
-@@ -56,7 +56,9 @@
- #include <unistd.h>
-
- #if ! HAVE_NBTOOL_CONFIG_H
-+#ifndef __minix
- #define HAVE_STRUCT_DIRENT_D_NAMLEN
-+#endif
- #endif
-
- static FTSENT *fts_alloc(FTS *, const char *, size_t);
-diff -ru nbsdsrc/src/lib/libc/gen/getcwd.c lib/nbsd_libc/gen/getcwd.c
---- nbsdsrc/src/lib/libc/gen/getcwd.c
-+++ lib/nbsd_libc/gen/getcwd.c
-@@ -54,8 +54,12 @@
- #include "extern.h"
-
- #ifdef __weak_alias
-+#ifdef __minix
-+__weak_alias(getcwd,_getcwd)
-+#else
- __weak_alias(getcwd,_sys_getcwd)
- __weak_alias(_getcwd,_sys_getcwd)
-+#endif
- __weak_alias(realpath,_realpath)
-
- #if defined(_FORTIFY_SOURCE) && !defined(__lint__)
-diff -ru nbsdsrc/src/lib/libc/gen/getgrent.c lib/nbsd_libc/gen/getgrent.c
---- nbsdsrc/src/lib/libc/gen/getgrent.c
-+++ lib/nbsd_libc/gen/getgrent.c
-@@ -481,7 +481,11 @@
- _files_getgrgid(void *nsrv, void *nscb, va_list ap)
- {
- struct group **retval = va_arg(ap, struct group **);
-+#ifdef __minix
-+ gid_t gid = (gid_t)va_arg(ap, int);
-+#else
- gid_t gid = va_arg(ap, gid_t);
-+#endif
-
- int rv, rerror;
-
-@@ -506,7 +510,11 @@
- _files_getgrgid_r(void *nsrv, void *nscb, va_list ap)
- {
- int *retval = va_arg(ap, int *);
-+#ifdef __minix
-+ gid_t gid = (gid_t)va_arg(ap, int);
-+#else
- gid_t gid = va_arg(ap, gid_t);
-+#endif
- struct group *grp = va_arg(ap, struct group *);
- char *buffer = va_arg(ap, char *);
- size_t buflen = va_arg(ap, size_t);
-@@ -801,7 +809,11 @@
- _dns_getgrgid(void *nsrv, void *nscb, va_list ap)
- {
- struct group **retval = va_arg(ap, struct group **);
-+#ifdef __minix
-+ gid_t gid = (gid_t)va_arg(ap, int);
-+#else
- gid_t gid = va_arg(ap, gid_t);
-+#endif
-
- int rv, rerror;
-
-@@ -825,7 +837,11 @@
- _dns_getgrgid_r(void *nsrv, void *nscb, va_list ap)
- {
- int *retval = va_arg(ap, int *);
-+#ifdef __minix
-+ gid_t gid = (gid_t)va_arg(ap, int);
-+#else
- gid_t gid = va_arg(ap, gid_t);
-+#endif
- struct group *grp = va_arg(ap, struct group *);
- char *buffer = va_arg(ap, char *);
- size_t buflen = va_arg(ap, size_t);
-@@ -1148,7 +1164,11 @@
- _nis_getgrgid(void *nsrv, void *nscb, va_list ap)
- {
- struct group **retval = va_arg(ap, struct group **);
-+#ifdef __minix
-+ gid_t gid = (gid_t)va_arg(ap, int);
-+#else
- gid_t gid = va_arg(ap, gid_t);
-+#endif
-
- int rv, rerror;
-
-@@ -1172,7 +1192,11 @@
- _nis_getgrgid_r(void *nsrv, void *nscb, va_list ap)
- {
- int *retval = va_arg(ap, int *);
-+#ifdef __minix
-+ gid_t gid = (gid_t)va_arg(ap, int);
-+#else
- gid_t gid = va_arg(ap, gid_t);
-+#endif
- struct group *grp = va_arg(ap, struct group *);
- char *buffer = va_arg(ap, char *);
- size_t buflen = va_arg(ap, size_t);
-@@ -1408,7 +1432,11 @@
- crv = nsdispatch(NULL, compatgiddtab,
- NSDB_GROUP_COMPAT, "getgrgid_r",
- __nsdefaultnis,
-+#ifdef __minix
-+ &cretval, (int)gid,
-+#else
- &cretval, gid,
-+#endif
- &cgrp, filebuf, sizeof(filebuf), &cgrpres);
- }
- if (crv != NS_SUCCESS) { /* not found */
-@@ -1610,7 +1638,11 @@
- _compat_getgrgid(void *nsrv, void *nscb, va_list ap)
- {
- struct group **retval = va_arg(ap, struct group **);
-+#ifdef __minix
-+ gid_t gid = (gid_t)va_arg(ap, int);
-+#else
- gid_t gid = va_arg(ap, gid_t);
-+#endif
-
- int rv, rerror;
-
-@@ -1635,7 +1667,11 @@
- _compat_getgrgid_r(void *nsrv, void *nscb, va_list ap)
- {
- int *retval = va_arg(ap, int *);
-+#ifdef __minix
-+ gid_t gid = (gid_t)va_arg(ap, int);
-+#else
- gid_t gid = va_arg(ap, gid_t);
-+#endif
- struct group *grp = va_arg(ap, struct group *);
- char *buffer = va_arg(ap, char *);
- size_t buflen = va_arg(ap, size_t);
-@@ -1785,7 +1821,11 @@
-
- mutex_lock(&__grmutex);
- rv = nsdispatch(NULL, dtab, NSDB_GROUP, "getgrgid", __nsdefaultcompat,
-+#ifdef __minix
-+ &retval, (int)gid);
-+#else
- &retval, gid);
-+#endif
- mutex_unlock(&__grmutex);
- return (rv == NS_SUCCESS) ? retval : NULL;
- }
-@@ -1812,7 +1852,11 @@
- retval = 0;
- mutex_lock(&__grmutex);
- rv = nsdispatch(NULL, dtab, NSDB_GROUP, "getgrgid_r", __nsdefaultcompat,
-+#ifdef __minix
-+ &retval, (int)gid, grp, buffer, buflen, result);
-+#else
- &retval, gid, grp, buffer, buflen, result);
-+#endif
- mutex_unlock(&__grmutex);
- switch (rv) {
- case NS_SUCCESS:
-diff -ru nbsdsrc/src/lib/libc/gen/getgroupmembership.c lib/nbsd_libc/gen/getgroupmembership.c
---- nbsdsrc/src/lib/libc/gen/getgroupmembership.c
-+++ lib/nbsd_libc/gen/getgroupmembership.c
-@@ -101,7 +101,11 @@
- {
- int *result = va_arg(ap, int *);
- const char *uname = va_arg(ap, const char *);
-+#ifdef __minix
-+ gid_t agroup = (gid_t)va_arg(ap, int);
-+#else
- gid_t agroup = va_arg(ap, gid_t);
-+#endif
- gid_t *groups = va_arg(ap, gid_t *);
- int maxgrp = va_arg(ap, int);
- int *groupc = va_arg(ap, int *);
-@@ -144,7 +148,11 @@
- {
- int *result = va_arg(ap, int *);
- const char *uname = va_arg(ap, const char *);
-+#ifdef __minix
-+ gid_t agroup = (gid_t)va_arg(ap, int);
-+#else
- gid_t agroup = va_arg(ap, gid_t);
-+#endif
- gid_t *groups = va_arg(ap, gid_t *);
- int maxgrp = va_arg(ap, int);
- int *groupc = va_arg(ap, int *);
-@@ -237,7 +245,11 @@
- {
- int *result = va_arg(ap, int *);
- const char *uname = va_arg(ap, const char *);
-+#ifdef __minix
-+ gid_t agroup = (gid_t)va_arg(ap, int);
-+#else
- gid_t agroup = va_arg(ap, gid_t);
-+#endif
- gid_t *groups = va_arg(ap, gid_t *);
- int maxgrp = va_arg(ap, int);
- int *groupc = va_arg(ap, int *);
-@@ -305,7 +317,11 @@
- crv = nsdispatch(NULL, dtab,
- NSDB_GROUP_COMPAT, "getgroupmembership",
- __nsdefaultnis,
-+#ifdef __minix
-+ &rerror, cp->uname, (int)cp->agroup, cp->groups, cp->maxgrp, cp->groupc);
-+#else
- &rerror, cp->uname, cp->agroup, cp->groups, cp->maxgrp, cp->groupc);
-+#endif
-
- if (crv == NS_SUCCESS)
- crv = NS_NOTFOUND; /* indicate "no more +: entries" */
-@@ -319,7 +335,11 @@
- {
- int *result = va_arg(ap, int *);
- const char *uname = va_arg(ap, const char *);
-+#ifdef __minix
-+ gid_t agroup = (gid_t)va_arg(ap, int);
-+#else
- gid_t agroup = va_arg(ap, gid_t);
-+#endif
- gid_t *groups = va_arg(ap, gid_t *);
- int maxgrp = va_arg(ap, int);
- int *groupc = va_arg(ap, int *);
-@@ -395,7 +415,11 @@
- */
- (void) nsdispatch(NULL, dtab, NSDB_GROUP, "getgroupmembership",
- __nsdefaultcompat,
-+#ifdef __minix
-+ &rerror, uname, (int)agroup, groups, maxgrp, groupc);
-+#else
- &rerror, uname, agroup, groups, maxgrp, groupc);
-+#endif
- mutex_unlock(&__grmutex);
-
- if (*groupc > maxgrp) /* too many groups found */
-diff -ru nbsdsrc/src/lib/libc/gen/getlogin.c lib/nbsd_libc/gen/getlogin.c
---- nbsdsrc/src/lib/libc/gen/getlogin.c
-+++ lib/nbsd_libc/gen/getlogin.c
-@@ -78,7 +78,9 @@
- #ifdef __weak_alias
- __weak_alias(getlogin,_getlogin)
- __weak_alias(getlogin_r,_getlogin_r)
-+#ifndef __minix
- __weak_alias(setlogin,_setlogin)
-+#endif /* !__minix */
- #endif
-
- int __logname_valid; /* known to setlogin() */
-@@ -134,6 +136,7 @@
- return (rv);
- }
-
-+#ifndef __minix
- int
- setlogin(const char *name)
- {
-@@ -144,3 +147,4 @@
-
- return (retval);
- }
-+#endif
-diff -ru nbsdsrc/src/lib/libc/gen/getpwent.c lib/nbsd_libc/gen/getpwent.c
---- nbsdsrc/src/lib/libc/gen/getpwent.c
-+++ lib/nbsd_libc/gen/getpwent.c
-@@ -671,7 +671,11 @@
- _files_getpwuid(void *nsrv, void *nscb, va_list ap)
- {
- struct passwd **retval = va_arg(ap, struct passwd **);
-+#ifdef __minix
-+ uid_t uid = (uid_t)va_arg(ap, int);
-+#else
- uid_t uid = va_arg(ap, uid_t);
-+#endif
-
- int rv, rerror;
-
-@@ -696,7 +700,11 @@
- _files_getpwuid_r(void *nsrv, void *nscb, va_list ap)
- {
- int *retval = va_arg(ap, int *);
-+#ifdef __minix
-+ uid_t uid = (uid_t)va_arg(ap, int);
-+#else
- uid_t uid = va_arg(ap, uid_t);
-+#endif
- struct passwd *pw = va_arg(ap, struct passwd *);
- char *buffer = va_arg(ap, char *);
- size_t buflen = va_arg(ap, size_t);
-@@ -992,7 +1000,11 @@
- _dns_getpwuid(void *nsrv, void *nscb, va_list ap)
- {
- struct passwd **retval = va_arg(ap, struct passwd **);
-+#ifdef __minix
-+ uid_t uid = (uid_t)va_arg(ap, int);
-+#else
- uid_t uid = va_arg(ap, uid_t);
-+#endif
-
- int rv, rerror;
-
-@@ -1019,7 +1031,11 @@
- _dns_getpwuid_r(void *nsrv, void *nscb, va_list ap)
- {
- int *retval = va_arg(ap, int *);
-+#ifdef __minix
-+ uid_t uid = (uid_t)va_arg(ap, int);
-+#else
- uid_t uid = va_arg(ap, uid_t);
-+#endif
- struct passwd *pw = va_arg(ap, struct passwd *);
- char *buffer = va_arg(ap, char *);
- size_t buflen = va_arg(ap, size_t);
-@@ -1508,7 +1524,11 @@
- _nis_getpwuid(void *nsrv, void *nscb, va_list ap)
- {
- struct passwd **retval = va_arg(ap, struct passwd **);
-+#ifdef __minix
-+ uid_t uid = (uid_t)va_arg(ap, int);
-+#else
- uid_t uid = va_arg(ap, uid_t);
-+#endif
-
- int rv, rerror;
-
-@@ -1534,7 +1554,11 @@
- _nis_getpwuid_r(void *nsrv, void *nscb, va_list ap)
- {
- int *retval = va_arg(ap, int *);
-+#ifdef __minix
-+ uid_t uid = (uid_t)va_arg(ap, int);
-+#else
- uid_t uid = va_arg(ap, uid_t);
-+#endif
- struct passwd *pw = va_arg(ap, struct passwd *);
- char *buffer = va_arg(ap, char *);
- size_t buflen = va_arg(ap, size_t);
-@@ -1896,9 +1920,15 @@
- &crv, name, pw, buffer, buflen, &cpw);
- break;
- case _PW_KEYBYUID:
-+#ifdef __minix
- rv = nsdispatch(NULL, compatuiddtab,
- NSDB_PASSWD_COMPAT, "getpwuid_r", __nsdefaultnis,
-+ &crv, (int)uid, pw, buffer, buflen, &cpw);
-+#else
-+ rv = nsdispatch(NULL, compatuiddtab,
-+ NSDB_PASSWD_COMPAT, "getpwuid_r", __nsdefaultnis,
- &crv, uid, pw, buffer, buflen, &cpw);
-+#endif
- break;
- default:
- abort();
-@@ -2301,7 +2331,11 @@
- _compat_getpwuid(void *nsrv, void *nscb, va_list ap)
- {
- struct passwd **retval = va_arg(ap, struct passwd **);
-+#ifdef __minix
-+ uid_t uid = (uid_t)va_arg(ap, int);
-+#else
- uid_t uid = va_arg(ap, uid_t);
-+#endif
-
- int rv, rerror;
-
-@@ -2326,7 +2360,11 @@
- _compat_getpwuid_r(void *nsrv, void *nscb, va_list ap)
- {
- int *retval = va_arg(ap, int *);
-+#ifdef __minix
-+ uid_t uid = (uid_t)va_arg(ap, int);
-+#else
- uid_t uid = va_arg(ap, uid_t);
-+#endif
- struct passwd *pw = va_arg(ap, struct passwd *);
- char *buffer = va_arg(ap, char *);
- size_t buflen = va_arg(ap, size_t);
-@@ -2482,8 +2520,13 @@
- };
-
- mutex_lock(&_pwmutex);
-+#ifdef __minix
- rv = nsdispatch(NULL, dtab, NSDB_PASSWD, "getpwuid", __nsdefaultcompat,
-+ &retval, (int)uid);
-+#else
-+ rv = nsdispatch(NULL, dtab, NSDB_PASSWD, "getpwuid", __nsdefaultcompat,
- &retval, uid);
-+#endif
- mutex_unlock(&_pwmutex);
- return (rv == NS_SUCCESS) ? retval : NULL;
- }
-@@ -2509,8 +2552,14 @@
- *result = NULL;
- retval = 0;
- mutex_lock(&_pwmutex);
-+#ifdef __minix
- r = nsdispatch(NULL, dtab, NSDB_PASSWD, "getpwuid_r", __nsdefaultcompat,
-+ &retval, (int)uid, pwd, buffer, buflen, result);
-+#else
-+ r = nsdispatch(NULL, dtab, NSDB_PASSWD, "getpwuid_r", __nsdefaultcompat,
- &retval, uid, pwd, buffer, buflen, result);
-+#endif
-+
- mutex_unlock(&_pwmutex);
- switch (r) {
- case NS_SUCCESS:
-diff -ru nbsdsrc/src/lib/libc/gen/glob.c lib/nbsd_libc/gen/glob.c
---- nbsdsrc/src/lib/libc/gen/glob.c
-+++ lib/nbsd_libc/gen/glob.c
-@@ -1,4 +1,4 @@
--/* $NetBSD: glob.c,v 1.27 2010/09/06 14:40:25 christos Exp $ */
-+/* $NetBSD: glob.c,v 1.28 2011/01/21 23:30:31 christos Exp $ */
-
- /*
- * Copyright (c) 1989, 1993
-@@ -37,7 +37,7 @@
- #if 0
- static char sccsid[] = "@(#)glob.c 8.3 (Berkeley) 10/13/93";
- #else
--__RCSID("$NetBSD: glob.c,v 1.27 2010/09/06 14:40:25 christos Exp $");
-+__RCSID("$NetBSD: glob.c,v 1.28 2011/01/21 23:30:31 christos Exp $");
- #endif
- #endif /* LIBC_SCCS and not lint */
-
-@@ -87,13 +87,18 @@
- #define NO_GETPW_R
- #endif
-
--#define GLOB_LIMIT_MALLOC 65536
--#define GLOB_LIMIT_STAT 128
--#define GLOB_LIMIT_READDIR 16384
-+#define GLOB_LIMIT_STRING 65536 /* number of readdirs */
-+#define GLOB_LIMIT_STAT 128 /* number of stat system calls */
-+#define GLOB_LIMIT_READDIR 16384 /* total buffer size of path strings */
-+#define GLOB_LIMIT_PATH 1024 /* number of path elements */
-+#define GLOB_LIMIT_BRACE 128 /* Number of brace calls */
-
--#define GLOB_INDEX_MALLOC 0
--#define GLOB_INDEX_STAT 1
--#define GLOB_INDEX_READDIR 2
-+struct glob_limit {
-+ size_t l_string;
-+ size_t l_stat;
-+ size_t l_readdir;
-+ size_t l_brace;
-+};
-
- /*
- * XXX: For NetBSD 1.4.x compatibility. (kill me l8r)
-@@ -158,17 +163,17 @@
- static DIR *g_opendir(Char *, glob_t *);
- static Char *g_strchr(const Char *, int);
- static int g_stat(Char *, __gl_stat_t *, glob_t *);
--static int glob0(const Char *, glob_t *, size_t *);
--static int glob1(Char *, glob_t *, size_t *);
-+static int glob0(const Char *, glob_t *, struct glob_limit *);
-+static int glob1(Char *, glob_t *, struct glob_limit *);
- static int glob2(Char *, Char *, Char *, const Char *, glob_t *,
-- size_t *);
-+ struct glob_limit *);
- static int glob3(Char *, Char *, Char *, const Char *, const Char *,
-- const Char *, glob_t *, size_t *);
--static int globextend(const Char *, glob_t *, size_t *);
-+ const Char *, glob_t *, struct glob_limit *);
-+static int globextend(const Char *, glob_t *, struct glob_limit *);
- static const Char *globtilde(const Char *, Char *, size_t, glob_t *);
--static int globexp1(const Char *, glob_t *, size_t *);
-+static int globexp1(const Char *, glob_t *, struct glob_limit *);
- static int globexp2(const Char *, const Char *, glob_t *, int *,
-- size_t *);
-+ struct glob_limit *);
- static int match(const Char *, const Char *, const Char *);
- #ifdef DEBUG
- static void qprintf(const char *, Char *);
-@@ -181,8 +186,7 @@
- const u_char *patnext;
- int c;
- Char *bufnext, *bufend, patbuf[MAXPATHLEN+1];
-- /* 0 = malloc(), 1 = stat(), 2 = readdir() */
-- size_t limit[] = { 0, 0, 0 };
-+ struct glob_limit limit = { 0, 0, 0, 0 };
-
- _DIAGASSERT(pattern != NULL);
-
-@@ -218,9 +222,9 @@
- *bufnext = EOS;
-
- if (flags & GLOB_BRACE)
-- return globexp1(patbuf, pglob, limit);
-+ return globexp1(patbuf, pglob, &limit);
- else
-- return glob0(patbuf, pglob, limit);
-+ return glob0(patbuf, pglob, &limit);
- }
-
- /*
-@@ -229,7 +233,7 @@
- * characters
- */
- static int
--globexp1(const Char *pattern, glob_t *pglob, size_t *limit)
-+globexp1(const Char *pattern, glob_t *pglob, struct glob_limit *limit)
- {
- const Char* ptr = pattern;
- int rv;
-@@ -237,6 +241,12 @@
- _DIAGASSERT(pattern != NULL);
- _DIAGASSERT(pglob != NULL);
-
-+ if ((pglob->gl_flags & GLOB_LIMIT) &&
-+ limit->l_brace++ >= GLOB_LIMIT_BRACE) {
-+ errno = 0;
-+ return GLOB_NOSPACE;
-+ }
-+
- /* Protect a single {}, for find(1), like csh */
- if (pattern[0] == LBRACE && pattern[1] == RBRACE && pattern[2] == EOS)
- return glob0(pattern, pglob, limit);
-@@ -256,7 +266,7 @@
- */
- static int
- globexp2(const Char *ptr, const Char *pattern, glob_t *pglob, int *rv,
-- size_t *limit)
-+ struct glob_limit *limit)
- {
- int i;
- Char *lm, *ls;
-@@ -461,7 +471,7 @@
- * to find no matches.
- */
- static int
--glob0(const Char *pattern, glob_t *pglob, size_t *limit)
-+glob0(const Char *pattern, glob_t *pglob, struct glob_limit *limit)
- {
- const Char *qpatnext;
- int c, error;
-@@ -570,7 +580,7 @@
- }
-
- static int
--glob1(Char *pattern, glob_t *pglob, size_t *limit)
-+glob1(Char *pattern, glob_t *pglob, struct glob_limit *limit)
- {
- Char pathbuf[MAXPATHLEN+1];
-
-@@ -596,7 +606,7 @@
- */
- static int
- glob2(Char *pathbuf, Char *pathend, Char *pathlim, const Char *pattern,
-- glob_t *pglob, size_t *limit)
-+ glob_t *pglob, struct glob_limit *limit)
- {
- __gl_stat_t sb;
- const Char *p;
-@@ -624,10 +634,11 @@
- return 0;
-
- if ((pglob->gl_flags & GLOB_LIMIT) &&
-- limit[GLOB_INDEX_STAT]++ >= GLOB_LIMIT_STAT) {
-+ limit->l_stat++ >= GLOB_LIMIT_STAT) {
- errno = 0;
- *pathend++ = SEP;
- *pathend = EOS;
-+printf("stat limit\n");
- return GLOB_NOSPACE;
- }
- if (((pglob->gl_flags & GLOB_MARK) &&
-@@ -692,7 +703,7 @@
- static int
- glob3(Char *pathbuf, Char *pathend, Char *pathlim, const Char *pattern,
- const Char *restpattern, const Char *pglobstar, glob_t *pglob,
-- size_t *limit)
-+ struct glob_limit *limit)
- {
- struct dirent *dp;
- DIR *dirp;
-@@ -785,7 +796,7 @@
- Char *dc;
-
- if ((pglob->gl_flags & GLOB_LIMIT) &&
-- limit[GLOB_INDEX_READDIR]++ >= GLOB_LIMIT_READDIR) {
-+ limit->l_readdir++ >= GLOB_LIMIT_READDIR) {
- errno = 0;
- *pathend++ = SEP;
- *pathend = EOS;
-@@ -894,7 +905,7 @@
- * gl_pathv points to (gl_offs + gl_pathc + 1) items.
- */
- static int
--globextend(const Char *path, glob_t *pglob, size_t *limit)
-+globextend(const Char *path, glob_t *pglob, struct glob_limit *limit)
- {
- char **pathv;
- size_t i, newsize, len;
-@@ -905,6 +916,9 @@
- _DIAGASSERT(pglob != NULL);
-
- newsize = sizeof(*pathv) * (2 + pglob->gl_pathc + pglob->gl_offs);
-+ if ((pglob->gl_flags & GLOB_LIMIT) &&
-+ newsize > GLOB_LIMIT_PATH * sizeof(*pathv))
-+ goto nospace;
- pathv = pglob->gl_pathv ? realloc(pglob->gl_pathv, newsize) :
- malloc(newsize);
- if (pathv == NULL)
-@@ -921,7 +935,7 @@
- for (p = path; *p++;)
- continue;
- len = (size_t)(p - path);
-- limit[GLOB_INDEX_MALLOC] += len;
-+ limit->l_string += len;
- if ((copy = malloc(len)) != NULL) {
- if (g_Ctoc(path, copy, len)) {
- free(copy);
-@@ -932,12 +946,13 @@
- pathv[pglob->gl_offs + pglob->gl_pathc] = NULL;
-
- if ((pglob->gl_flags & GLOB_LIMIT) &&
-- (newsize + limit[GLOB_INDEX_MALLOC]) >= GLOB_LIMIT_MALLOC) {
-- errno = 0;
-- return GLOB_NOSPACE;
-- }
-+ (newsize + limit->l_string) >= GLOB_LIMIT_STRING)
-+ goto nospace;
-
- return copy == NULL ? GLOB_NOSPACE : 0;
-+nospace:
-+ errno = 0;
-+ return GLOB_NOSPACE;
- }
-
-
-diff -ru nbsdsrc/src/lib/libc/gen/gr_private.h lib/nbsd_libc/gen/gr_private.h
---- nbsdsrc/src/lib/libc/gen/gr_private.h
-+++ lib/nbsd_libc/gen/gr_private.h
-@@ -40,11 +40,13 @@
- #define _GROUP_COMPAT /* "group" defaults to compat, so always provide it */
-
-
-+#ifndef __minix /* should be _REENTRANT */
- /*
- * mutex to serialize the public group(5) functions use of the
- * back-end implementations, which may not be reentrant.
- */
- extern mutex_t __grmutex;
-+#endif
-
- /*
- * files methods
-diff -ru nbsdsrc/src/lib/libc/gen/initdir.c lib/nbsd_libc/gen/initdir.c
---- nbsdsrc/src/lib/libc/gen/initdir.c
-+++ lib/nbsd_libc/gen/initdir.c
-@@ -35,6 +35,14 @@
- #endif /* LIBC_SCCS and not lint */
-
- #include "namespace.h"
-+
-+#ifdef __minix
-+/* NetBSD BUG on !_REENTRANT */
-+#include <sys/cdefs.h>
-+#include <sys/featuretest.h>
-+#include <sys/types.h>
-+#endif
-+
- #include "reentrant.h"
- #include "extern.h"
-
-@@ -221,9 +229,11 @@
- xp = dp;
- else
- dp->d_fileno = 0;
-+#ifndef __minix
- if (dp->d_type == DT_WHT &&
- (flags & DTF_HIDEW))
- dp->d_fileno = 0;
-+#endif
- }
-
- free(dpv);
-diff -ru nbsdsrc/src/lib/libc/gen/opendir.c lib/nbsd_libc/gen/opendir.c
---- nbsdsrc/src/lib/libc/gen/opendir.c
-+++ lib/nbsd_libc/gen/opendir.c
-@@ -40,6 +40,12 @@
-
- #include "namespace.h"
- #include "reentrant.h"
-+
-+#ifdef __minix
-+#include <sys/cdefs.h>
-+#include <sys/types.h>
-+#endif
-+
- #include "extern.h"
-
- #include <sys/param.h>
-@@ -97,7 +103,9 @@
- DIR *dirp = NULL;
- int serrno;
- struct stat sb;
-+#ifndef __minix
- struct statvfs sfb;
-+#endif
- int error;
-
- if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1)
-@@ -122,6 +130,10 @@
- * Tweak flags for the underlying filesystem.
- */
-
-+#ifdef __minix
-+ /* MOUNT_UNION and MOUNT_NFS not supported */
-+ flags &= ~DTF_NODUP;
-+#else
- if (fstatvfs1(fd, &sfb, ST_NOWAIT) < 0)
- goto error;
- if ((flags & DTF_NODUP) != 0) {
-@@ -136,6 +148,7 @@
- if (!strncmp(sfb.f_fstypename, MOUNT_NFS, sizeof(sfb.f_fstypename))) {
- flags |= __DTF_READALL | __DTF_RETRY_ON_BADCOOKIE;
- }
-+#endif
-
- dirp->dd_flags = flags;
- error = _initdir(dirp, fd, name);
-diff -ru nbsdsrc/src/lib/libc/gen/readdir.c lib/nbsd_libc/gen/readdir.c
---- nbsdsrc/src/lib/libc/gen/readdir.c
-+++ lib/nbsd_libc/gen/readdir.c
-@@ -40,6 +40,12 @@
-
- #include "namespace.h"
- #include "reentrant.h"
-+
-+#ifdef __minix
-+#include <sys/cdefs.h>
-+#include <sys/types.h>
-+#endif
-+
- #include "extern.h"
- #include <sys/param.h>
-
-@@ -81,8 +87,10 @@
- dirp->dd_loc += dp->d_reclen;
- if (dp->d_ino == 0 && skipdeleted)
- continue;
-+#ifndef __minix
- if (dp->d_type == DT_WHT && (dirp->dd_flags & DTF_HIDEW))
- continue;
-+#endif
- return (dp);
- }
- }
-diff -ru nbsdsrc/src/lib/libc/gen/rewinddir.c lib/nbsd_libc/gen/rewinddir.c
---- nbsdsrc/src/lib/libc/gen/rewinddir.c
-+++ lib/nbsd_libc/gen/rewinddir.c
-@@ -40,6 +40,11 @@
-
- #include "namespace.h"
- #include "reentrant.h"
-+
-+#ifdef __minix
-+#include <sys/types.h>
-+#endif
-+
- #include "extern.h"
- #include <sys/types.h>
-
-diff -ru nbsdsrc/src/lib/libc/gen/scandir.c lib/nbsd_libc/gen/scandir.c
---- nbsdsrc/src/lib/libc/gen/scandir.c
-+++ lib/nbsd_libc/gen/scandir.c
-@@ -130,9 +130,13 @@
- goto bad2;
- p->d_fileno = d->d_fileno;
- p->d_reclen = d->d_reclen;
-+#ifndef __minix
- p->d_type = d->d_type;
- p->d_namlen = d->d_namlen;
- (void)memmove(p->d_name, d->d_name, (size_t)(p->d_namlen + 1));
-+#else
-+ (void)memmove(p->d_name, d->d_name, (size_t)(strlen(d->d_name) + 1));
-+#endif
- names[nitems++] = p;
- }
- (void)closedir(dirp);
-diff -ru nbsdsrc/src/lib/libc/gen/seekdir.c lib/nbsd_libc/gen/seekdir.c
---- nbsdsrc/src/lib/libc/gen/seekdir.c
-+++ lib/nbsd_libc/gen/seekdir.c
-@@ -40,6 +40,9 @@
-
- #include "namespace.h"
- #include "reentrant.h"
-+#ifdef __minix
-+#include <sys/types.h>
-+#endif
- #include "extern.h"
- #include <sys/param.h>
-
-diff -ru nbsdsrc/src/lib/libc/gen/syslog.c lib/nbsd_libc/gen/syslog.c
---- nbsdsrc/src/lib/libc/gen/syslog.c
-+++ lib/nbsd_libc/gen/syslog.c
-@@ -492,7 +492,9 @@
- /* AF_UNIX address of local logger */
- static const struct sockaddr_un sun = {
- .sun_family = AF_LOCAL,
-+#ifndef __minix
- .sun_len = sizeof(sun),
-+#endif
- .sun_path = _PATH_LOG,
- };
-
-diff -ru nbsdsrc/src/lib/libc/gen/telldir.c lib/nbsd_libc/gen/telldir.c
---- nbsdsrc/src/lib/libc/gen/telldir.c
-+++ lib/nbsd_libc/gen/telldir.c
-@@ -40,6 +40,11 @@
-
- #include "namespace.h"
- #include "reentrant.h"
-+
-+#ifdef __minix
-+#include <sys/types.h>
-+#endif
-+
- #include "extern.h"
- #include <sys/param.h>
-
-diff -ru nbsdsrc/src/lib/libc/gen/ttyname.c lib/nbsd_libc/gen/ttyname.c
---- nbsdsrc/src/lib/libc/gen/ttyname.c
-+++ lib/nbsd_libc/gen/ttyname.c
-@@ -72,7 +72,9 @@
- mode_t type;
- dev_t dev;
- } bkey;
-+#ifndef __minix
- struct ptmget ptm;
-+#endif
- #define DEVSZ (sizeof(_PATH_DEV) - 1)
-
- _DIAGASSERT(fd != -1);
-@@ -81,6 +83,7 @@
- return ERANGE;
- }
-
-+#ifndef __minix
- /* If it is a pty, deal with it quickly */
- if (ioctl(fd, TIOCPTSNAME, &ptm) != -1) {
- if (strlcpy(buf, ptm.sn, len) >= len) {
-@@ -88,6 +91,7 @@
- }
- return 0;
- }
-+#endif
- /* Must be a terminal. */
- if (tcgetattr(fd, &ttyb) == -1)
- return errno;
-@@ -136,7 +140,11 @@
- while ((dirp = readdir(dp)) != NULL) {
- if (dirp->d_fileno != sb->st_ino)
- continue;
-+#ifdef __minix
-+ dlen = strlen(dirp->d_name);
-+#else
- dlen = dirp->d_namlen + 1;
-+#endif
- if (len - DEVSZ <= dlen) {
- /*
- * XXX: we return an error if *any* entry does not
-diff -ru nbsdsrc/src/lib/libc/gen/ttyslot.c lib/nbsd_libc/gen/ttyslot.c
---- nbsdsrc/src/lib/libc/gen/ttyslot.c
-+++ lib/nbsd_libc/gen/ttyslot.c
-@@ -59,14 +59,20 @@
- char *p;
- int cnt;
- char *name;
-+#ifndef __minix
- struct ptmget ptm;
-+#endif
-
- setttyent();
- for (cnt = 0; cnt < 3; ++cnt) {
-+#ifndef __minix
- if (ioctl(cnt, TIOCPTSNAME, &ptm) != -1) {
- ispty = 1;
- name = ptm.sn;
- } else if ((name = ttyname(cnt)) != NULL) {
-+#else
-+ if ((name = ttyname(cnt)) != NULL) {
-+#endif
- ispty = 0;
- } else
- continue;
-diff -ru nbsdsrc/src/lib/libc/gen/ulimit.c lib/nbsd_libc/gen/ulimit.c
---- nbsdsrc/src/lib/libc/gen/ulimit.c
-+++ lib/nbsd_libc/gen/ulimit.c
-@@ -54,12 +54,14 @@
- if (getrlimit(RLIMIT_FSIZE, &rlimit) == 0)
- result = (long int)(rlimit.rlim_cur / 512);
- break;
-+#ifndef __minix
- case UL_SETFSIZE:
- new_limit = va_arg(ap, long int);
- rlimit.rlim_cur = rlimit.rlim_max = (rlim_t)new_limit * 512;
- if (setrlimit(RLIMIT_FSIZE, &rlimit) == 0)
- result = new_limit;
- break;
-+#endif
- default:
- errno = EINVAL;
- }
-diff -ru nbsdsrc/src/lib/libc/gen/utmpx.c lib/nbsd_libc/gen/utmpx.c
---- nbsdsrc/src/lib/libc/gen/utmpx.c
-+++ lib/nbsd_libc/gen/utmpx.c
-@@ -336,16 +336,32 @@
- _DIAGASSERT(file != NULL);
- _DIAGASSERT(utx != NULL);
-
-+#ifndef __minix
- fd = open(file, O_WRONLY|O_APPEND|O_SHLOCK);
-+#else
-+ fd = open(file, O_WRONLY|O_APPEND);
-+#endif
-
- if (fd == -1) {
-+#ifndef __minix
- if ((fd = open(file, O_CREAT|O_WRONLY|O_EXLOCK, 0644)) == -1)
- return -1;
-+#else
-+ if ((fd = open(file, O_CREAT|O_WRONLY, 0644)) < 0)
-+ return -1;
-+ if (flock(fd, LOCK_EX) < 0)
-+ return -1;
-+#endif
- (void)memset(&ut, 0, sizeof(ut));
- ut.ut_type = SIGNATURE;
- (void)memcpy(ut.ut_user, vers, sizeof(vers));
- if (write(fd, &ut, sizeof(ut)) == -1)
- goto failed;
-+ } else {
-+#ifdef __minix
-+ if (flock(fd, LOCK_SH) < 0 )
-+ return -1;
-+#endif
- }
- if (write(fd, utx, sizeof(*utx)) == -1)
- goto failed;
-@@ -425,10 +441,18 @@
- _DIAGASSERT(fname != NULL);
- _DIAGASSERT(ll != NULL);
-
-+#ifdef __minix
-+ db = dbopen(fname, O_RDONLY, 0, DB_HASH, NULL);
-+#else
- db = dbopen(fname, O_RDONLY|O_SHLOCK, 0, DB_HASH, NULL);
-+#endif
-
- if (db == NULL)
- return NULL;
-+#ifdef __minix
-+ if (flock(db->fd(db), LOCK_SH) < 0)
-+ return NULL;
-+#endif
-
- key.data = &uid;
- key.size = sizeof(uid);
-@@ -464,11 +488,19 @@
- _DIAGASSERT(fname != NULL);
- _DIAGASSERT(ll != NULL);
-
-+#ifndef __minix
- db = dbopen(fname, O_RDWR|O_CREAT|O_EXLOCK, 0644, DB_HASH, NULL);
-+#else
-+ db = dbopen(fname, O_RDWR|O_CREAT, 0644, DB_HASH, NULL);
-+#endif
-
- if (db == NULL)
- return -1;
-
-+#ifdef __minix
-+ if (flock(db->fd(db), LOCK_EX) < 0)
-+ return -1;
-+#endif
- key.data = &uid;
- key.size = sizeof(uid);
- data.data = ll;
-diff -ru nbsdsrc/src/lib/libc/gmon/gmon.c lib/nbsd_libc/gmon/gmon.c
---- nbsdsrc/src/lib/libc/gmon/gmon.c
-+++ lib/nbsd_libc/gmon/gmon.c
-@@ -373,8 +373,10 @@
- struct gmonparam *p = &_gmonparam;
- struct gmonhdr gmonhdr, *hdr;
- struct clockinfo clockinfo;
-+#ifndef __minix
- int mib[2];
- size_t size;
-+#endif
- char *profdir;
- const char *proffile;
- char buf[PATH_MAX];
-@@ -397,6 +399,9 @@
- if (p->state == GMON_PROF_ERROR)
- warnx("%s: tos overflow", __func__);
-
-+#ifdef __minix
-+ clockinfo.profhz = sysconf(_SC_CLK_TCK);
-+#else /* !__minix */
- size = sizeof(clockinfo);
- mib[0] = CTL_KERN;
- mib[1] = KERN_CLOCKRATE;
-@@ -411,6 +416,7 @@
- else
- clockinfo.profhz = hertz();
- }
-+#endif /* !__minix */
-
- moncontrol(0);
-
-@@ -509,6 +515,7 @@
- }
- }
-
-+#ifndef __minix
- /*
- * discover the tick frequency of the machine
- * if something goes wrong, we return 0, an impossible hertz.
-@@ -542,3 +549,4 @@
- (void)timer_delete(t);
- return rv;
- }
-+#endif /* !__minix */
-diff -ru nbsdsrc/src/lib/libc/include/env.h lib/nbsd_libc/include/env.h
---- nbsdsrc/src/lib/libc/include/env.h
-+++ lib/nbsd_libc/include/env.h
-@@ -56,7 +56,11 @@
- }
-
- static __inline bool
-+#ifdef __minix
-+__unlockenv(void)
-+#else /* Bug-to-bug compatibility? */
- __unlocklockenv(void)
-+#endif
- {
- return true;
- }
-diff -ru nbsdsrc/src/lib/libc/include/namespace.h lib/nbsd_libc/include/namespace.h
---- nbsdsrc/src/lib/libc/include/namespace.h
-+++ lib/nbsd_libc/include/namespace.h
-@@ -47,7 +47,9 @@
- #define fork _fork
- #define fseeko _fseeko
- #define ftello _ftello
-+#ifndef __minix
- #define getcontext _getcontext
-+#endif /* !__minix */
- #define getenv_r _getenv_r
- #define imaxabs _imaxabs
- #define imaxdiv _imaxdiv
-@@ -530,7 +532,13 @@
- #define seed48 _seed48
- #define seekdir _seekdir
- #define select _select
-+#ifdef __minix
-+/* '_send' unfortunately collides with Minix IPC's _send function.
-+ * This solution is fragile, a proper renaming of Minix IPCs should
-+ * be done insted. */
-+#else /* !__minix */
- #define send _send
-+#endif /* !__minix */
- #define setdomainname _setdomainname
- #define setenv _setenv
- #define setfsent _setfsent
-@@ -845,6 +853,79 @@
- #define xprtlist_lock __rpc_xprtlist_lock
-
- #define __learn_tree ___learn_tree
-+
-+#ifdef __minix
-+#define _exit __exit
-+#define access _access
-+#define bind _bind
-+#define chdir _chdir
-+#define chmod _chmod
-+#define chown _chown
-+#define chroot _chroot
-+#define close _close
-+#define dup _dup
-+#define dup2 _dup2
-+#define execve _execve
-+#define fchdir _fchdir
-+#define fchmod _fchmod
-+#define fchown _fchown
-+#define fcntl _fcntl
-+#define flock _flock
-+#define fstatfs _fstatfs
-+#define fsync _fsync
-+#define fpathconf _fpathconf
-+#define getegid _getegid
-+#define geteuid _geteuid
-+#define getgroups _getgroups
-+#define getpid _getpid
-+#define getpgrp _getpgrp
-+#define getppid _getppid
-+#define gettimeofday _gettimeofday
-+#define getgid _getgid
-+#define getuid _getuid
-+#define ioctl _ioctl
-+#define link _link
-+#define mount _mount
-+#define mkdir _mkdir
-+#define mkfifo _mkfifo
-+#define mknod _mknod
-+#define munmap _munmap
-+#define munmap_text _munmap_text
-+#define open _open
-+#define pathconf _pathconf
-+#define ptrace _ptrace
-+#define readv _readv
-+#define rmdir _rmdir
-+#define setegid _setegid
-+#define seteuid _seteuid
-+#define setgid _setgid
-+#define setgroups _setgroups
-+#define setprogname _setprogname
-+#define setsid _setsid
-+#define setuid _setuid
-+#define shmat _shmat
-+#define shmdt _shmdt
-+#define shmget _shmget
-+#define shutdown _shutdown
-+#define sigreturn _sigreturn
-+#define socket _socket
-+#define socketpair _socketpair
-+#define symlink _symlink
-+#define sync _sync
-+#define stime _stime
-+#define umask _umask
-+#define umount _umount
-+#define umount2 _umount2
-+#define unlink _unlink
-+#define vm_remap _vm_remap
-+#define vm_unmap _vm_unmap
-+#define vm_getphys _vm_getphys
-+#define vm_getrefcount _vm_getrefcount
-+#define truncate _truncate
-+#define write _write
-+#define writev _writev
-+#endif /* __minix */
-+
- #endif /* __weak_alias */
- #endif /* !__lint__ */
-
-diff -ru nbsdsrc/src/lib/libc/libcincludes.mk lib/nbsd_libc/libcincludes.mk
---- nbsdsrc/src/lib/libc/libcincludes.mk
-+++ lib/nbsd_libc/libcincludes.mk
-@@ -3,7 +3,25 @@
- # Makefile fragment shared across several parts that want to look
- # inside libc's include tree.
-
-+.if defined(__MINIX)
-+MACHINE_ARCH= ${MACHINE}
-+MACHINE_CPU= ${MACHINE}
- .if defined(LIBC_MACHINE_ARCH) && \
-+ exists(${MINIXSRCDIR}/lib/nbsd_libc/arch/${LIBC_MACHINE_ARCH}/SYS.h)
-+ARCHSUBDIR= ${LIBC_MACHINE_ARCH}
-+.elif exists(${MINIXSRCDIR}/lib/nbsd_libc/arch/${MACHINE_ARCH}/SYS.h)
-+ARCHSUBDIR= ${MACHINE_ARCH}
-+.elif exists(${MINIXSRCDIR}/lib/nbsd_libc/arch/${MACHINE_CPU}/SYS.h)
-+ARCHSUBDIR= ${MACHINE_CPU}
-+.else
-+.BEGIN:
-+ @echo no ARCHDIR for ${MACHINE_ARCH} nor ${MACHINE_CPU}
-+ @false
-+.endif
-+
-+ARCHDIR= ${MINIXSRCCDIR}/lib/nbsd_libc/arch/${ARCHSUBDIR}
-+.else
-+.if defined(LIBC_MACHINE_ARCH) && \
- exists(${NETBSDSRCDIR}/lib/libc/arch/${LIBC_MACHINE_ARCH}/SYS.h)
- ARCHSUBDIR= ${LIBC_MACHINE_ARCH}
- .elif exists(${NETBSDSRCDIR}/lib/libc/arch/${MACHINE_ARCH}/SYS.h)
-@@ -17,3 +35,4 @@
- .endif
-
- ARCHDIR= ${NETBSDSRCDIR}/lib/libc/arch/${ARCHSUBDIR}
-+.endif
-diff -ru nbsdsrc/src/lib/libc/locale/setlocale.c lib/nbsd_libc/locale/setlocale.c
---- nbsdsrc/src/lib/libc/locale/setlocale.c
-+++ lib/nbsd_libc/locale/setlocale.c
-@@ -61,6 +61,38 @@
- extern const _locale_category_t _localeio_LC_MESSAGES_desc;
- #endif
-
-+#ifdef __minix
-+/* GNU binutils 2.x a.out support is rotten and link sets are not
-+ supported. Workaround this by explicitely creating the structure
-+ the linker was supposed to create. */
-+
-+struct {
-+ int __ls_length;
-+ _locale_category_t *__ls_items[7];
-+} __link_set_all_categories = {
-+ .__ls_length = 7,
-+ .__ls_items = {
-+ [0] = &_generic_LC_ALL_desc,
-+ [1] = &_dummy_LC_COLLATE_desc,
-+#ifdef WITH_RUNE
-+ [2] = &_citrus_LC_CTYPE_desc,
-+ [3] = &_citrus_LC_MONETARY_desc,
-+ [4] = &_citrus_LC_NUMERIC_desc,
-+ [5] = &_citrus_LC_TIME_desc,
-+ [6] = &_citrus_LC_MESSAGES_desc,
-+#else
-+ [2] = &_localeio_LC_CTYPE_desc,
-+ [3] = &_localeio_LC_MONETARY_desc,
-+ [4] = &_localeio_LC_NUMERIC_desc,
-+ [5] = &_localeio_LC_TIME_desc,
-+ [6] = &_localeio_LC_MESSAGES_desc,
-+#endif
-+ },
-+};
-+
-+#endif /* __minix */
-+
-+
- __link_set_add_data(all_categories, _generic_LC_ALL_desc);
- __link_set_add_data(all_categories, _dummy_LC_COLLATE_desc);
- #ifdef WITH_RUNE
-diff -ru nbsdsrc/src/lib/libc/misc/initfini.c lib/nbsd_libc/misc/initfini.c
---- nbsdsrc/src/lib/libc/misc/initfini.c
-+++ lib/nbsd_libc/misc/initfini.c
-@@ -55,8 +55,10 @@
- /* Atomic operations */
- __libc_atomic_init();
-
-+#ifdef _REENTRANT
- /* Threads */
- __libc_thr_init();
-+#endif
-
- /* Initialize the atexit mutexes */
- __libc_atexit_init();
-diff -ru nbsdsrc/src/lib/libc/misc/stack_protector.c lib/nbsd_libc/misc/stack_protector.c
---- nbsdsrc/src/lib/libc/misc/stack_protector.c
-+++ lib/nbsd_libc/misc/stack_protector.c
-@@ -56,24 +56,30 @@
- void
- __guard_setup(void)
- {
-+#ifndef __minix
- int mib[2];
-+#endif
- size_t len;
-
- if (__stack_chk_guard[0] != 0)
- return;
-
-+#ifndef __minix
- mib[0] = CTL_KERN;
- mib[1] = KERN_ARND;
-
- len = sizeof(__stack_chk_guard);
- if (__sysctl(mib, 2, __stack_chk_guard, &len, NULL, 0) == -1 ||
- len != sizeof(__stack_chk_guard)) {
-+#endif
- /* If sysctl was unsuccessful, use the "terminator canary". */
- ((unsigned char *)(void *)__stack_chk_guard)[0] = 0;
- ((unsigned char *)(void *)__stack_chk_guard)[1] = 0;
- ((unsigned char *)(void *)__stack_chk_guard)[2] = '\n';
- ((unsigned char *)(void *)__stack_chk_guard)[3] = 255;
-+#ifndef __minix
- }
-+#endif
- }
-
- /*ARGSUSED*/
-diff -ru nbsdsrc/src/lib/libc/net/Makefile.inc lib/nbsd_libc/net/Makefile.inc
---- nbsdsrc/src/lib/libc/net/Makefile.inc
-+++ lib/nbsd_libc/net/Makefile.inc
-@@ -2,18 +2,33 @@
- # @(#)Makefile.inc 8.2 (Berkeley) 9/5/93
-
- # net sources
-+.if defined(__MINIX)
-+.PATH: ${.CURDIR}/net/minix
-+.endif
- .PATH: ${ARCHDIR}/net ${.CURDIR}/net
-
-+.if defined(__MINIX)
-+# Not supported by minix: iso_addr.c link_addr.c sockatmark.c
- SRCS+= __cmsg_alignbytes.c base64.c ethers.c gethnamaddr.c getifaddrs.c \
- getnetnamadr.c getnetent.c getpeereid.c \
- getprotobyname.c getprotobynumber.c getprotoent.c \
- getprotobyname_r.c getprotobynumber_r.c getprotoent_r.c \
- getservbyname.c getservbyport.c getservent.c \
- getservbyname_r.c getservbyport_r.c getservent_r.c \
-+ nsdispatch.c nslexer.l nsparser.y nsap_addr.c \
-+ rcmd.c recv.c send.c sethostent.c
-+.else
-+SRCS+= __cmsg_alignbytes.c base64.c ethers.c gethnamaddr.c getifaddrs.c \
-+ getnetnamadr.c getnetent.c getpeereid.c \
-+ getprotobyname.c getprotobynumber.c getprotoent.c \
-+ getprotobyname_r.c getprotobynumber_r.c getprotoent_r.c \
-+ getservbyname.c getservbyport.c getservent.c \
-+ getservbyname_r.c getservbyport_r.c getservent_r.c \
- iso_addr.c linkaddr.c \
- nsdispatch.c nslexer.l nsparser.y nsap_addr.c \
- rcmd.c recv.c send.c sethostent.c \
- sockatmark.c
-+.endif
-
- .if (${MKHESIOD} != "no")
- SRCS+= hesiod.c
-@@ -23,7 +38,9 @@
- .if (${USE_INET6} != "no")
- SRCS+= ip6opt.c rthdr.c vars6.c
- .endif
-+.if !defined(__MINIX)
- SRCS+= if_indextoname.c if_nameindex.c if_nametoindex.c
-+.endif
-
- LPREFIX=_nsyy
- YPREFIX=_nsyy
-diff -ru nbsdsrc/src/lib/libc/net/getaddrinfo.c lib/nbsd_libc/net/getaddrinfo.c
---- nbsdsrc/src/lib/libc/net/getaddrinfo.c
-+++ lib/nbsd_libc/net/getaddrinfo.c
-@@ -855,7 +855,12 @@
- ai = calloc(sizeof(struct addrinfo) + addrlen, 1);
- if (ai) {
- ai->ai_addr = (void *)(ai+1);
-+#ifndef __minix
- ai->ai_addrlen = ai->ai_addr->sa_len = addrlen;
-+#else /* __minix */
-+ ai->ai_addrlen = addrlen;
-+#endif
-+
- }
-
- return ai;
-diff -ru nbsdsrc/src/lib/libc/net/getnameinfo.c lib/nbsd_libc/net/getnameinfo.c
---- nbsdsrc/src/lib/libc/net/getnameinfo.c
-+++ lib/nbsd_libc/net/getnameinfo.c
-@@ -54,10 +54,12 @@
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <net/if.h>
-+#ifndef __minix
- #include <net/if_dl.h>
- #include <net/if_ieee1394.h>
- #include <net/if_types.h>
- #include <netatalk/at.h>
-+#endif /* !__minix */
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <arpa/nameser.h>
-@@ -103,11 +105,13 @@
- static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t,
- int));
- #endif
-+#ifndef __minix
- static int getnameinfo_atalk __P((const struct sockaddr *, socklen_t, char *,
- socklen_t, char *, socklen_t, int));
-
- static int getnameinfo_link __P((const struct sockaddr *, socklen_t, char *,
- socklen_t, char *, socklen_t, int));
-+#endif /* __minix */
- static int hexname __P((const u_int8_t *, size_t, char *, socklen_t));
-
- /*
-@@ -124,21 +128,26 @@
- {
-
- switch (sa->sa_family) {
-+#ifndef __minix
- case AF_APPLETALK:
- return getnameinfo_atalk(sa, salen, host, hostlen,
- serv, servlen, flags);
-+#endif /* !__minix */
- case AF_INET:
- case AF_INET6:
- return getnameinfo_inet(sa, salen, host, hostlen,
- serv, servlen, flags);
-+#ifndef __minix
- case AF_LINK:
- return getnameinfo_link(sa, salen, host, hostlen,
- serv, servlen, flags);
-+#endif /* !__minix */
- default:
- return EAI_FAMILY;
- }
- }
-
-+#ifndef __minix
- /*
- * getnameinfo_atalk():
- * Format an AppleTalk address into a printable format.
-@@ -198,6 +207,7 @@
-
- return EAI_MEMORY;
- }
-+#endif /* !__minix */
-
- /*
- * getnameinfo_inet():
-@@ -491,6 +501,7 @@
- #endif /* INET6 */
-
-
-+#ifndef __minix
- /*
- * getnameinfo_link():
- * Format a link-layer address into a printable format, paying attention to
-@@ -568,6 +579,7 @@
- (size_t)sdl->sdl_alen, host, hostlen);
- }
- }
-+#endif /* !__minix */
-
- static int
- hexname(cp, len, host, hostlen)
-diff -ru nbsdsrc/src/lib/libc/net/rcmd.c lib/nbsd_libc/net/rcmd.c
---- nbsdsrc/src/lib/libc/net/rcmd.c
-+++ lib/nbsd_libc/net/rcmd.c
-@@ -48,7 +48,9 @@
- #include <sys/wait.h>
-
- #include <netinet/in.h>
-+#ifndef __minix
- #include <rpc/rpc.h>
-+#endif
- #include <arpa/inet.h>
- #include <netgroup.h>
-
-@@ -213,7 +215,11 @@
- struct addrinfo *r;
- struct sockaddr_storage from;
- struct pollfd reads[2];
-+#ifdef __minix
-+ /* No support for OOB data in Minix. */
-+#else
- sigset_t nmask, omask;
-+#endif /* !__minix */
- pid_t pid;
- int s, lport, timo;
- int pollr;
-@@ -230,10 +236,14 @@
- r = res;
- refused = 0;
- pid = getpid();
-+#ifndef __minix
-+ /* Minix has no support for OOB data,
-+ no need to block SIGURG. */
- sigemptyset(&nmask);
- sigaddset(&nmask, SIGURG);
- if (sigprocmask(SIG_BLOCK, &nmask, &omask) == -1)
- return -1;
-+#endif /* !__minix */
- for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
- s = rresvport_af(&lport, r->ai_family);
- if (s < 0) {
-@@ -245,11 +255,16 @@
- r = r->ai_next;
- continue;
- } else {
-+#ifndef __minix
- (void)sigprocmask(SIG_SETMASK, &omask, NULL);
-+#endif /* !__minix */
- return (-1);
- }
- }
-+#ifndef __minix
-+ /* No OOB support in Minix. */
- fcntl(s, F_SETOWN, pid);
-+#endif /* !__minix */
- if (connect(s, r->ai_addr, r->ai_addrlen) >= 0)
- break;
- (void)close(s);
-@@ -286,7 +301,10 @@
- }
- (void)fprintf(stderr, "%s: %s\n", res->ai_canonname,
- strerror(errno));
-+#ifndef __minix
-+ /* No OOB support in Minix. */
- (void)sigprocmask(SIG_SETMASK, &omask, NULL);
-+#endif /* !__minix */
- return (-1);
- }
- lport--;
-@@ -363,14 +381,18 @@
- }
- goto bad2;
- }
-+#ifndef __minix
- (void)sigprocmask(SIG_SETMASK, &omask, NULL);
-+#endif /* __minix */
- return (s);
- bad2:
- if (lport)
- (void)close(*fd2p);
- bad:
- (void)close(s);
-+#ifndef __minix
- (void)sigprocmask(SIG_SETMASK, &omask, NULL);
-+#endif /* __minix */
- return (-1);
- }
-
-diff -ru nbsdsrc/src/lib/libc/net/send.c lib/nbsd_libc/net/send.c
---- nbsdsrc/src/lib/libc/net/send.c
-+++ lib/nbsd_libc/net/send.c
-@@ -44,9 +44,15 @@
-
- #include <stddef.h>
-
-+#ifdef __minix
-+/* UGLY: name clash with minix ipc.
-+ * Better solution: redefine minix ipc.
-+ */
-+#else /* !__minix */
- #ifdef __weak_alias
- __weak_alias(send, _send)
- #endif
-+#endif /* !__minix */
-
- ssize_t
- send(s, msg, len, flags)
-diff -ru nbsdsrc/src/lib/libc/nls/catopen.c lib/nbsd_libc/nls/catopen.c
---- nbsdsrc/src/lib/libc/nls/catopen.c
-+++ lib/nbsd_libc/nls/catopen.c
-@@ -169,6 +169,19 @@
- return (nl_catd)-1;
- }
-
-+#ifdef __minix
-+ data = mmap(0, (size_t)st.st_size, PROT_READ, MAP_ANON, -1, (off_t)0);
-+ if (data == MAP_FAILED) {
-+ return (nl_catd)-1;
-+ }
-+
-+ if (read(fd, data, st.st_size) != st.st_size)
-+ {
-+ munmap(data, (size_t)st.st_size);
-+ return (nl_catd)-1;
-+ }
-+ close (fd);
-+#else /* !__minix */
- data = mmap(0, (size_t)st.st_size, PROT_READ, MAP_FILE|MAP_SHARED, fd,
- (off_t)0);
- close (fd);
-@@ -176,6 +189,7 @@
- if (data == MAP_FAILED) {
- return (nl_catd)-1;
- }
-+#endif /* __minix */
-
- if (ntohl((u_int32_t)((struct _nls_cat_hdr *)data)->__magic) !=
- _NLS_MAGIC) {
-diff -ru nbsdsrc/src/lib/libc/resolv/Makefile.inc lib/nbsd_libc/resolv/Makefile.inc
---- nbsdsrc/src/lib/libc/resolv/Makefile.inc
-+++ lib/nbsd_libc/resolv/Makefile.inc
-@@ -2,7 +2,11 @@
-
- # net sources
- .PATH: ${.CURDIR}/resolv
-+.if defined(__MINIX)
-+CPPFLAGS+=-DCOMPAT__RES -DNEED_PSELECT
-+.else
- CPPFLAGS+=-DCOMPAT__RES -DUSE_POLL
-+.endif
-
- SRCS+= __dn_comp.c __res_close.c __res_send.c h_errno.c \
- herror.c res_comp.c res_data.c res_debug.c \
-diff -ru nbsdsrc/src/lib/libc/resolv/res_comp.c lib/nbsd_libc/resolv/res_comp.c
---- nbsdsrc/src/lib/libc/resolv/res_comp.c
-+++ lib/nbsd_libc/resolv/res_comp.c
-@@ -96,7 +96,7 @@
- #ifdef __weak_alias
- __weak_alias(dn_expand,_dn_expand)
- __weak_alias(dn_comp,__dn_comp)
--#if 0
-+#ifdef __minix
- __weak_alias(dn_skipname,__dn_skipname)
- __weak_alias(res_hnok,__res_hnok)
- __weak_alias(res_ownok,__res_ownok)
-diff -ru nbsdsrc/src/lib/libc/resolv/res_init.c lib/nbsd_libc/resolv/res_init.c
---- nbsdsrc/src/lib/libc/resolv/res_init.c
-+++ lib/nbsd_libc/resolv/res_init.c
-@@ -88,7 +88,9 @@
- #include <sys/socket.h>
- #include <sys/stat.h>
- #include <sys/time.h>
-+#ifndef __minix
- #include <sys/event.h>
-+#endif /* !__minix */
-
- #include <netinet/in.h>
- #include <arpa/inet.h>
-@@ -348,7 +350,9 @@
- nserv = 0;
- if ((fp = fopen(_PATH_RESCONF, "r")) != NULL) {
- struct stat st;
-+#ifndef __minix
- struct kevent kc;
-+#endif /* !__minix */
-
- /* read the config file */
- while (fgets(buf, sizeof(buf), fp) != NULL) {
-@@ -502,6 +506,7 @@
- if (fstat(statp->_u._ext.ext->resfd, &st) != -1)
- __res_conf_time = statp->_u._ext.ext->res_conf_time =
- st.st_mtimespec;
-+#ifndef __minix
- statp->_u._ext.ext->kq = kqueue();
- (void)fcntl(statp->_u._ext.ext->kq, F_SETFD, FD_CLOEXEC);
- (void)fcntl(statp->_u._ext.ext->resfd, F_SETFD, FD_CLOEXEC);
-@@ -509,6 +514,9 @@
- EV_ADD|EV_ENABLE|EV_CLEAR, NOTE_DELETE|NOTE_WRITE| NOTE_EXTEND|
- NOTE_ATTRIB|NOTE_LINK|NOTE_RENAME|NOTE_REVOKE, 0, 0);
- (void)kevent(statp->_u._ext.ext->kq, &kc, 1, NULL, 0, &ts);
-+#else /* __minix */
-+ statp->_u._ext.ext->kq = -1;
-+#endif /* !__minix */
- } else {
- statp->_u._ext.ext->kq = -1;
- statp->_u._ext.ext->resfd = -1;
-@@ -565,7 +573,13 @@
- int
- res_check(res_state statp, struct timespec *mtime)
- {
-+#ifdef __minix
- /*
-+ * XXX: No update on change.
-+ */
-+ return 0;
-+#else /* !__minix */
-+ /*
- * If the times are equal, then we check if there
- * was a kevent related to resolv.conf and reload.
- * If the times are not equal, then we don't bother
-@@ -593,6 +607,7 @@
- if (mtime)
- *mtime = __res_conf_time;
- return 1;
-+#endif /* !__minix */
- }
-
- static void
-diff -ru nbsdsrc/src/lib/libc/stdio/fseeko.c lib/nbsd_libc/stdio/fseeko.c
---- nbsdsrc/src/lib/libc/stdio/fseeko.c
-+++ lib/nbsd_libc/stdio/fseeko.c
-@@ -150,7 +150,16 @@
- fp->_flags |= __SNPT;
- goto dumb;
- }
-- fp->_blksize = st.st_blksize;
-+#ifdef __minix
-+ if (st.st_blksize == 0) {
-+ /* 0 in 2 cases: upgrade from old to new struct stat or
-+ * there is a bug in underlying fs.
-+ */
-+ fp->_blksize = MINIX_ST_BLKSIZE;
-+ } else
-+#endif
-+ fp->_blksize = st.st_blksize;
-+
- fp->_flags |= __SOPT;
- }
-
-diff -ru nbsdsrc/src/lib/libc/stdio/makebuf.c lib/nbsd_libc/stdio/makebuf.c
---- nbsdsrc/src/lib/libc/stdio/makebuf.c
-+++ lib/nbsd_libc/stdio/makebuf.c
-@@ -114,18 +114,22 @@
-
- /* could be a tty iff it is a character device */
- *couldbetty = S_ISCHR(st.st_mode);
-- if (st.st_blksize == 0) {
-- *bufsize = BUFSIZ;
-- return (__SNPT);
-- }
-
- /*
- * Optimise fseek() only if it is a regular file. (The test for
- * __sseek is mainly paranoia.) It is safe to set _blksize
- * unconditionally; it will only be used if __SOPT is also set.
- */
-- *bufsize = st.st_blksize;
-- fp->_blksize = st.st_blksize;
-+#ifdef __minix
-+ if (st.st_blksize == 0) {
-+ /* 0 in 2 cases: upgrade from old to new struct stat or
-+ * there is a bug in underlying fs.
-+ */
-+ *bufsize = fp->_blksize = MINIX_ST_BLKSIZE;
-+ } else
-+#endif
-+ *bufsize = fp->_blksize = st.st_blksize;
-+
- return ((st.st_mode & S_IFMT) == S_IFREG && fp->_seek == __sseek ?
- __SOPT : __SNPT);
- }
-diff -ru nbsdsrc/src/lib/libc/stdlib/Makefile.inc lib/nbsd_libc/stdlib/Makefile.inc
---- nbsdsrc/src/lib/libc/stdlib/Makefile.inc
-+++ lib/nbsd_libc/stdlib/Makefile.inc
-@@ -4,18 +4,34 @@
- # stdlib sources
- .PATH: ${ARCHDIR}/stdlib ${.CURDIR}/stdlib
-
-+.if defined(__MINIX)
-+# pty.c not compiled
- SRCS+= _env.c _rand48.c \
- a64l.c abort.c atexit.c atof.c atoi.c atol.c atoll.c \
- bsearch.c drand48.c exit.c \
- getenv.c getopt.c getopt_long.c getsubopt.c \
- hcreate.c heapsort.c imaxdiv.c insque.c jrand48.c l64a.c lldiv.c \
- lcong48.c lrand48.c lsearch.c merge.c mi_vector_hash.c mrand48.c \
-+ nrand48.c putenv.c qabs.c qdiv.c qsort.c posix_openpt.c \
-+ radixsort.c rand.c rand_r.c random.c remque.c \
-+ seed48.c setenv.c srand48.c strsuftoll.c \
-+ strtoimax.c strtol.c strtoll.c strtoq.c strtoul.c strtoull.c \
-+ strtoumax.c strtouq.c system.c tdelete.c tfind.c tsearch.c twalk.c \
-+ unsetenv.c strfmon.c
-+.else
-+SRCS+= _env.c _rand48.c \
-+ a64l.c abort.c atexit.c atof.c atoi.c atol.c atoll.c \
-+ bsearch.c drand48.c exit.c \
-+ getenv.c getopt.c getopt_long.c getsubopt.c \
-+ hcreate.c heapsort.c imaxdiv.c insque.c jrand48.c l64a.c lldiv.c \
-+ lcong48.c lrand48.c lsearch.c merge.c mi_vector_hash.c mrand48.c \
- nrand48.c putenv.c qabs.c qdiv.c qsort.c posix_openpt.c pty.c \
- radixsort.c rand.c rand_r.c random.c remque.c \
- seed48.c setenv.c srand48.c strsuftoll.c \
- strtoimax.c strtol.c strtoll.c strtoq.c strtoul.c strtoull.c \
- strtoumax.c strtouq.c system.c tdelete.c tfind.c tsearch.c twalk.c \
- unsetenv.c strfmon.c
-+.endif
-
- # These are often replaced by MD .S versions
- SRCS+= abs.c labs.c llabs.c imaxabs.c
-diff -ru nbsdsrc/src/lib/libc/stdlib/_env.c lib/nbsd_libc/stdlib/_env.c
---- nbsdsrc/src/lib/libc/stdlib/_env.c
-+++ lib/nbsd_libc/stdlib/_env.c
-@@ -29,6 +29,8 @@
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-+static int inited = 0;
-+
- #include <sys/cdefs.h>
- #if defined(LIBC_SCCS) && !defined(lint)
- __RCSID("$NetBSD: _env.c,v 1.5 2010/11/17 13:25:53 tron Exp $");
-@@ -157,6 +159,7 @@
- env_node_t *node;
-
- _DIAGASSERT(envvar != NULL);
-+ assert(inited);
- node = rb_tree_find_node(&env_tree, envvar);
- if (node != NULL) {
- rb_tree_remove_node(&env_tree, node);
-@@ -173,6 +176,7 @@
- {
- env_node_t *node;
-
-+ assert(inited);
- node = malloc(sizeof(*node) + length);
- if (node != NULL) {
- node->length = length;
-@@ -194,6 +198,8 @@
- {
- env_node_t *node;
-
-+ assert(inited);
-+
- _DIAGASSERT(envvar != NULL);
-
- node = rb_tree_find_node(&env_tree, envvar);
-@@ -208,6 +214,7 @@
- size_t num_entries;
- env_node_t *node, *next;
-
-+ assert(inited);
- while (++marker == 0);
-
- /* Mark all nodes which are currently used. */
-@@ -401,5 +408,7 @@
- void
- __libc_env_init(void)
- {
-+ assert(!inited);
- rb_tree_init(&env_tree, &env_tree_ops);
-+ inited = 1;
- }
-diff -ru nbsdsrc/src/lib/libc/stdlib/atexit.c lib/nbsd_libc/stdlib/atexit.c
---- nbsdsrc/src/lib/libc/stdlib/atexit.c
-+++ lib/nbsd_libc/stdlib/atexit.c
-@@ -120,10 +120,12 @@
- void
- __libc_atexit_init(void)
- {
-+#ifdef _REENTRANT /* !__minix */
- mutexattr_t atexit_mutex_attr;
- mutexattr_init(&atexit_mutex_attr);
- mutexattr_settype(&atexit_mutex_attr, PTHREAD_MUTEX_RECURSIVE);
- mutex_init(&atexit_mutex, &atexit_mutex_attr);
-+#endif /* _REENTRANT */
- }
-
- /*
-diff -ru nbsdsrc/src/lib/libc/stdlib/malloc.c lib/nbsd_libc/stdlib/malloc.c
---- nbsdsrc/src/lib/libc/stdlib/malloc.c
-+++ lib/nbsd_libc/stdlib/malloc.c
-@@ -65,8 +65,10 @@
- # define malloc_pageshift 12U
- # define malloc_minsize 16U
- # endif
-+#ifndef __minix
- # define HAS_UTRACE
- # define UTRACE_LABEL
-+#endif /* __minix */
-
- #include <sys/cdefs.h>
- void utrace(struct ut *, int);
-@@ -210,9 +212,11 @@
- #define INIT_MMAP()
- #endif
-
-+#ifndef __minix
- #ifndef MADV_FREE
- #define MADV_FREE MADV_DONTNEED
- #endif
-+#endif /* !__minix */
-
- /* Number of free pages we cache */
- static size_t malloc_cache = 16;
-@@ -485,8 +489,10 @@
- case '<': malloc_cache >>= 1; break;
- case 'a': malloc_abort = 0; break;
- case 'A': malloc_abort = 1; break;
-+#ifndef __minix
- case 'h': malloc_hint = 0; break;
- case 'H': malloc_hint = 1; break;
-+#endif /* !__minix */
- case 'r': malloc_realloc = 0; break;
- case 'R': malloc_realloc = 1; break;
- case 'j': malloc_junk = 0; break;
-@@ -932,8 +938,10 @@
- if (malloc_junk)
- memset(ptr, SOME_JUNK, l);
-
-+#ifndef __minix
- if (malloc_hint)
- madvise(ptr, l, MADV_FREE);
-+#endif /* !__minix */
-
- tail = (char *)ptr+l;
-
-diff -ru nbsdsrc/src/lib/libc/stdlib/system.c lib/nbsd_libc/stdlib/system.c
---- nbsdsrc/src/lib/libc/stdlib/system.c
-+++ lib/nbsd_libc/stdlib/system.c
-@@ -91,7 +91,11 @@
- }
-
- (void)__readlockenv();
-+#ifdef __minix
-+ switch(pid = fork() ) {
-+#else /* !__minix */
- switch(pid = vfork()) {
-+#endif /* !__minix */
- case -1: /* error */
- (void)__unlockenv();
- sigaction(SIGINT, &intsa, NULL);
-diff -ru nbsdsrc/src/lib/libc/termios/Makefile.inc lib/nbsd_libc/termios/Makefile.inc
---- nbsdsrc/src/lib/libc/termios/Makefile.inc
-+++ lib/nbsd_libc/termios/Makefile.inc
-@@ -2,9 +2,18 @@
-
- .PATH: ${.CURDIR}/termios
-
-+.if defined(__MINIX)
-+# Not supported by Minix: tcgetsid.c
- SRCS+= cfgetispeed.c cfgetospeed.c cfmakeraw.c cfsetispeed.c cfsetospeed.c \
- cfsetspeed.c tcdrain.c tcflow.c tcflush.c tcgetattr.c tcgetpgrp.c \
-+ tcsendbreak.c tcsetattr.c tcsetpgrp.c
-+.else
-+SRCS+= cfgetispeed.c cfgetospeed.c cfmakeraw.c cfsetispeed.c cfsetospeed.c \
-+ cfsetspeed.c tcdrain.c tcflow.c tcflush.c tcgetattr.c tcgetpgrp.c \
- tcgetsid.c tcsendbreak.c tcsetattr.c tcsetpgrp.c
-+.endif
-+
-+
-
- MAN+= tcgetpgrp.3 tcgetsid.3 tcsendbreak.3 tcsetattr.3 tcsetpgrp.3
-
-diff -ru nbsdsrc/src/lib/libc/termios/cfmakeraw.c lib/nbsd_libc/termios/cfmakeraw.c
---- nbsdsrc/src/lib/libc/termios/cfmakeraw.c
-+++ lib/nbsd_libc/termios/cfmakeraw.c
-@@ -59,7 +59,11 @@
-
- _DIAGASSERT(t != NULL);
-
-+#ifdef __minix
-+ t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
-+#else /* !__minix */
- t->c_iflag &= ~(IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
-+#endif /* !__minix */
- t->c_oflag &= ~OPOST;
- t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
- t->c_cflag &= ~(CSIZE|PARENB);
-diff -ru nbsdsrc/src/lib/libc/termios/tcflow.c lib/nbsd_libc/termios/tcflow.c
---- nbsdsrc/src/lib/libc/termios/tcflow.c
-+++ lib/nbsd_libc/termios/tcflow.c
-@@ -54,6 +54,10 @@
- tcflow(fd, action)
- int fd, action;
- {
-+#ifdef __minix
-+ _DIAGASSERT(fd != -1);
-+ return ioctl(fd, TCFLOW, &action);
-+#else /* !__minix */
- struct termios term;
- u_char c;
-
-@@ -77,4 +81,5 @@
- return (-1);
- }
- /* NOTREACHED */
-+#endif /* !__minix */
- }
-diff -ru nbsdsrc/src/lib/libc/termios/tcflush.c lib/nbsd_libc/termios/tcflush.c
---- nbsdsrc/src/lib/libc/termios/tcflush.c
-+++ lib/nbsd_libc/termios/tcflush.c
-@@ -54,6 +54,10 @@
- tcflush(fd, which)
- int fd, which;
- {
-+#ifdef __minix
-+ _DIAGASSERT(fd != -1);
-+ return ioctl(fd, TCFLSH, &which);
-+#else /* !__minix */
- int com;
-
- _DIAGASSERT(fd != -1);
-@@ -73,4 +77,5 @@
- return (-1);
- }
- return (ioctl(fd, TIOCFLUSH, &com));
-+#endif /* !__minix */
- }
-diff -ru nbsdsrc/src/lib/libc/termios/tcsendbreak.c lib/nbsd_libc/termios/tcsendbreak.c
---- nbsdsrc/src/lib/libc/termios/tcsendbreak.c
-+++ lib/nbsd_libc/termios/tcsendbreak.c
-@@ -41,7 +41,9 @@
- #include "namespace.h"
- #include <sys/types.h>
- #include <sys/ioctl.h>
-+#ifndef __minix
- #include <sys/time.h>
-+#endif /* !__minix */
-
- #include <assert.h>
- #include <errno.h>
-@@ -57,6 +59,10 @@
- tcsendbreak(fd, len)
- int fd, len;
- {
-+#ifdef __minix
-+ _DIAGASSERT(fd != -1);
-+ return ioctl(fd, TCSBRK, &len);
-+#else /* !__minix */
- static const struct timespec sleepytime = { 0, 400000000 };
-
- _DIAGASSERT(fd != -1);
-@@ -67,4 +73,5 @@
- if (ioctl(fd, TIOCCBRK, 0) == -1)
- return (-1);
- return (0);
-+#endif /* !__minix */
- }
-diff -ru nbsdsrc/src/lib/libc/termios/tcsetattr.c lib/nbsd_libc/termios/tcsetattr.c
---- nbsdsrc/src/lib/libc/termios/tcsetattr.c
-+++ lib/nbsd_libc/termios/tcsetattr.c
-@@ -60,11 +60,15 @@
- _DIAGASSERT(fd != -1);
- _DIAGASSERT(t != NULL);
-
-+#ifndef __minix
- if (opt & TCSASOFT) {
- localterm = *t;
- localterm.c_cflag |= CIGNORE;
- t = &localterm;
- }
-+#else /* __minix */
-+#define TCSASOFT 0
-+#endif /* __minix */
- switch (opt & ~TCSASOFT) {
- case TCSANOW:
- return (ioctl(fd, TIOCSETA, t));
-diff -ru nbsdsrc/src/lib/libc/time/strftime.c lib/nbsd_libc/time/strftime.c
---- nbsdsrc/src/lib/libc/time/strftime.c
-+++ lib/nbsd_libc/time/strftime.c
-@@ -553,6 +553,11 @@
- pt = _conv(diff, "%04d", pt, ptlim);
- }
- continue;
-+#ifdef __minix
-+ case '+':
-+ pt = _fmt(sp, Locale->c_fmt, t, pt, ptlim, warnp);
-+ continue;
-+#endif /* !__minix */
- #if 0
- case '+':
- pt = _fmt(sp, Locale->date_fmt, t, pt, ptlim,
-diff -ru nbsdsrc/src/lib/libc/yp/yplib.c lib/nbsd_libc/yp/yplib.c
---- nbsdsrc/src/lib/libc/yp/yplib.c
-+++ lib/nbsd_libc/yp/yplib.c
-@@ -172,8 +172,10 @@
- }
- (void)memset(&ysd->dom_server_addr, 0,
- sizeof ysd->dom_server_addr);
-+#ifndef __minix
- ysd->dom_server_addr.sin_len =
- sizeof(struct sockaddr_in);
-+#endif /* !__minix */
- ysd->dom_server_addr.sin_family = AF_INET;
- bn = &ybr.ypbind_respbody.ypbind_bindinfo;
- ysd->dom_server_addr.sin_port =
-@@ -197,7 +199,9 @@
- if (ysd->dom_vers == -1 || ysd->dom_vers == 0) {
- struct ypbind_binding *bn;
- (void)memset(&clnt_sin, 0, sizeof clnt_sin);
-+#ifndef __minix
- clnt_sin.sin_len = sizeof(struct sockaddr_in);
-+#endif /* !__minix */
- clnt_sin.sin_family = AF_INET;
- clnt_sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-
-@@ -228,7 +232,9 @@
-
- (void)memset(&ysd->dom_server_addr, 0,
- sizeof ysd->dom_server_addr);
-+#ifndef __minix
- ysd->dom_server_addr.sin_len = sizeof(struct sockaddr_in);
-+#endif /* !__minix */
- ysd->dom_server_addr.sin_family = AF_INET;
- bn = &ypbr.ypbind_respbody.ypbind_bindinfo;
- ysd->dom_server_addr.sin_port =
+++ /dev/null
-diff -ru nbsdsrc/src/include/Makefile nbsd_include/Makefile
---- nbsdsrc/src/include/Makefile
-+++ nbsd_include/Makefile
-@@ -7,10 +7,28 @@
-
- # Missing: mp.h
-
-+.if defined(__MINIX)
-+# Avoid installing: kvm.h lwp.h sa.h (latter not installed anyway)
- INCS= a.out.h aio.h ar.h assert.h atomic.h \
- bitstring.h bm.h cdbr.h cdbw.h complex.h cpio.h ctype.h \
- db.h dirent.h disktab.h dlfcn.h err.h errno.h fenv.h fmtmsg.h fnmatch.h \
- fstab.h fts.h ftw.h getopt.h glob.h grp.h ifaddrs.h iconv.h \
-+ inttypes.h iso646.h langinfo.h libgen.h \
-+ limits.h link.h link_aout.h link_elf.h locale.h \
-+ login_cap.h malloc.h math.h md2.h \
-+ memory.h mntopts.h monetary.h mpool.h mqueue.h \
-+ ndbm.h netconfig.h netdb.h netgroup.h nlist.h nl_types.h nsswitch.h \
-+ paths.h pwd.h randomid.h ranlib.h re_comp.h regex.h regexp.h \
-+ resolv.h res_update.h rmt.h sched.h search.h semaphore.h setjmp.h \
-+ sgtty.h signal.h stab.h stdbool.h stddef.h stdio.h stdlib.h string.h \
-+ strings.h stringlist.h struct.h sysexits.h tar.h time.h \
-+ ttyent.h tzfile.h ucontext.h ulimit.h unistd.h util.h utime.h utmp.h \
-+ utmpx.h uuid.h varargs.h vis.h wchar.h wctype.h wordexp.h
-+.else
-+INCS= a.out.h aio.h ar.h assert.h atomic.h \
-+ bitstring.h bm.h cdbr.h cdbw.h complex.h cpio.h ctype.h \
-+ db.h dirent.h disktab.h dlfcn.h err.h errno.h fenv.h fmtmsg.h fnmatch.h \
-+ fstab.h fts.h ftw.h getopt.h glob.h grp.h ifaddrs.h iconv.h \
- inttypes.h iso646.h kvm.h langinfo.h libgen.h \
- limits.h link.h link_aout.h link_elf.h locale.h \
- login_cap.h lwp.h malloc.h math.h md2.h \
-@@ -22,6 +40,7 @@
- strings.h stringlist.h struct.h sysexits.h tar.h time.h \
- ttyent.h tzfile.h ucontext.h ulimit.h unistd.h util.h utime.h utmp.h \
- utmpx.h uuid.h varargs.h vis.h wchar.h wctype.h wordexp.h
-+.endif
- INCS+= arpa/ftp.h arpa/inet.h arpa/nameser.h arpa/nameser_compat.h \
- arpa/telnet.h arpa/tftp.h
- INCS+= protocols/dumprestore.h protocols/routed.h protocols/rwhod.h \
-@@ -42,8 +61,22 @@
-
- INCSDIR= /usr/include
-
-+.if defined(__MINIX)
-+# RPC is not compiled in the libc. This include also needs
-+# rpcgen, which can be compiled if needed.
-+.else
- SUBDIR= rpc
-+.endif
-+.if !defined(__MINIX)
- SUBDIR+= ../common/include/prop
-+.endif
-+
-+.if defined(__MINIX)
-+.include "${MINIXSRCDIR}/common/include/Makefile.inc"
-+SUBDIR+= arch/${MACHINE}
-+SUBDIR+= arch sys minix
-+SUBDIR+= net netinet netinet6
-+.endif
-
- .include <bsd.prog.mk>
- .include <bsd.subdir.mk>
-diff -ru nbsdsrc/src/include/a.out.h nbsd_include/a.out.h
---- nbsdsrc/src/include/a.out.h
-+++ nbsd_include/a.out.h
-@@ -60,9 +60,14 @@
- #ifndef _AOUT_H_
- #define _AOUT_H_
-
-+#ifdef __minix
-+#include <compat/a.out.h>
-+#else /* !__minix */
-+
- #include <sys/exec_aout.h>
-
- #define _AOUT_INCLUDE_
- #include <nlist.h>
-
-+#endif /* !__minix */
- #endif /* !_AOUT_H_ */
-diff -ru nbsdsrc/src/include/arpa/nameser_compat.h nbsd_include/arpa/nameser_compat.h
---- nbsdsrc/src/include/arpa/nameser_compat.h
-+++ nbsd_include/arpa/nameser_compat.h
-@@ -133,6 +133,14 @@
- unsigned arcount :16; /*%< number of resource entries */
- } HEADER;
-
-+#ifdef _MINIX
-+#define dh_id id
-+#define dh_qdcount qdcount
-+#define dh_ancount ancount
-+#define dh_nscount nscount
-+#define dh_arcount arcount
-+#endif
-+
- #define PACKETSZ NS_PACKETSZ
- #define MAXDNAME NS_MAXDNAME
- #define MAXCDNAME NS_MAXCDNAME
-diff -ru nbsdsrc/src/include/dirent.h nbsd_include/dirent.h
---- nbsdsrc/src/include/dirent.h
-+++ nbsd_include/dirent.h
-@@ -43,16 +43,20 @@
- */
- #include <sys/dirent.h>
-
-+#ifndef __minix
- #if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
- #define d_ino d_fileno /* backward compatibility */
- #endif
-+#endif /* !__minix */
-
- typedef struct _dirdesc DIR;
-
- #if defined(_NETBSD_SOURCE)
-
-+#ifndef __minix
- /* definitions for library routines operating on directories. */
- #define DIRBLKSIZ 1024
-+#endif
-
- /* structure describing an open directory. */
- struct _dirdesc {
-diff -ru nbsdsrc/src/include/fts.h nbsd_include/fts.h
---- nbsdsrc/src/include/fts.h
-+++ nbsd_include/fts.h
-@@ -75,7 +75,9 @@
- #define FTS_PHYSICAL 0x010 /* physical walk */
- #define FTS_SEEDOT 0x020 /* return dot and dot-dot */
- #define FTS_XDEV 0x040 /* don't cross devices */
-+#ifndef __minix
- #define FTS_WHITEOUT 0x080 /* return whiteout information */
-+#endif
- #define FTS_OPTIONMASK 0x0ff /* valid user option mask */
-
- #define FTS_NAMEONLY 0x100 /* (private) child names only */
-diff -ru nbsdsrc/src/include/limits.h nbsd_include/limits.h
---- nbsdsrc/src/include/limits.h
-+++ nbsd_include/limits.h
-@@ -113,4 +113,9 @@
- #include <machine/limits.h>
- #include <sys/syslimits.h>
-
-+#ifdef __minix
-+#define SYMLOOP_MAX 16
-+#define SYMLINK_MAX 1024
-+#endif
-+
- #endif /* !_LIMITS_H_ */
-diff -ru nbsdsrc/src/include/netdb.h nbsd_include/netdb.h
---- nbsdsrc/src/include/netdb.h
-+++ nbsd_include/netdb.h
-@@ -131,6 +131,9 @@
- #ifndef _PATH_SERVICES_DB
- #define _PATH_SERVICES_DB "/var/db/services.db"
- #endif
-+#ifdef __minix
-+#define _PATH_SERVACCES "/etc/serv.access"
-+#endif
- #endif
-
- __BEGIN_DECLS
-diff -ru nbsdsrc/src/include/paths.h nbsd_include/paths.h
---- nbsdsrc/src/include/paths.h
-+++ nbsd_include/paths.h
-@@ -124,5 +124,9 @@
- #define _PATH_VI "/usr/bin/vi"
- #endif
-
-+#ifdef __minix
-+#include <minix/paths.h>
-+#endif /* !__minix */
-+
- #endif /* !_PATHS_H_ */
-
-diff -ru nbsdsrc/src/include/pwd.h nbsd_include/pwd.h
---- nbsdsrc/src/include/pwd.h
-+++ nbsd_include/pwd.h
-@@ -61,6 +61,14 @@
- * SUCH DAMAGE.
- */
-
-+#if defined(__minix) && defined(_MINIX_COMPAT)
-+#include <compat/pwd.h>
-+/* Avoid inclusion of the rest of the header. */
-+#ifndef _PWD_H_
-+#define _PWD_H_
-+#endif
-+#endif /* __minix && _MINIX_COMPAT */
-+
- #ifndef _PWD_H_
- #define _PWD_H_
-
-diff -ru nbsdsrc/src/include/sched.h nbsd_include/sched.h
---- nbsdsrc/src/include/sched.h
-+++ nbsd_include/sched.h
-@@ -29,6 +29,9 @@
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-+#ifdef __minix
-+#define _SCHED_H_
-+#endif /* !__minix */
- #ifndef _SCHED_H_
- #define _SCHED_H_
-
-diff -ru nbsdsrc/src/include/signal.h nbsd_include/signal.h
---- nbsdsrc/src/include/signal.h
-+++ nbsd_include/signal.h
-@@ -62,6 +62,7 @@
- int __libc_sigaction14(int, const struct sigaction * __restrict,
- struct sigaction * __restrict);
-
-+#ifndef __minix
- #if (_POSIX_C_SOURCE - 0L) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
- defined(_NETBSD_SOURCE)
- int pthread_sigmask(int, const sigset_t * __restrict,
-@@ -73,6 +74,7 @@
- #define pthread_sigmask __libc_thr_sigsetmask
- #endif /* __LIBPTHREAD_SOURCE__ */
- #endif
-+#endif /* __minix */
-
- #ifndef __LIBC12_SOURCE__
- int sigaction(int, const struct sigaction * __restrict,
-@@ -160,11 +162,13 @@
- (_XOPEN_SOURCE - 0) >= 500 || defined(_NETBSD_SOURCE)
- int killpg(pid_t, int);
- int siginterrupt(int, int);
-+#ifndef __minix
- int sigstack(const struct sigstack *, struct sigstack *);
- #ifndef __LIBC12_SOURCE__
- int sigaltstack(const stack_t * __restrict, stack_t * __restrict)
- __RENAME(__sigaltstack14);
- #endif
-+#endif /* !__minix */
- int sighold(int);
- int sigignore(int);
- int sigpause(int);
-@@ -178,10 +182,13 @@
- */
- #if (_POSIX_C_SOURCE - 0) >= 199309L || (_XOPEN_SOURCE - 0) >= 500 || \
- defined(_NETBSD_SOURCE)
-+#ifndef __minix
- int sigwait (const sigset_t * __restrict, int * __restrict);
- int sigwaitinfo(const sigset_t * __restrict, siginfo_t * __restrict);
-+#endif /* !__minix */
- void psiginfo(const siginfo_t *, const char *);
-
-+#ifndef __minix
- #ifndef __LIBC12_SOURCE__
- struct timespec;
- int sigtimedwait(const sigset_t * __restrict,
-@@ -191,15 +198,18 @@
- siginfo_t * __restrict, struct timespec * __restrict)
- __RENAME(____sigtimedwait50);
- #endif
-+#endif /* !__minix */
- #endif /* _POSIX_C_SOURCE >= 200112 || _XOPEN_SOURCE_EXTENDED || ... */
-
-
- #if defined(_NETBSD_SOURCE)
-+#ifndef __minix
- #ifndef __PSIGNAL_DECLARED
- #define __PSIGNAL_DECLARED
- /* also in unistd.h */
- void psignal(int, const char *);
- #endif /* __PSIGNAL_DECLARED */
-+#endif /* !__minix */
- int sigblock(int);
- int sigsetmask(int);
- #endif /* _NETBSD_SOURCE */
-diff -ru nbsdsrc/src/include/stdio.h nbsd_include/stdio.h
---- nbsdsrc/src/include/stdio.h
-+++ nbsd_include/stdio.h
-@@ -274,7 +274,7 @@
- __printflike(2, 0);
- #endif
-
--#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
-+#if !defined(__minix) && (defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE))
- int rename (const char *, const char *) __RENAME(__posix_rename);
- #else
- int rename (const char *, const char *);
-diff -ru nbsdsrc/src/include/stdlib.h nbsd_include/stdlib.h
---- nbsdsrc/src/include/stdlib.h
-+++ nbsd_include/stdlib.h
-@@ -244,6 +244,8 @@
- void *alloca(int); /* built-in for gcc */
- #elif defined(__PCC__) && !defined(__GNUC__)
- #define alloca(size) __builtin_alloca(size)
-+#elif (__GNUC__ >= 2)
-+#define alloca(size) __builtin_alloca(size)
- #else
- void *alloca(size_t);
- #endif /* __GNUC__ */
-@@ -265,9 +267,11 @@
- void csetexpandtc(int);
-
- int daemon(int, int);
-+#ifndef __minix
- #ifndef __LIBC12_SOURCE__
- __aconst char *devname(dev_t, mode_t) __RENAME(__devname50);
- #endif
-+#endif /* !__minix */
-
- #define HN_DECIMAL 0x01
- #define HN_NOSPACE 0x02
-@@ -280,7 +284,9 @@
- int humanize_number(char *, size_t, int64_t, const char *, int, int);
- int dehumanize_number(const char *, int64_t *);
-
-+#ifndef __minix
- devmajor_t getdevmajor(const char *, mode_t);
-+#endif /* !__minix */
- int getloadavg(double [], int);
-
- int getenv_r(const char *, char *, size_t);
-diff -ru nbsdsrc/src/include/time.h nbsd_include/time.h
---- nbsdsrc/src/include/time.h
-+++ nbsd_include/time.h
-@@ -65,12 +65,18 @@
- #undef _BSD_CLOCKID_T_
- #endif
-
-+#ifndef __minix
- #ifdef _BSD_TIMER_T_
- typedef _BSD_TIMER_T_ timer_t;
- #undef _BSD_TIMER_T_
- #endif
-+#endif /* !__minix */
-
-+#ifdef __minix
-+#define CLOCKS_PER_SEC 60
-+#else
- #define CLOCKS_PER_SEC 100
-+#endif
-
- struct tm {
- int tm_sec; /* seconds after the minute [0-61] */
-@@ -110,7 +116,11 @@
- * need to include unistd.h
- */
- long __sysconf(int);
-+#ifdef __minix
-+#define CLK_TCK (__sysconf(3))
-+#else
- #define CLK_TCK (__sysconf(39))
-+#endif /* !__minix */
- #endif
- #endif
-
-@@ -143,22 +153,28 @@
- struct sigevent;
- struct itimerspec;
- #ifndef __LIBC12_SOURCE__
-+#ifndef __minix
- int clock_getres(clockid_t, struct timespec *)
- __RENAME(__clock_getres50);
- int clock_gettime(clockid_t, struct timespec *)
- __RENAME(__clock_gettime50);
- int clock_settime(clockid_t, const struct timespec *)
- __RENAME(__clock_settime50);
-+#endif /* !__minix */
- int nanosleep(const struct timespec *, struct timespec *)
- __RENAME(__nanosleep50);
-+#ifndef __minix
- int timer_gettime(timer_t, struct itimerspec *) __RENAME(__timer_gettime50);
- int timer_settime(timer_t, int, const struct itimerspec * __restrict,
- struct itimerspec * __restrict) __RENAME(__timer_settime50);
-+#endif /* !__minix */
- #endif
-+#ifndef __minix
- int timer_create(clockid_t, struct sigevent * __restrict,
- timer_t * __restrict);
- int timer_delete(timer_t);
- int timer_getoverrun(timer_t);
-+#endif /* __minix */
- #endif /* _POSIX_C_SOURCE >= 199309 || _XOPEN_SOURCE >= 500 || ... */
-
- #if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
-@@ -204,6 +220,10 @@
- __attribute__((__format__(__strftime__, 4, 0)));
-
- #endif /* _NETBSD_SOURCE */
-+
-+#ifdef _MINIX
-+int stime(time_t *_top);
-+#endif /* _MINIX */
-
- __END_DECLS
-
-diff -ru nbsdsrc/src/include/unistd.h nbsd_include/unistd.h
---- nbsdsrc/src/include/unistd.h
-+++ nbsd_include/unistd.h
-@@ -88,7 +88,7 @@
- int access(const char *, int);
- unsigned int alarm(unsigned int);
- int chdir(const char *);
--#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
-+#if !defined(__minix) && (defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE))
- int chown(const char *, uid_t, gid_t) __RENAME(__posix_chown);
- #else
- int chown(const char *, uid_t, gid_t);
-@@ -133,7 +133,9 @@
- #endif
- int rmdir(const char *);
- int setgid(gid_t);
-+#ifndef __minix
- int setpgid(pid_t, pid_t);
-+#endif /* !__minix */
- pid_t setsid(void);
- int setuid(uid_t);
- unsigned int sleep(unsigned int);
-@@ -192,7 +194,9 @@
- */
- #if (_POSIX_C_SOURCE - 0) >= 199309L || (_XOPEN_SOURCE - 0) >= 500 || \
- defined(_NETBSD_SOURCE)
-+#ifndef __minix
- int fdatasync(int);
-+#endif /* !__minix */
- int fsync(int);
- #endif
-
-@@ -222,7 +226,9 @@
- __aconst char *crypt(const char *, const char *);
- int encrypt(char *, int);
- char *getpass(const char *);
-+#ifndef __minix
- pid_t getsid(pid_t);
-+#endif /* !__minix */
- #endif
-
-
-@@ -243,7 +249,7 @@
-
- int brk(void *);
- int fchdir(int);
--#if defined(_XOPEN_SOURCE)
-+#if !defined(__minix) && defined(_XOPEN_SOURCE)
- int fchown(int, uid_t, gid_t) __RENAME(__posix_fchown);
- #else
- int fchown(int, uid_t, gid_t);
-@@ -253,29 +259,37 @@
- int gethostname(char *, size_t);
- __pure int
- getpagesize(void); /* legacy */
-+#ifndef __minix
- pid_t getpgid(pid_t);
-+#endif /* !__minix */
-+#ifndef __minix
- #if defined(_XOPEN_SOURCE)
- int lchown(const char *, uid_t, gid_t) __RENAME(__posix_lchown);
- #else
- int lchown(const char *, uid_t, gid_t);
- #endif
-+#endif /* !__minix */
- int lockf(int, int, off_t);
- #if __SSP_FORTIFY_LEVEL == 0
- ssize_t readlink(const char * __restrict, char * __restrict, size_t);
- #endif
- void *sbrk(intptr_t);
-+#ifndef __minix
- /* XXX prototype wrong! */
- int setpgrp(pid_t, pid_t); /* obsoleted by setpgid() */
- int setregid(gid_t, gid_t);
- int setreuid(uid_t, uid_t);
-+#endif /* !__minix */
- void swab(const void * __restrict, void * __restrict, ssize_t);
- int symlink(const char *, const char *);
- void sync(void);
- useconds_t ualarm(useconds_t, useconds_t);
- int usleep(useconds_t);
-+#ifndef __minix
- #ifndef __LIBC12_SOURCE__
- pid_t vfork(void) __RENAME(__vfork14);
- #endif
-+#endif /* !__minix */
-
- #ifndef __AUDIT__
- char *getwd(char *); /* obsoleted by getcwd() */
-@@ -295,9 +309,15 @@
- /*
- * Implementation-defined extensions
- */
-+#if defined(__minix)
-+int lseek64(int fd, u64_t _offset, int _whence, u64_t *_newpos);
-+#endif /* !__minix */
-+
- #if defined(_NETBSD_SOURCE)
-+#ifndef __minix
- int acct(const char *);
- int closefrom(int);
-+#endif /* !__minix */
- int des_cipher(const char *, char *, long, int);
- int des_setkey(const char *);
- void endusershell(void);
-@@ -315,15 +335,23 @@
- int iruserok(uint32_t, int, const char *, const char *);
- int issetugid(void);
- int nfssvc(int, void *);
-+#ifndef __minix
- int profil(char *, size_t, u_long, u_int);
- #ifndef __PSIGNAL_DECLARED
- #define __PSIGNAL_DECLARED
- /* also in signal.h */
- void psignal(int, const char *);
- #endif /* __PSIGNAL_DECLARED */
-+#endif /* !__minix */
- int rcmd(char **, int, const char *, const char *, const char *, int *);
-+#ifdef __minix
-+int reboot(int, ...);
-+#else
- int reboot(int, char *);
-+#endif
-+#ifndef __minix
- int revoke(const char *);
-+#endif
- int rresvport(int *);
- int ruserok(const char *, int, const char *, const char *);
- int setdomainname(const char *, size_t);
-@@ -341,8 +369,10 @@
- /* backwards-compatibility; also in string.h */
- __aconst char *strsignal(int);
- #endif /* __STRSIGNAL_DECLARED */
-+#ifndef __minix
- int swapctl(int, void *, int);
- int swapon(const char *); /* obsoleted by swapctl() */
-+#endif /* !__minix */
- int syscall(int, ...);
- quad_t __syscall(quad_t, ...);
- int undelete(const char *);
-@@ -364,4 +394,10 @@
- #endif
-
- __END_DECLS
-+
-+#ifdef __minix
-+/* Minix expects RBT_* flags to be included with <unistd.h> */
-+#include <sys/reboot.h>
-+#endif
-+
- #endif /* !_UNISTD_H_ */
-diff -ru nbsdsrc/src/include/utmp.h nbsd_include/utmp.h
---- nbsdsrc/src/include/utmp.h
-+++ nbsd_include/utmp.h
-@@ -39,12 +39,26 @@
- #ifndef _UTMP_H_
- #define _UTMP_H_
-
-+#ifdef __minix
-+#define _PATH_UTMP "/etc/utmp"
-+#define _PATH_WTMP "/usr/adm/wtmp"
-+#define _PATH_BTMP "/usr/adm/btmp"
-+#define _PATH_LASTLOG "/usr/adm/lastlog"
-+#define UTMP _PATH_UTMP
-+#define WTMP _PATH_WTMP
-+#define BTMP _PATH_BTMP
-+#else
- #define _PATH_UTMP "/var/run/utmp"
- #define _PATH_WTMP "/var/log/wtmp"
- #define _PATH_LASTLOG "/var/log/lastlog"
-+#endif
-
- #define UT_NAMESIZE 8
-+#ifdef __minix
-+#define UT_LINESIZE 12
-+#else
- #define UT_LINESIZE 8
-+#endif
- #define UT_HOSTSIZE 16
-
- struct lastlog {
-@@ -53,12 +67,34 @@
- char ll_host[UT_HOSTSIZE];
- };
-
-+#ifdef __minix
- struct utmp {
-+ char ut_name[UT_NAMESIZE]; /* user name */
-+ char ut_id[4]; /* /etc/inittab ID */
-+ char ut_line[UT_LINESIZE]; /* terminal name */
-+ char ut_host[UT_HOSTSIZE]; /* host name, when remote */
-+ short ut_pid; /* process id */
-+ short int ut_type; /* type of entry */
-+ long ut_time; /* login/logout time */
-+};
-+
-+/* Definitions for ut_type. */
-+#define RUN_LVL 1 /* this is a RUN_LEVEL record */
-+#define BOOT_TIME 2 /* this is a REBOOT record */
-+#define INIT_PROCESS 5 /* this process was spawned by INIT */
-+#define LOGIN_PROCESS 6 /* this is a 'getty' process waiting */
-+#define USER_PROCESS 7 /* any other user process */
-+#define DEAD_PROCESS 8 /* this process has died (wtmp only) */
-+
-+#else /* !__minix */
-+
-+struct utmp {
- char ut_line[UT_LINESIZE];
- char ut_name[UT_NAMESIZE];
- char ut_host[UT_HOSTSIZE];
- time_t ut_time;
- };
-+#endif /* __minix */
-
- __BEGIN_DECLS
- int utmpname(const char *);