ef0a265086
* VFS and installed MFSes must be in sync before and after this change * Use struct stat from NetBSD. It requires adding new STAT, FSTAT and LSTAT syscalls. Libc modification is both backward and forward compatible. Also new struct stat uses modern field sizes to avoid ABI incompatibility, when we update uid_t, gid_t and company. Exceptions are ino_t and off_t in old libc (though paddings added).
2656 lines
70 KiB
Diff
2656 lines
70 KiB
Diff
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-minix.awk ${MINIXSRCDIR}/nbsd_include/sys/errno.h
|
|
+ ${TOOL_AWK} -f ${.ALLSRC} > ${.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/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 =
|