aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog42
-rw-r--r--bits/msq.h12
-rw-r--r--bits/stropts.h30
-rw-r--r--conform/conformtest.pl9
-rw-r--r--conform/data/stropts.h-data123
-rw-r--r--conform/data/sys/ipc.h-data24
-rw-r--r--conform/data/sys/mman.h-data32
-rw-r--r--conform/data/sys/msg.h-data28
-rw-r--r--conform/data/syslog.h-data39
-rw-r--r--misc/sys/mman.h16
-rw-r--r--streams/stropts.h14
-rw-r--r--sysdeps/generic/bits/msq.h12
-rw-r--r--sysdeps/generic/bits/stropts.h30
-rw-r--r--sysdeps/gnu/bits/ipc.h6
-rw-r--r--sysdeps/gnu/bits/msq.h16
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/ipc.h4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/msq.h14
-rw-r--r--sysdeps/unix/sysv/linux/bits/ipc.h4
-rw-r--r--sysdeps/unix/sysv/linux/bits/msq.h14
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/ipc.h28
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/ipc.h30
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/ipc.h6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/msq.h14
-rw-r--r--sysvipc/sys/msg.h19
24 files changed, 481 insertions, 85 deletions
diff --git a/ChangeLog b/ChangeLog
index 1e73770..a17b1e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,45 @@
+2000-02-25 Ulrich Drepper <drepper@redhat.com>
+
+ * conform/conformtest.pl (@headers): Add "sys/msg.h", "sys/mman.h",
+ "sys/ipc.h", "syslog.h", and "stropts.h".
+ Handle / in header names correctly.
+ * conform/data/stropts.h-data: New file.
+ * conform/data/syslog.h-data: New file.
+ * conform/data/sys/ipc.h-data: New file.
+ * conform/data/sys/mman.h-data: New file.
+ * conform/data/sys/msg.h-data: New file.
+
+ * misc/sys/mman.h: Define off_t and mode_t if not already done.
+
+ * streams/stropts.h: Define gid_t and uid_t if not already done.
+
+ * sysdeps/gnu/bits/ipc.h (IPC_INFO): Only define if __USE_GNU.
+ * sysdeps/unix/sysv/linux/alpha/bits/ipc.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/ipc.h: Likewise.
+ * sysdeps/unix/sysv/linux/mips/bits/ipc.h: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/ipc.h: Likewise.
+
+ * sysvipc/sys/msg.h: Don't include sys/types.h.
+ Define time_t, pid_t, and ssize_t if not already done.
+ (struct msgbuf): Define only if __USE_GNU.
+
+ * sysdeps/generic/bits/msq.h: Include bits/types.h, not sys/types.h.
+ (MSG_EXCEPT): Only define if __USE_GNU.
+ Define msgqnum_t and msglen_t and use them in struct msqid_ds
+ definition.
+ * sysdeps/gnu/bits/msq.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/bits/msq.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/msq.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/msq.h: Likewise.
+
+ * sysdeps/generic/bits/stropts.h (I_GWROPT): Renamed from I_GWRSET.
+ (FLUSHBAND): Only define is __USE_GNU.
+ (RPROTMASK): Likewise.
+ (SNDPIPE): Likewise.
+ (MUXID_ALL): Likewise.
+ (struct strrecvfd): Rename fill to __fill.
+
2000-02-24 Ulrich Drepper <drepper@redhat.com>
* stdlib/stdlib.h: Move definition X/Open compatibility stuff
diff --git a/bits/msq.h b/bits/msq.h
index a263869..131fc48 100644
--- a/bits/msq.h
+++ b/bits/msq.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -20,11 +20,15 @@
#error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* Define options for message queue functions. */
#define MSG_NOERROR 010000 /* no error if message is too big */
+/* Types used in the structure definition. */
+typedef unsigned short int msgqnum_t;
+typedef unsigned short int msglen_t;
+
/* Structure of record for one message inside the kernel.
The type `struct __msg' is opaque. */
@@ -34,8 +38,8 @@ struct msqid_ds
__time_t msg_stime; /* time of last msgsnd command */
__time_t msg_rtime; /* time of last msgrcv command */
__time_t msg_ctime; /* time of last change */
- unsigned short int msg_qnum; /* number of messages currently on queue */
- unsigned short int msg_qbytes;/* max number of bytes allowed on queue */
+ msgqnum_t msg_qnum; /* number of messages currently on queue */
+ msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__pid_t msg_lspid; /* pid of last msgsnd() */
__pid_t msg_lrpid; /* pid of last msgrcv() */
};
diff --git a/bits/stropts.h b/bits/stropts.h
index ed80747..62acfac 100644
--- a/bits/stropts.h
+++ b/bits/stropts.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -61,7 +61,7 @@
of a STREAMS pipe. */
#define I_RECVFD (__SID |14) /* Non-EFT definition. */
#define I_SWROPT (__SID |19) /* Set the write mode. */
-#define I_GWRSET (__SID |20) /* Return the current write mode setting. */
+#define I_GWROPT (__SID |20) /* Return the current write mode setting. */
#define I_LIST (__SID |21) /* List all the module names on the STREAM, up
to and including the topmost driver name. */
#define I_PLINK (__SID |22) /* Connect two STREAMs with a persistent
@@ -91,7 +91,9 @@
#define FLUSHR 0x01 /* Flush read queues. */
#define FLUSHW 0x02 /* Flush write queues. */
#define FLUSHRW 0x03 /* Flush read and write queues. */
-#define FLUSHBAND 0x04 /* Flush only specified band. */
+#ifdef __USE_GNU
+# define FLUSHBAND 0x04 /* Flush only specified band. */
+#endif
/* Possible arguments for `I_SETSIG'. */
#define S_INPUT 0x0001 /* A message, other than a high-priority
@@ -129,13 +131,17 @@
#define RPROTNORM 0x0010 /* Fail `read' with EBADMSG if a message
containing a control part is at the front
of the STREAM head read queue. */
-#define RPROTMASK 0x001C /* The RPROT bits */
+#ifdef __USE_GNU
+# define RPROTMASK 0x001C /* The RPROT bits */
+#endif
/* Possible mode for `I_SWROPT'. */
#define SNDZERO 0x001 /* Send a zero-length message downstream when a
`write' of 0 bytes occurs. */
-#define SNDPIPE 0x002 /* Send SIGPIPE on write and putmsg if
+#ifdef __USE_GNU
+# define SNDPIPE 0x002 /* Send SIGPIPE on write and putmsg if
sd_werror is set. */
+#endif
/* Arguments for `I_ATMARK'. */
#define ANYMARK 0x01 /* Check if the message is marked. */
@@ -143,8 +149,10 @@
on the queue. */
/* Argument for `I_UNLINK'. */
-#define MUXID_ALL (-1) /* Unlink all STREAMs linked to the STREAM
+#ifdef __USE_GNU
+# define MUXID_ALL (-1) /* Unlink all STREAMs linked to the STREAM
associated with `fildes'. */
+#endif
/* Macros for `getmsg', `getpmsg', `putmsg' and `putpmsg'. */
@@ -176,14 +184,14 @@ struct strpeek
{
struct strbuf ctlbuf;
struct strbuf databuf;
- __t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
+ t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
};
struct strfdinsert
{
struct strbuf ctlbuf;
struct strbuf databuf;
- __t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
+ t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
int fildes;
int offset;
};
@@ -199,9 +207,9 @@ struct strioctl
struct strrecvfd
{
int fd;
- __uid_t uid;
- __gid_t gid;
- char fill[8]; /* UnixWare/Solaris compatibility */
+ uid_t uid;
+ gid_t gid;
+ char __fill[8]; /* UnixWare/Solaris compatibility */
};
diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index 08b46c1..23fff70 100644
--- a/conform/conformtest.pl
+++ b/conform/conformtest.pl
@@ -4,7 +4,8 @@ $CC = "gcc";
$CFLAGS = "-I. '-D__attribute__(x)=' -D_XOPEN_SOURCE=500";
# List of the headers we are testing.
-@headers = ("strings.h", "string.h", "stdlib.h", "stdio.h",
+@headers = ("sys/msg.h", "sys/mman.h", "sys/ipc.h", "syslog.h",
+ "stropts.h", "strings.h", "string.h", "stdlib.h", "stdio.h",
"stddef.h", "stdarg.h", "signal.h", "setjmp.h", "semaphore.h",
"search.h", "sched.h", "regex.h", "pwd.h", "pthread.h",
"poll.h", "nl_types.h", "ndbm.h", "mqueue.h", "monetary.h",
@@ -13,7 +14,7 @@ $CFLAGS = "-I. '-D__attribute__(x)=' -D_XOPEN_SOURCE=500";
"fmtmsg.h", "float.h", "fcntl.h", "errno.h", "dlfcn.h", "dirent.h",
"ctype.h", "cpio.h", "assert.h", "aio.h");
-# These are the ISO C9x keywords.
+# These are the ISO C99 keywords.
@keywords = ('auto', 'break', 'case', 'char', 'const', 'continue', 'default',
'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto',
'if', 'inline', 'int', 'long', 'register', 'restrict', 'return',
@@ -234,7 +235,9 @@ sub checknamespace {
while ($#headers >= 0) {
my($h) = pop (@headers);
- my($fnamebase) = "$tmpdir/$h-test";
+ my($hf) = $h;
+ $hf =~ s|/|-|;
+ my($fnamebase) = "$tmpdir/$hf-test";
my($missing);
my(@allow) = ();
my($prepend) = $mustprepend{$h};
diff --git a/conform/data/stropts.h-data b/conform/data/stropts.h-data
new file mode 100644
index 0000000..318dc11
--- /dev/null
+++ b/conform/data/stropts.h-data
@@ -0,0 +1,123 @@
+type {struct bandinfo}
+
+element {struct bandinfo} {unsigned char} bi_pri
+element {struct bandinfo} int bi_flag
+
+type {struct strpeek}
+
+element {struct strpeek} {struct strbuf} ctlbuf
+element {struct strpeek} {struct strbuf} databuf
+element {struct strpeek} t_uscalar_t flags
+
+type {struct strbuf}
+
+element {struct strbuf} int maxlen
+element {struct strbuf} int len
+element {struct strbuf} {char*} buf
+
+type {struct strfdinsert}
+
+element {struct strfdinsert} {struct strbuf} ctlbuf
+element {struct strfdinsert} {struct strbuf} databuf
+element {struct strfdinsert} t_uscalar_t flags
+element {struct strfdinsert} int fildes
+element {struct strfdinsert} int offset
+
+type {struct strioctl}
+
+element {struct strioctl} int ic_cmd
+element {struct strioctl} int ic_timout
+element {struct strioctl} int ic_len
+element {struct strioctl} {char*} ic_dp
+
+type {struct strrecvfd}
+
+element {struct strrecvfd} int fd
+element {struct strrecvfd} uid_t uid
+element {struct strrecvfd} gid_t gid
+
+type uid_t
+type gid_t
+
+type t_uscalar_t
+
+type {struct str_list}
+
+element {struct str_list} int sl_nmods
+element {struct str_list} {struct str_mlist*} sl_modlist
+
+type {struct str_mlist}
+
+element {struct str_mlist} char l_name [FMNAMESZ+1]
+
+macro I_PUSH
+macro I_POP
+macro I_LOOK
+macro FMNAMESZ
+macro I_FLUSH
+macro FLUSHR
+macro FLUSHW
+macro FLUSHRW
+macro I_FLUSHBAND
+macro I_SETSIG
+macro S_RDNORM
+macro S_RDBAND
+macro S_INPUT
+macro S_HIPRI
+macro S_OUTPUT
+macro S_WRNORM
+macro S_WRBAND
+macro S_MSG
+macro S_ERROR
+macro S_HANGUP
+macro S_BANDURG
+macro I_GETSIG
+macro I_FIND
+macro I_PEEK
+macro RS_HIPRI
+macro I_SRDOPT
+macro RNORM
+macro RMSGD
+macro RMSGN
+macro RPROTNORM
+macro RPROTDAT
+macro RPROTDIS
+macro I_GRDOPT
+macro I_NREAD
+macro I_FDINSERT
+macro I_STR
+macro I_SWROPT
+macro SNDZERO
+macro I_GWROPT
+macro I_SENDFD
+macro I_RECVFD
+macro I_LIST
+macro I_ATMARK
+macro ANYMARK
+macro LASTMARK
+macro I_CKBAND
+macro I_GETBAND
+macro I_CANPUT
+macro I_SETCLTIME
+macro I_GETCLTIME
+macro I_LINK
+macro I_UNLINK
+macro I_PLINK
+macro I_PUNLINK
+
+macro MSG_ANY
+macro MSG_BAND
+macro MSG_HIPRI
+macro MORECTL
+macro MOREDATA
+
+function int isastream (int)
+function int getmsg (int, struct strbuf*, struct strbuf*, int*)
+function int getpmsg (int, struct strbuf*, struct strbuf*, int*, int*)
+function int ioctl (int, int, ...)
+function int putmsg (int, const struct strbuf*, const struct strbuf*, int)
+function int putpmsg (int, const struct strbuf*, const struct strbuf*, int, int)
+function int fattach (int, const char*)
+function int fdetach (const char*)
+
+allow-header unistd.h
diff --git a/conform/data/sys/ipc.h-data b/conform/data/sys/ipc.h-data
new file mode 100644
index 0000000..0bfd22b
--- /dev/null
+++ b/conform/data/sys/ipc.h-data
@@ -0,0 +1,24 @@
+type {struct ipc_perm}
+
+element {struct ipc_perm} uid_t uid
+element {struct ipc_perm} gid_t gid
+element {struct ipc_perm} uid_t cuid
+element {struct ipc_perm} gid_t cgid
+element {struct ipc_perm} mode_t mode
+
+type uid_t
+type gid_t
+type mode_t
+type key_t
+
+constant IPC_CREAT
+constant IPC_EXCL
+constant IPC_NOWAIT
+
+constant IPC_PRIVATE
+
+constant IPC_RMID
+constant IPC_SET
+constant IPC_STAT
+
+function key_t ftok (const char*, int)
diff --git a/conform/data/sys/mman.h-data b/conform/data/sys/mman.h-data
new file mode 100644
index 0000000..f45ea0c
--- /dev/null
+++ b/conform/data/sys/mman.h-data
@@ -0,0 +1,32 @@
+constant PROT_READ
+constant PROT_WRITE
+constant PROT_EXEC
+constant PROT_NONE
+
+constant MAP_SHARED
+constant MAP_PRIVATE
+constant MAP_FIXED
+
+constant MS_ASYNC
+constant MS_SYNC
+constant MS_INVALIDATE
+
+constant MCL_CURRENT
+constant MCL_FUTURE
+
+constant MAP_FAILED
+
+type size_t
+type off_t
+type mode_t
+
+function int mlock (const void*, size_t)
+function int mlockall (int)
+function {void*} mmap (void*, size_t, int, int, int, off_t)
+function int mprotect (void*, size_t, int)
+function int msync (void*, size_t, int)
+function int munlock (const void*, size_t)
+function int munlockall (void)
+function int munmap (void*, size_t)
+function int shm_open (const char*, int, mode_t)
+function int shm_unlink (const char*)
diff --git a/conform/data/sys/msg.h-data b/conform/data/sys/msg.h-data
new file mode 100644
index 0000000..69bd82f
--- /dev/null
+++ b/conform/data/sys/msg.h-data
@@ -0,0 +1,28 @@
+type {struct msqid_ds}
+
+type msgqnum_t
+type msglen_t
+
+constant MSG_NOERROR
+
+element {struct msqid_ds} {struct ipc_perm} msg_perm
+element {struct msqid_ds} msgqnum_t msg_qnum
+element {struct msqid_ds} msglen_t msg_qbytes
+element {struct msqid_ds} pid_t msg_lspid
+element {struct msqid_ds} pid_t msg_lrpid
+element {struct msqid_ds} time_t msg_stime
+element {struct msqid_ds} time_t msg_rtime
+element {struct msqid_ds} time_t msg_ctime
+
+type pid_t
+type time_t
+type key_t
+type size_t
+type ssize_t
+
+function int msgctl (int, int, struct msqid_ds*)
+function int msgget (key_t, int)
+function ssize_t msgrcv (int, void*, size_t, long int, int)
+function int msgsnd (int, const void*, size_t, int)
+
+allow-header sys/ipc.h
diff --git a/conform/data/syslog.h-data b/conform/data/syslog.h-data
new file mode 100644
index 0000000..62ae551
--- /dev/null
+++ b/conform/data/syslog.h-data
@@ -0,0 +1,39 @@
+constant LOG_PID
+constant LOG_CONS
+constant LOG_NDELAY
+constant LOG_ODELAY
+constant LOG_NOWAIT
+
+constant LOG_KERN
+constant LOG_USER
+constant LOG_MAIL
+constant LOG_NEWS
+constant LOG_UUCP
+constant LOG_DAEMON
+constant LOG_AUTH
+constant LOG_CRON
+constant LOG_LPR
+constant LOG_LOCAL0
+constant LOG_LOCAL1
+constant LOG_LOCAL2
+constant LOG_LOCAL3
+constant LOG_LOCAL4
+constant LOG_LOCAL5
+constant LOG_LOCAL6
+constant LOG_LOCAL7
+
+macro LOG_MASK
+
+constant LOG_EMERG
+constant LOG_ALERT
+constant LOG_CRIT
+constant LOG_ERR
+constant LOG_WARNING
+constant LOG_NOTICE
+constant LOG_INFO
+constant LOG_DEBUG
+
+function void closelog (void)
+function void openlog (const char*, int, int)
+function int setlogmask (int)
+function void syslog (int, const char*, ...)
diff --git a/misc/sys/mman.h b/misc/sys/mman.h
index a39639c..4aa4a52 100644
--- a/misc/sys/mman.h
+++ b/misc/sys/mman.h
@@ -1,5 +1,5 @@
/* Definitions for BSD-style memory management.
- Copyright (C) 1994, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+ Copyright (C) 1994-1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -25,6 +25,20 @@
#define __need_size_t
#include <stddef.h>
+#ifndef __off_t_defined
+# ifndef __USE_FILE_OFFSET64
+typedef __off_t off_t;
+# else
+typedef __off64_t off_t;
+# endif
+# define __off_t_defined
+#endif
+
+#ifndef __mode_t_defined
+typedef __mode_t mode_t;
+# define __mode_t_defined
+#endif
+
#include <bits/mman.h>
/* Return value of `mmap' in case of an error. */
diff --git a/streams/stropts.h b/streams/stropts.h
index fa5c249..dda2857 100644
--- a/streams/stropts.h
+++ b/streams/stropts.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -22,6 +22,18 @@
#include <features.h>
#include <bits/types.h>
+#ifndef __gid_t_defined
+typedef __gid_t gid_t;
+# define __gid_t_defined
+#endif
+
+#ifndef __uid_t_defined
+typedef __uid_t uid_t;
+# define __uid_t_defined
+#endif
+
+typedef __t_uscalar_t t_uscalar_t;
+
/* Get system specific contants. */
#include <bits/stropts.h>
diff --git a/sysdeps/generic/bits/msq.h b/sysdeps/generic/bits/msq.h
index a263869..131fc48 100644
--- a/sysdeps/generic/bits/msq.h
+++ b/sysdeps/generic/bits/msq.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -20,11 +20,15 @@
#error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* Define options for message queue functions. */
#define MSG_NOERROR 010000 /* no error if message is too big */
+/* Types used in the structure definition. */
+typedef unsigned short int msgqnum_t;
+typedef unsigned short int msglen_t;
+
/* Structure of record for one message inside the kernel.
The type `struct __msg' is opaque. */
@@ -34,8 +38,8 @@ struct msqid_ds
__time_t msg_stime; /* time of last msgsnd command */
__time_t msg_rtime; /* time of last msgrcv command */
__time_t msg_ctime; /* time of last change */
- unsigned short int msg_qnum; /* number of messages currently on queue */
- unsigned short int msg_qbytes;/* max number of bytes allowed on queue */
+ msgqnum_t msg_qnum; /* number of messages currently on queue */
+ msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__pid_t msg_lspid; /* pid of last msgsnd() */
__pid_t msg_lrpid; /* pid of last msgrcv() */
};
diff --git a/sysdeps/generic/bits/stropts.h b/sysdeps/generic/bits/stropts.h
index ed80747..62acfac 100644
--- a/sysdeps/generic/bits/stropts.h
+++ b/sysdeps/generic/bits/stropts.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -61,7 +61,7 @@
of a STREAMS pipe. */
#define I_RECVFD (__SID |14) /* Non-EFT definition. */
#define I_SWROPT (__SID |19) /* Set the write mode. */
-#define I_GWRSET (__SID |20) /* Return the current write mode setting. */
+#define I_GWROPT (__SID |20) /* Return the current write mode setting. */
#define I_LIST (__SID |21) /* List all the module names on the STREAM, up
to and including the topmost driver name. */
#define I_PLINK (__SID |22) /* Connect two STREAMs with a persistent
@@ -91,7 +91,9 @@
#define FLUSHR 0x01 /* Flush read queues. */
#define FLUSHW 0x02 /* Flush write queues. */
#define FLUSHRW 0x03 /* Flush read and write queues. */
-#define FLUSHBAND 0x04 /* Flush only specified band. */
+#ifdef __USE_GNU
+# define FLUSHBAND 0x04 /* Flush only specified band. */
+#endif
/* Possible arguments for `I_SETSIG'. */
#define S_INPUT 0x0001 /* A message, other than a high-priority
@@ -129,13 +131,17 @@
#define RPROTNORM 0x0010 /* Fail `read' with EBADMSG if a message
containing a control part is at the front
of the STREAM head read queue. */
-#define RPROTMASK 0x001C /* The RPROT bits */
+#ifdef __USE_GNU
+# define RPROTMASK 0x001C /* The RPROT bits */
+#endif
/* Possible mode for `I_SWROPT'. */
#define SNDZERO 0x001 /* Send a zero-length message downstream when a
`write' of 0 bytes occurs. */
-#define SNDPIPE 0x002 /* Send SIGPIPE on write and putmsg if
+#ifdef __USE_GNU
+# define SNDPIPE 0x002 /* Send SIGPIPE on write and putmsg if
sd_werror is set. */
+#endif
/* Arguments for `I_ATMARK'. */
#define ANYMARK 0x01 /* Check if the message is marked. */
@@ -143,8 +149,10 @@
on the queue. */
/* Argument for `I_UNLINK'. */
-#define MUXID_ALL (-1) /* Unlink all STREAMs linked to the STREAM
+#ifdef __USE_GNU
+# define MUXID_ALL (-1) /* Unlink all STREAMs linked to the STREAM
associated with `fildes'. */
+#endif
/* Macros for `getmsg', `getpmsg', `putmsg' and `putpmsg'. */
@@ -176,14 +184,14 @@ struct strpeek
{
struct strbuf ctlbuf;
struct strbuf databuf;
- __t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
+ t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
};
struct strfdinsert
{
struct strbuf ctlbuf;
struct strbuf databuf;
- __t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
+ t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
int fildes;
int offset;
};
@@ -199,9 +207,9 @@ struct strioctl
struct strrecvfd
{
int fd;
- __uid_t uid;
- __gid_t gid;
- char fill[8]; /* UnixWare/Solaris compatibility */
+ uid_t uid;
+ gid_t gid;
+ char __fill[8]; /* UnixWare/Solaris compatibility */
};
diff --git a/sysdeps/gnu/bits/ipc.h b/sysdeps/gnu/bits/ipc.h
index eb9bcff..ec0dbd8 100644
--- a/sysdeps/gnu/bits/ipc.h
+++ b/sysdeps/gnu/bits/ipc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -31,7 +31,9 @@
#define IPC_RMID 0 /* Remove identifier. */
#define IPC_SET 1 /* Set `ipc_perm' options. */
#define IPC_STAT 2 /* Get `ipc_perm' options. */
-#define IPC_INFO 3 /* See ipcs. */
+#ifdef __USE_GNU
+# define IPC_INFO 3 /* See ipcs. */
+#endif
/* Special key values. */
#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
diff --git a/sysdeps/gnu/bits/msq.h b/sysdeps/gnu/bits/msq.h
index d7a8e5e..874c369 100644
--- a/sysdeps/gnu/bits/msq.h
+++ b/sysdeps/gnu/bits/msq.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -20,11 +20,17 @@
# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* Define options for message queue functions. */
#define MSG_NOERROR 010000 /* no error if message is too big */
-#define MSG_EXCEPT 020000 /* recv any msg except of specified type */
+#ifdef __USE_GNU
+# define MSG_EXCEPT 020000 /* recv any msg except of specified type */
+#endif
+
+/* Types used in the structure definition. */
+typedef unsigned short int msgqnum_t;
+typedef unsigned short int msglen_t;
/* Structure of record for one message inside the kernel.
@@ -40,8 +46,8 @@ struct msqid_ds
struct wait_queue *__wwait; /* ??? */
struct wait_queue *__rwait; /* ??? */
unsigned short int __msg_cbytes;/* current number of bytes on queue */
- unsigned short int msg_qnum; /* number of messages currently on queue */
- unsigned short int msg_qbytes;/* max number of bytes allowed on queue */
+ msgqnum_t msg_qnum; /* number of messages currently on queue */
+ msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__ipc_pid_t msg_lspid; /* pid of last msgsnd() */
__ipc_pid_t msg_lrpid; /* pid of last msgrcv() */
};
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/ipc.h b/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
index 7ad2c7c..004a683 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
@@ -31,7 +31,9 @@
#define IPC_RMID 0 /* Remove identifier. */
#define IPC_SET 1 /* Set `ipc_perm' options. */
#define IPC_STAT 2 /* Get `ipc_perm' options. */
-#define IPC_INFO 3 /* See ipcs. */
+#ifdef __USE_GNU
+# define IPC_INFO 3 /* See ipcs. */
+#endif
/* Special key values. */
#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/msq.h b/sysdeps/unix/sysv/linux/alpha/bits/msq.h
index 3e784d9..3ca076e 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/msq.h
@@ -20,11 +20,17 @@
# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* Define options for message queue functions. */
#define MSG_NOERROR 010000 /* no error if message is too big */
-#define MSG_EXCEPT 020000 /* recv any msg except of specified type */
+#ifdef __USE_GNU
+# define MSG_EXCEPT 020000 /* recv any msg except of specified type */
+#endif
+
+/* Types used in the structure definition. */
+typedef unsigned long int msgqnum_t;
+typedef unsigned long int msglen_t;
/* Structure of record for one message inside the kernel.
@@ -36,8 +42,8 @@ struct msqid_ds
__time_t msg_rtime; /* time of last msgrcv command */
__time_t msg_ctime; /* time of last change */
unsigned long int __msg_cbytes; /* current number of bytes on queue */
- unsigned long int msg_qnum; /* number of messages currently on queue */
- unsigned long int msg_qbytes; /* max number of bytes allowed on queue */
+ msgqnum_t msg_qnum; /* number of messages currently on queue */
+ msglen_t msg_qbytes; /* max number of bytes allowed on queue */
pid_t msg_lspid; /* pid of last msgsnd() */
pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __unused1;
diff --git a/sysdeps/unix/sysv/linux/bits/ipc.h b/sysdeps/unix/sysv/linux/bits/ipc.h
index 2375e4b..dab0792 100644
--- a/sysdeps/unix/sysv/linux/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/bits/ipc.h
@@ -31,7 +31,9 @@
#define IPC_RMID 0 /* Remove identifier. */
#define IPC_SET 1 /* Set `ipc_perm' options. */
#define IPC_STAT 2 /* Get `ipc_perm' options. */
-#define IPC_INFO 3 /* See ipcs. */
+#ifdef __USE_GNU
+# define IPC_INFO 3 /* See ipcs. */
+#endif
/* Special key values. */
#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index c5c375a..840ddd6 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -20,11 +20,17 @@
# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
/* Define options for message queue functions. */
#define MSG_NOERROR 010000 /* no error if message is too big */
-#define MSG_EXCEPT 020000 /* recv any msg except of specified type */
+#ifdef __USE_GNU
+# define MSG_EXCEPT 020000 /* recv any msg except of specified type */
+#endif
+
+/* Types used in the structure definition. */
+typedef unsigned long int msgqnum_t;
+typedef unsigned long int msglen_t;
/* Structure of record for one message inside the kernel.
@@ -39,8 +45,8 @@ struct msqid_ds
__time_t msg_ctime; /* time of last change */
unsigned long int __unused3;
unsigned long int __msg_cbytes; /* current number of bytes on queue */
- unsigned long int msg_qnum; /* number of messages currently on queue */
- unsigned long int msg_qbytes; /* max number of bytes allowed on queue */
+ msgqnum_t msg_qnum; /* number of messages currently on queue */
+ msglen_t msg_qbytes; /* max number of bytes allowed on queue */
pid_t msg_lspid; /* pid of last msgsnd() */
pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __unused4;
diff --git a/sysdeps/unix/sysv/linux/mips/bits/ipc.h b/sysdeps/unix/sysv/linux/mips/bits/ipc.h
index 3c2e527..8364dca 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/ipc.h
@@ -31,7 +31,9 @@
#define IPC_RMID 0 /* Remove identifier. */
#define IPC_SET 1 /* Set `ipc_perm' options. */
#define IPC_STAT 2 /* Get `ipc_perm' options. */
-#define IPC_INFO 3 /* See ipcs. */
+#ifdef __USE_GNU
+# define IPC_INFO 3 /* See ipcs. */
+#endif
/* Special key values. */
#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
@@ -58,15 +60,17 @@ extern int __ipc (int __call, int __first, int __second, int __third,
__END_DECLS
+#ifdef __USE_GNU
/* The codes for the functions to use the multiplexer `__ipc'. */
-#define IPCOP_semop 1
-#define IPCOP_semget 2
-#define IPCOP_semctl 3
-#define IPCOP_msgsnd 11
-#define IPCOP_msgrcv 12
-#define IPCOP_msgget 13
-#define IPCOP_msgctl 14
-#define IPCOP_shmat 21
-#define IPCOP_shmdt 22
-#define IPCOP_shmget 23
-#define IPCOP_shmctl 24
+# define IPCOP_semop 1
+# define IPCOP_semget 2
+# define IPCOP_semctl 3
+# define IPCOP_msgsnd 11
+# define IPCOP_msgrcv 12
+# define IPCOP_msgget 13
+# define IPCOP_msgctl 14
+# define IPCOP_shmat 21
+# define IPCOP_shmdt 22
+# define IPCOP_shmget 23
+# define IPCOP_shmctl 24
+#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h b/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
index 58f6d99..fa96134 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/ipc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -31,7 +31,9 @@
#define IPC_RMID 0 /* Remove identifier. */
#define IPC_SET 1 /* Set `ipc_perm' options. */
#define IPC_STAT 2 /* Get `ipc_perm' options. */
-#define IPC_INFO 3 /* See ipcs. */
+#ifdef __USE_GNU
+# define IPC_INFO 3 /* See ipcs. */
+#endif
/* Special key values. */
#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
@@ -58,15 +60,17 @@ extern int __ipc __P ((int __call, int __first, int __second, int __third,
__END_DECLS
+#ifdef __USE_GNU
/* The codes for the functions to use the multiplexer `__ipc'. */
-#define IPCOP_semop 1
-#define IPCOP_semget 2
-#define IPCOP_semctl 3
-#define IPCOP_msgsnd 11
-#define IPCOP_msgrcv 12
-#define IPCOP_msgget 13
-#define IPCOP_msgctl 14
-#define IPCOP_shmat 21
-#define IPCOP_shmdt 22
-#define IPCOP_shmget 23
-#define IPCOP_shmctl 24
+# define IPCOP_semop 1
+# define IPCOP_semget 2
+# define IPCOP_semctl 3
+# define IPCOP_msgsnd 11
+# define IPCOP_msgrcv 12
+# define IPCOP_msgget 13
+# define IPCOP_msgctl 14
+# define IPCOP_shmat 21
+# define IPCOP_shmdt 22
+# define IPCOP_shmget 23
+# define IPCOP_shmctl 24
+#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/ipc.h b/sysdeps/unix/sysv/linux/sparc/bits/ipc.h
index 7ba6d67..e5dcd3d 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/ipc.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/ipc.h
@@ -32,7 +32,9 @@
#define IPC_RMID 0 /* Remove identifier. */
#define IPC_SET 1 /* Set `ipc_perm' options. */
#define IPC_STAT 2 /* Get `ipc_perm' options. */
-#define IPC_INFO 3 /* See ipcs. */
+#ifdef __USE_GNU
+# define IPC_INFO 3 /* See ipcs. */
+#endif
/* Special key values. */
#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
@@ -51,7 +53,7 @@ struct ipc_perm
unsigned short int mode; /* Read/write permission. */
unsigned short int __pad2;
#else
- unsigned int mode; /* Read/write permission. */
+ __mode_t mode; /* Read/write permission. */
unsigned short int __pad1;
#endif
unsigned short int __seq; /* Sequence number. */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/msq.h b/sysdeps/unix/sysv/linux/sparc/bits/msq.h
index 6bc88ae..6b32ef9 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/msq.h
@@ -20,12 +20,18 @@
# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
#endif
-#include <sys/types.h>
+#include <bits/types.h>
#include <bits/wordsize.h>
/* Define options for message queue functions. */
#define MSG_NOERROR 010000 /* no error if message is too big */
-#define MSG_EXCEPT 020000 /* recv any msg except of specified type */
+#ifdef __USE_GNU
+# define MSG_EXCEPT 020000 /* recv any msg except of specified type */
+#endif
+
+/* Types used in the structure definition. */
+typedef unsigned long int msgqnum_t;
+typedef unsigned long int msglen_t;
/* Structure of record for one message inside the kernel.
@@ -46,8 +52,8 @@ struct msqid_ds
#endif
__time_t msg_ctime; /* time of last change */
unsigned long int __msg_cbytes; /* current number of bytes on queue */
- unsigned long int msg_qnum; /* number of messages currently on queue */
- unsigned long int msg_qbytes; /* max number of bytes allowed on queue */
+ msgqnum_t msg_qnum; /* number of messages currently on queue */
+ msglen_t msg_qbytes; /* max number of bytes allowed on queue */
pid_t msg_lspid; /* pid of last msgsnd() */
pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __unused1;
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 2a726dc..967ce0c 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -20,7 +20,6 @@
#define _SYS_MSG_H
#include <features.h>
-#include <sys/types.h>
/* Get common definition of System V style IPC. */
#include <sys/ipc.h>
@@ -28,15 +27,31 @@
/* Get system dependent definition of `struct msqid_ds' and more. */
#include <bits/msq.h>
+/* Define types required by the standard. */
+#define __need_time_t
+#include <time.h>
+
+#ifndef __pid_t_defined
+typedef __pid_t pid_t;
+# define __pid_t_defined
+#endif
+
+#ifndef __ssize_t_defined
+typedef __ssize_t ssize_t;
+# define __ssize_t_defined
+#endif
+
/* The following System V style IPC functions implement a message queue
system. The definition is found in XPG2. */
+#ifdef __USE_GNU
/* Template for struct to be used as argument for `msgsnd' and `msgrcv'. */
struct msgbuf
{
long int mtype; /* type of received/sent message */
char mtext[1]; /* text of the message */
};
+#endif
__BEGIN_DECLS