Index: trunk/src/emx/include/sys/types.h
===================================================================
--- trunk/src/emx/include/sys/types.h	(revision 343)
+++ trunk/src/emx/include/sys/types.h	(revision 344)
@@ -1,142 +1,345 @@
-/* sys/types.h (emx+gcc) */
-
-#ifndef _SYS_TYPES_H
+/*-
+ * Copyright (c) 1982, 1986, 1991, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)types.h	8.6 (Berkeley) 2/19/95
+ * $FreeBSD: src/sys/sys/types.h,v 1.83 2003/03/28 15:27:30 mike Exp $
+ *
+ * @@level      FreeBSD 5.1
+ * @@changed    bird: Some EMX defines and a bit of toolkit pollution.
+ */
+
+#ifndef _SYS_TYPES_H_
+#define _SYS_TYPES_H_
 #define _SYS_TYPES_H
 
-/* freebsd/toolkit compatibility */
 #include <sys/cdefs.h>
-#include <sys/inttypes.h> /* includes machine/ansi.h */
-#include <machine/types.h>
+
+/* Machine type dependent parameters. */
 #include <machine/endian.h>
-
-#if !defined (_SIZE_T)
-#define _SIZE_T
-typedef unsigned long size_t;
-#undef  _BSD_SIZE_T_
-#endif
-
-#if !defined (_SSIZE_T)
-#define _SSIZE_T
-typedef int ssize_t;
-#undef  _BSD_SSIZE_T_
-#endif
-
-#if !defined (_TIME_T)
-#define _TIME_T
-typedef unsigned long time_t;
-#undef  _BSD_TIME_T_
-#endif
-
-#if !defined (_INO_T)
-#define _INO_T
-typedef int ino_t;
-#undef  _BSD_INO_T_
-#endif
-
-#if !defined (_DEV_T)
-#define _DEV_T
-typedef int dev_t;
-#undef  _BSD_DEV_T_
-#endif
-
-#if !defined (_OFF_T)
-#define _OFF_T
-typedef long off_t;
-#undef  _BSD_OFF_T_
-#endif
-
-#if !defined (_MODE_T)
-#define _MODE_T
-typedef int mode_t;
-#undef  _BSD_MODE_T_
-#endif
-
-#if !defined (_NLINK_T)
-#define _NLINK_T
-typedef int nlink_t;
-#undef  _BSD_NLINK_T_
-#endif
-
-#if !defined (_UID_T)
-#define _UID_T
-typedef int uid_t;
-#undef  _BSD_UID_T_
-#endif
-
-#if !defined (_PID_T)
-#define _PID_T
-typedef int pid_t;
-#undef  _BSD_PID_T_
-#endif
-
-#if !defined (_GID_T)
-#define _GID_T
-typedef int gid_t;
-#undef  _BSD_GID_T_
-#endif
-
+#include <sys/_types.h>
+
+/*#if __BSD_VISIBLE */                  /* bird: emx */
+#if !defined (_POSIX_SOURCE) || __BSD_VISIBLE /* bird: emx */
+typedef	unsigned char	u_char;
+typedef	unsigned short	u_short;
+typedef	unsigned int	u_int;
+typedef	unsigned long	u_long;
+typedef	unsigned short	ushort;		/* Sys V compatibility */
+typedef	unsigned int	uint;		/* Sys V compatibility */
+#endif
+
+/*
+ * XXX POSIX sized integrals that should appear only in <sys/stdint.h>.
+ */
+#ifndef _INT8_T_DECLARED
+typedef	__int8_t	int8_t;
+#define	_INT8_T_DECLARED
+#endif
+
+#ifndef _INT16_T_DECLARED
+typedef	__int16_t	int16_t;
+#define	_INT16_T_DECLARED
+#endif
+
+#ifndef _INT32_T_DECLARED
+typedef	__int32_t	int32_t;
+#define	_INT32_T_DECLARED
+#endif
+
+#ifndef _INT64_T_DECLARED
+typedef	__int64_t	int64_t;
+#define	_INT64_T_DECLARED
+#endif
+
+#ifndef _UINT8_T_DECLARED
+typedef	__uint8_t	uint8_t;
+#define	_UINT8_T_DECLARED
+#endif
+
+#ifndef _UINT16_T_DECLARED
+typedef	__uint16_t	uint16_t;
+#define	_UINT16_T_DECLARED
+#endif
+
+#ifndef _UINT32_T_DECLARED
+typedef	__uint32_t	uint32_t;
+#define	_UINT32_T_DECLARED
+#endif
+
+#ifndef _UINT64_T_DECLARED
+typedef	__uint64_t	uint64_t;
+#define	_UINT64_T_DECLARED
+#endif
+
+#ifndef _INTPTR_T_DECLARED
+typedef	__intptr_t	intptr_t;
+typedef	__uintptr_t	uintptr_t;
+#define	_INTPTR_T_DECLARED
+#endif
+
+typedef __uint8_t	u_int8_t;	/* unsigned integrals (deprecated) */
+typedef __uint16_t	u_int16_t;
+typedef __uint32_t	u_int32_t;
+typedef __uint64_t	u_int64_t;
+
+typedef	__uint64_t	u_quad_t;	/* quads (deprecated) */
+typedef	__int64_t	quad_t;
+typedef	quad_t *	qaddr_t;
+
+typedef	char *		caddr_t;	/* core address */
+typedef	__const char *	c_caddr_t;	/* core address, pointer to const */
+typedef	__volatile char *v_caddr_t;	/* core address, pointer to volatile */
+
+#if !defined(_CLOCK_T_DECLARED) && !defined(_CLOCK_T) /* bird: emx */
+typedef	__clock_t	clock_t;
+#define	_CLOCK_T_DECLARED
+#define _CLOCK_T                        /* bird: emx */
+#endif
+
+#ifndef _CLOCKID_T_DECLARED
+typedef	__clockid_t	clockid_t;
+#define	_CLOCKID_T_DECLARED
+#endif
+
+typedef	__critical_t	critical_t;	/* Critical section value */
+typedef	__int64_t	daddr_t;	/* disk address */
+
+#ifndef _DEV_T_DECLARED
+typedef	__dev_t		dev_t;		/* device number or struct cdev */
+#define	_DEV_T_DECLARED
+#endif
+
+#ifndef _FFLAGS_T_DECLARED
+typedef	__fflags_t	fflags_t;	/* file flags */
+#define	_FFLAGS_T_DECLARED
+#endif
+
+typedef	__uint32_t	fixpt_t;	/* fixed point number */
+
+#ifndef _FSBLKCNT_T_DECLARED		/* for statvfs() */
+typedef	__fsblkcnt_t	fsblkcnt_t;
+typedef	__fsfilcnt_t	fsfilcnt_t;
+#define	_FSBLKCNT_T_DECLARED
+#endif
+
+#if !defined(_GID_T_DECLARED) && !defined(_GID_T) /* bird: emx */
+typedef	__gid_t		gid_t;		/* group id */
+#define	_GID_T_DECLARED
+#define _GID_T                          /* bird: emx */
+#endif
+
+#ifndef _IN_ADDR_T_DECLARED
+typedef	__uint32_t	in_addr_t;	/* base type for internet address */
+#define	_IN_ADDR_T_DECLARED
+#endif
+
+#ifndef _IN_PORT_T_DECLARED
+typedef	__uint16_t	in_port_t;
+#define	_IN_PORT_T_DECLARED
+#endif
+
+#ifndef _ID_T_DECLARED
+typedef	__id_t		id_t;		/* can hold a uid_t or pid_t */
+#define	_ID_T_DECLARED
+#endif
+
+#ifndef _INO_T_DECLARED
+typedef	__ino_t		ino_t;		/* inode number */
+#define	_INO_T_DECLARED
+#endif
+
+#ifndef _KEY_T_DECLARED
+typedef	__key_t		key_t;		/* IPC key (for Sys V IPC) */
+#define	_KEY_T_DECLARED
+#endif
+
+#ifndef _MODE_T_DECLARED
+typedef	__mode_t	mode_t;		/* permissions */
+#define	_MODE_T_DECLARED
+#endif
+
+#ifndef _NLINK_T_DECLARED
+typedef	__nlink_t	nlink_t;	/* link count */
+#define	_NLINK_T_DECLARED
+#endif
+
+#if !defined(_OFF_T_DECLARED) && !defined(_OFF_T) /* bird:emx */
+typedef	__off_t		off_t;		/* file offset */
+#define	_OFF_T_DECLARED
+#define _OFF_T                          /* bird: emx */
+#endif
+
+#if !defined(_PID_T_DECLARED) && !defined(_PID_T) /* bird:emx */
+typedef	__pid_t		pid_t;		/* process id */
+#define	_PID_T_DECLARED
+#define _PID_T                          /* bird: emx */
+#endif
+
+typedef	__register_t	register_t;
+
+#ifndef _RLIM_T_DECLARED
+typedef	__rlim_t	rlim_t;		/* resource limit */
+#define	_RLIM_T_DECLARED
+#endif
+
+typedef	__segsz_t	segsz_t;	/* segment size (in pages) */
+
+#if !defined(_SIZE_T_DECLARED) && !defined(_SIZE_T) /* bird: emx */
+typedef	__size_t	size_t;
+#define	_SIZE_T_DECLARED
+#define _SIZE_T                         /* bird: emx */
+#endif
+
+#if !defined(_SSIZE_T_DECLARED) && !defined(_SSIZE_T) /* bird: emx */
+typedef	__ssize_t	ssize_t;
+#define	_SSIZE_T_DECLARED
+#define _SSIZE_T                        /* bird: emx */
+#endif
+
+#ifndef _SUSECONDS_T_DECLARED
+typedef	__suseconds_t	suseconds_t;	/* microseconds (signed) */
+#define	_SUSECONDS_T_DECLARED
+#endif
+
+#if !defined(_TIME_T_DECLARED) && !defined(_TIME_T) /* bird: emx */
+typedef	__time_t	time_t;
+#define	_TIME_T_DECLARED
+#define _TIME_T                         /* bird: emx */
+#endif
+
+#ifndef _TIMER_T_DECLARED
+typedef	__timer_t	timer_t;
+#define	_TIMER_T_DECLARED
+#endif
+
+typedef	__u_register_t	u_register_t;
+typedef	__udev_t	udev_t;		/* device number */
+
+#if !defined(_UID_T_DECLARED) && !defined(_UID_T)  /* bird: emx */
+typedef	__uid_t		uid_t;		/* user id */
+#define	_UID_T_DECLARED
+#define _UID_T                          /* bird: emx */
+#endif
+
+#ifndef _USECONDS_T_DECLARED
+typedef	__useconds_t	useconds_t;	/* microseconds (unsigned) */
+#define	_USECONDS_T_DECLARED
+#endif
+
+typedef	__vm_offset_t	vm_offset_t;
+typedef	__vm_ooffset_t	vm_ooffset_t;
+typedef	__vm_paddr_t	vm_paddr_t;
+typedef	__vm_pindex_t	vm_pindex_t;
+typedef	__vm_size_t	vm_size_t;
+
+#ifdef _KERNEL
+typedef	int		boolean_t;
+typedef	__intfptr_t	intfptr_t;
+
+/*-
+ * XXX this is fixed width for historical reasons.  It should have had type
+ * __int_fast32_t.  Fixed-width types should not be used unless binary
+ * compatibility is essential.  Least-width types should be used even less
+ * since they provide smaller benefits.
+ * XXX should be MD.
+ * XXX this is bogus in -current, but still used for spl*().
+ */
+typedef	__uint32_t	intrmask_t;	/* Interrupt mask (spl, xxx_imask...) */
+
+typedef	__uintfptr_t	uintfptr_t;
+typedef	__uint64_t	uoff_t;
+typedef	struct vm_page	*vm_page_t;
+
+#define offsetof(type, field) __offsetof(type, field)
+
+#endif /* !_KERNEL */
+
+/*
+ * The following are all things that really shouldn't exist in this header,
+ * since its purpose is to provide typedefs, not miscellaneous doodads.
+ */
+/*#if __BSD_VISIBLE */                  /* bird: emx */
+#if !defined (_POSIX_SOURCE) || __BSD_VISIBLE /* bird: emx */
+
+#include <sys/select.h>
+
+#ifndef _KERNEL
+/*
+ * minor() gives a cookie instead of an index since we don't want to
+ * change the meanings of bits 0-15 or waste time and space shifting
+ * bits 16-31 for devices that don't use them.
+ */
+#define major(x)        ((int)(((u_int)(x) >> 8)&0xff)) /* major number */
+#define minor(x)        ((int)((x)&0xffff00ff))         /* minor number */
+#define makedev(x,y)    ((dev_t)(((x) << 8) | (y)))     /* create dev_t */
+#endif /* !_KERNEL */
+
+/*
+ * These declarations belong elsewhere, but are repeated here and in
+ * <stdio.h> to give broken programs a better chance of working with
+ * 64-bit off_t's.
+ */
+#ifndef _KERNEL
+__BEGIN_DECLS
+#ifndef _FTRUNCATE_DECLARED
+#define	_FTRUNCATE_DECLARED
+int	 ftruncate(int, off_t);
+#endif
+#ifndef _LSEEK_DECLARED
+#define	_LSEEK_DECLARED
+off_t	 lseek(int, off_t, int);
+#endif
+#if 0                                   /* bird: emx */
+#ifndef _MMAP_DECLARED
+#define	_MMAP_DECLARED
+void *	 mmap(void *, size_t, int, int, int, off_t);
+#endif
+#endif                                  /* bird: emx */
+#ifndef _TRUNCATE_DECLARED
+#define	_TRUNCATE_DECLARED
+int	 truncate(const char *, off_t);
+#endif
+__END_DECLS
+#endif /* !_KERNEL */
+
+#endif /* __BSD_VISIBLE */
+
+
+/* bird: OS/2 Toolkit Pollution. */
 #if !defined (_POSIX_SOURCE)
-
-#if !defined (FD_SETSIZE)
-#define	FD_SETSIZE 256
-#elif FD_SETSIZE < 256
-#error FD_SETSIZE must be at least 256
-#endif
-
-#ifndef _howmany
-#define	_howmany(a,b)       (((a) + ((b) - 1)) / (b))
-#endif
-#if defined(TCPV40HDRS) && !defined(howmany)
-#define	howmany(a,b)        (((a) + ((b) - 1)) / (b))
-#endif
-
-#if !defined (_FD_SET_T)
-#define _FD_SET_T
-/** The base type for the select file descriptor bitmap. */
-typedef unsigned long   __fd_mask;
-/** Number of bits in a byte. */
-#define NBBY        8
-/** Number of bits in a byte. */
-#define _NFDBITS    (sizeof(__fd_mask) * 8)	/* bits per mask */
-/** Select set. */
-typedef struct fd_set
-{
-    __fd_mask   __fds_bits[_howmany(FD_SETSIZE, _NFDBITS)];
-} fd_set;
-
-#if defined(__BSD_VISIBLE) || defined(TCPV40HDRS)
-typedef __fd_mask   fd_mask;
-#define fds_bits    __fds_bits
-#define NFDBITS     _NFDBITS
-#endif
-
-#endif
-
-#ifndef FD_SET
-/** Set a bit in the select file descriptor bitmap. */
-#define	FD_SET(n,s)    ((s)->__fds_bits[(n)/_NFDBITS] |=  (1L << ((n) & (_NFDBITS - 1))))
-/** Clear a bit in the select file descriptor bitmap. */
-#define	FD_CLR(n,s)    ((s)->__fds_bits[(n)/_NFDBITS] &= ~(1L << ((n) & (_NFDBITS - 1))))
-/** Test if a bit in the select file descriptor bitmap is set. */
-#define	FD_ISSET(n,s)  ((s)->__fds_bits[(n)/_NFDBITS] &   (1L << ((n) & (_NFDBITS - 1))))
-/** Initialize the select file descriptor bitmap clearing all bits. */
-#define FD_ZERO(s)     (void)memset(s, 0, sizeof(*(s)))
-#if __BSD_VISIBLE
-/** Copy a select file descriptor bitmap. */
-#define	FD_COPY(src,trg) (void)(*(trg) = *(src))
-#endif
-#endif /* !FD_SET */
-
-#endif /* !_POSIX_SOURCE */
-
-#if !defined (_POSIX_SOURCE)
-
-typedef	unsigned char u_char;
-typedef	unsigned short u_short;
-typedef	unsigned u_int;
-typedef	unsigned long u_long;
-typedef char *caddr_t;
-
-/* toolkit pollution */
 #ifdef __32BIT__
 typedef int             long_int;       /* 32-bit compilers */
@@ -144,11 +347,5 @@
 typedef long int        long_int;       /* 16-bit compilers */
 #endif
-
 #endif /* not _POSIX_SOURCE */
 
-typedef __uint8_t	u_int8_t;
-typedef __uint16_t	u_int16_t;
-typedef __uint32_t	u_int32_t;
-typedef __uint64_t	u_int64_t;
-
-#endif /* not _SYS_TYPES_H */
+#endif /* not _SYS_TYPES_H_ */
Index: trunk/src/emx/include/sys/un.h
===================================================================
--- trunk/src/emx/include/sys/un.h	(revision 343)
+++ trunk/src/emx/include/sys/un.h	(revision 344)
@@ -1,5 +1,39 @@
-/* Copyright (c)1996 by Holger Veit
- * May be freely used with EMX
- * Modified 2003 by bird
+/*
+ * Copyright (c) 1982, 1986, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)un.h	8.3 (Berkeley) 2/19/95
+ * $FreeBSD: src/sys/sys/un.h,v 1.25 2002/08/21 16:20:01 mike Exp $
+ *
+ * @@level      FreeBSD 5.1
+ * @@changed    bird: TCPV40HDRS and hid LOCAL_PEERCRED.
  */
 
@@ -7,19 +41,55 @@
 #define _SYS_UN_H_
 
-/** Definitions for UNIX IPC domain. */
-struct  sockaddr_un {
-#ifdef TCPV40HDRS
-	u_short	sun_family;	/* socket family: AF_UNIX */
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+
+#ifndef _SA_FAMILY_T_DECLARED
+typedef	__sa_family_t	sa_family_t;
+#define	_SA_FAMILY_T_DECLARED
+#endif
+
+/*
+ * Definitions for UNIX IPC domain.
+ */
+struct sockaddr_un {
+#ifdef TCPV40HDRS                       /* bird: old tcpip header mode */
+	u_short	sun_family;	        /* socket family: AF_UNIX */
 #else
-        u_char  sun_len;        /* sockaddr len including null */
-        u_char  sun_family;     /* AF_UNIX */
+	unsigned char	sun_len;	/* sockaddr len including null */
+	sa_family_t	sun_family;	/* AF_UNIX */
 #endif
-	char	sun_path[108];	/* path name (not used) */
+	char	sun_path[104];		/* path name (gag) */
 };
 
-#ifndef TCPV40HDRS
-/* actual length of an initialized sockaddr_un */
-#define SUN_LEN(su) (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
+#if __BSD_VISIBLE
+
+#if 0                                   /* bird: don't expose unsupported stuff. */
+/* Socket options. */
+#define LOCAL_PEERCRED		0x001		/* retrieve peer credentails */
 #endif
 
+#ifdef _KERNEL
+struct mbuf;
+struct socket;
+struct sockopt;
+
+int	uipc_ctloutput(struct socket *so, struct sockopt *sopt);
+int	uipc_usrreq(struct socket *so, int req, struct mbuf *m,
+		struct mbuf *nam, struct mbuf *control);
+int	unp_connect2(struct socket *so, struct socket *so2);
+void	unp_dispose(struct mbuf *m);
+int	unp_externalize(struct mbuf *mbuf, struct mbuf **controlp);
+void	unp_init(void);
+extern	struct pr_usrreqs uipc_usrreqs;
+
+#else /* !_KERNEL */
+
+/* actual length of an initialized sockaddr_un */
+#define SUN_LEN(su) \
+	(sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
+
+#endif /* _KERNEL */
+
+#endif /* __BSD_VISIBLE */
+
 #endif /* !_SYS_UN_H_ */
