Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 14 Aug 2000 04:57:27 +0000 (04:57 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 14 Aug 2000 04:57:27 +0000 (04:57 +0000)
2000-08-12  Andreas Jaeger  <aj@suse.de>

* include/features.h (__STDC_ISO_10646__): Define.
Reported by Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk>.

* include/features.h (__USE_ISOC99): Define for _XOPEN_SOURCE >= 600.

* locale/langinfo.h: Define YESSTR and NOSTR also for XPG4 (but not
for revision 6 and up).

* posix/sys/types.h: Define __need_timer_t and __need_clockid_t before
including <time.h>.
* time/time.h: Allow __need_timer_t and __need_clockid_t to be defined
to get definitions of just these types.

* signal/signal.h: Define thread signal handling functions also for
POSIX95.

* sysdeps/unix/sysv/linux/bits/types.h: Define thread types also for
POSIX95.
* sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/types.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise.

* sysvipc/sys/shm.h: Define pid_t for XPG.

* wcsmbs/wchar.h: Make the various wide char string and stream
functions available for the respective XPG versions.

17 files changed:
CONFORMANCE
ChangeLog
include/features.h
linuxthreads/ChangeLog
linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h
linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h
locale/langinfo.h
posix/sys/types.h
signal/signal.h
sysdeps/unix/sysv/linux/alpha/bits/types.h
sysdeps/unix/sysv/linux/bits/types.h
sysdeps/unix/sysv/linux/ia64/bits/types.h
sysdeps/unix/sysv/linux/mips/bits/types.h
sysdeps/unix/sysv/linux/sparc/bits/types.h
sysvipc/sys/shm.h
time/time.h
wcsmbs/wchar.h

index cf00caa..8df261e 100644 (file)
@@ -13,7 +13,7 @@ The hdrchk test suite is available from the Open Group at
 
        ftp://ftp.rdg.opengroup.org/pub/unsupported/stdtools/hdrchk/
 
-I've last run the suite on 1998-07-08 on a Linux/ix86 system with the
+I've last run the suite on 2000-08-13 on a Linux/ix86 system with the
 following results [*]:
 
        FIPS            No reported problems
@@ -22,105 +22,28 @@ following results [*]:
 
        XPG3            No reported problems
 
-       XPG4            The wide character I/O stuff is missing in glibc.
+       XPG4            No reported problems
 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-*** Starting wchar.h
-Missing: extern wint_t  fgetwc();
-Missing: extern wchar_t *fgetws();
-Missing: extern wint_t  fputwc();
-Missing: extern int     fputws();
-Missing: extern wint_t  getwc();
-Missing: extern wint_t  getwchar();
-Missing: extern wint_t  putwc();
-Missing: extern wchar_t putwchar();
-Missing: extern wint_t  ungetwc();
-Missing: extern size_t  wcsftime();
-*** Completed wchar.h
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-                       Beside this a problem in stdio.h is reported but
-                       this is only because the scripts don't understand
-                       the sometimes complex constructs in the header.
-
-       POSIX96         Same as UNIX98 [see below].
-       UNIX98          Quite a lot of problems, almost all due to limitations
-                       of the Linux kernel (2.1.108):
+       POSIX96         Same as for UNIX98 (see below).
+       UNIX98          The message queue implementation is missing:
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-*** Starting mqueue.h
-Missing #include file: mqueue.h
-*** Completed mqueue.h
-*** Starting semaphore.h
-Missing: #define SEM_FAILED (-1)
-Missing: extern int  sem_close();
-Missing: extern sem_t *sem_open();
-Missing: extern int  sem_unlink();
-*** Completed semaphore.h
-*** Starting signal.h
-Missing: #define        SIGSYS  (-1)
-*** Completed signal.h
-*** Starting sys/mman.h
-Missing: extern int shm_open();
-Missing: extern int shm_unlink();
-*** Completed sys/mman.h
-*** Starting sys/stat.h
-Missing: #define        S_TYPEISMQ      (-1)
-Missing: #define        S_TYPEISSEM     (-1)
-Missing: #define        S_TYPEISSHM     (-1)
-*** Completed sys/stat.h
-*** Starting sys/types.h
-Missing: typedef        <type>  clockid_t;
-Missing: typedef        <type>  timer_t;
-*** Completed sys/types.h
-*** Starting time.h
-Missing: #define        CLOCK_REALTIME  (-1)
-Missing: #define        TIMER_ABSTIME   (-1)
-Missing: extern int     clock_getres();
-Missing: extern int     clock_gettime();
-Missing: extern int     clock_settime();
-Missing: struct itimerspec { <members> };
-Missing: extern int     timer_create();
-Missing: extern int     timer_delete();
-Missing: extern int     timer_getoverrun();
-Missing: extern int     timer_gettime();
-Missing: extern int     timer_settime();
-*** Completed time.h
-*** Starting unistd.h
-Missing: #define        _POSIX_MESSAGE_PASSING          (-1)
-Missing: #define        _POSIX_SEMAPHORES               (-1)
-Missing: #define        _POSIX_SHARED_MEMORY_OBJECTS            (-1)
-Missing: #define        _POSIX_TIMERS           (-1)
-*** Completed unistd.h
-*** Starting wchar.h
-Missing: extern wint_t  fgetwc();
-Missing: extern wchar_t *fgetws();
-Missing: extern wint_t  fputwc();
-Missing: extern int     fputws();
-Missing: extern int     fwide();
-Missing: extern int     fwprintf();
-Missing: extern int     fwscanf();
-Missing: extern wint_t  getwc();
-Missing: extern wint_t  getwchar();
-Missing: extern wint_t  putwc();
-Missing: extern wchar_t putwchar();
-Missing: extern int     swprintf();
-Missing: extern int     swscanf();
-Missing: extern wint_t  ungetwc();
-Missing: extern int     vfwprintf();
-Missing: extern int     vswprintf();
-Missing: extern int     vwprintf();
-Missing: extern size_t  wcsftime();
-Missing: extern wchar_t *wcswcs();
-Missing: extern int     wprintf();
-Missing: extern int     wscanf();
-*** Completed wchar.h
+/****** <mqueue.h> - Missing include file ******/
+/****** Start of Definitions for file mqueue.h ******/
+extern int mq_close();
+extern int mq_getattr();
+extern int mq_notify();
+extern mqd_t mq_open();
+extern ssize_t mq_receive();
+extern int mq_send();
+extern int mq_setattr();
+extern int mq_unlink();
+typedef <type> mqd_t;
+struct mq_attr { <members> };
+struct sigevent { <members> };
+/****** End of Definitions for file mqueue.h ******/
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-                       Only the `wchar.h' problems result from glibc
-                       defficiencies since we still don't support wide
-                       character I/O.
-
 [*] Since the scripts are not clever enough for the way gcc handles
 include files (namely, putting some of them in gcc-local directory) I
 copied over the iso646.h, float.h, and stddef.h headers and ignored the
index 6f573db..f899c07 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,38 @@
+2000-08-12  Andreas Jaeger  <aj@suse.de>
+
+       * include/features.h (__STDC_ISO_10646__): Define.
+       Reported by Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk>.
+
 2000-08-13  Ulrich Drepper  <drepper@redhat.com>
 
+       * include/features.h (__USE_ISOC99): Define for _XOPEN_SOURCE >= 600.
+
+       * locale/langinfo.h: Define YESSTR and NOSTR also for XPG4 (but not
+       for revision 6 and up).
+
+       * posix/sys/types.h: Define __need_timer_t and __need_clockid_t before
+       including <time.h>.
+       * time/time.h: Allow __need_timer_t and __need_clockid_t to be defined
+       to get definitions of just these types.
+
+       * signal/signal.h: Define thread signal handling functions also for
+       POSIX95.
+
+       * sysdeps/unix/sysv/linux/bits/types.h: Define thread types also for
+       POSIX95.
+       * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise.
+       * sysdeps/unix/sysv/linux/ia64/bits/types.h: Likewise.
+       * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise.
+
+       * sysvipc/sys/shm.h: Define pid_t for XPG.
+
        * posix/unistd.h: Remove setkey, rename, and cuserid prototypes as
        they are not anymore required here.
 
+       * wcsmbs/wchar.h: Make the various wide char string and stream
+       functions available for the respective XPG versions.
+
        * nss/Makefile: Remove rules to build and distribute nss_db.
 
        * sysdeps/generic/alphasort64.c: Remove unnecessary versioning.
index 6e3a876..bbf03f0 100644 (file)
 #  define _LARGEFILE_SOURCE    1
 #  if (_XOPEN_SOURCE - 0) >= 600
 #   define __USE_XOPEN2K       1
+#   undef __USE_ISOC99
+#   define __USE_ISOC99                1
 #  endif
 # else
 #  ifdef _XOPEN_SOURCE_EXTENDED
 #define __STDC_IEC_559__               1
 #define __STDC_IEC_559_COMPLEX__       1
 
+/* wchar_t uses Unicode 3.0.  */
+#define __STDC_ISO_10646__             200001L
+
 /* This macro indicates that the installed library is the GNU C Library.
    For historic reasons the value now is 6 and this will stay from now
    on.  The use of this variable is deprecated.  Use __GLIBC__ and
index 489fbce..17bd429 100644 (file)
@@ -1,3 +1,10 @@
+2000-08-13  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _POSIX_SEMAPHORES
+       even though the implementation is not quite complete (but it reports
+       it).  Define _POSIX_MESSAGE_PASSING to -1.
+       * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
+
 2000-08-12  Andreas Jaeger  <aj@suse.de>
 
        * sysdeps/mips/pt-machine.h (testandset): Add .set mips2 for
index a1b5f04..35f8fef 100644 (file)
@@ -89,7 +89,7 @@
 #define _POSIX_THREAD_ATTR_STACKADDR   1
 
 /* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-/*#define _POSIX_SEMAPHORES    1       XXX We are not quite there now.  */
+#define _POSIX_SEMAPHORES      1
 
 /* Real-time signals are supported.  */
 #define _POSIX_REALTIME_SIGNALS        1
 /* The barrier functions are available.  */
 #define _POSIX_BARRIERS        200912L
 
+/* POSIX message queues are not yet supported.  */
+#define        _POSIX_MESSAGE_PASSING  (-1)
+
 #endif /* posix_opt.h */
index 19acebb..489e152 100644 (file)
@@ -89,7 +89,7 @@
 #define _POSIX_THREAD_ATTR_STACKADDR   1
 
 /* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-/*#define _POSIX_SEMAPHORES    1       XXX We are not quite there now.  */
+#define _POSIX_SEMAPHORES      1
 
 /* Real-time signals are supported.  */
 #define _POSIX_REALTIME_SIGNALS        1
 /* The barrier functions are available.  */
 #define _POSIX_BARRIERS        200912L
 
+/* POSIX message queues are not yet supported.  */
+#define        _POSIX_MESSAGE_PASSING  (-1)
+
 #endif /* posix_opt.h */
index 3db293b..6a94a87 100644 (file)
@@ -484,11 +484,11 @@ enum
   __NOEXPR,                    /* Regex matching ``no'' input.  */
 #define NOEXPR                 __NOEXPR
   __YESSTR,                    /* Output string for ``yes''.  */
-#ifdef __USE_GNU
+#if defined __USE_GNU || (defined __USE_XOPEN || !defined __USE_XOPEN2K)
 # define YESSTR                        __YESSTR
 #endif
   __NOSTR,                     /* Output string for ``no''.  */
-#ifdef __USE_GNU
+#if defined __USE_GNU || (defined __USE_XOPEN || !defined __USE_XOPEN2K)
 # define       NOSTR           __NOSTR
 #endif
   _NL_NUM_LC_MESSAGES,
index bf07f73..816c029 100644 (file)
@@ -121,6 +121,8 @@ typedef __key_t key_t;
 # define __need_clock_t
 #endif
 #define        __need_time_t
+#define __need_timer_t
+#define __need_clockid_t
 #include <time.h>
 
 #ifdef __USE_XOPEN
index 2ae76a1..3f6373e 100644 (file)
@@ -348,7 +348,9 @@ extern int sigignore (int __sig) __THROW;
 
 /* Set the disposition of SIG.  */
 extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW;
+#endif
 
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
 /* Some of the functions for handling signals in threaded programs must
    be defined here.  */
 # include <bits/sigthread.h>
index 722db9e..445ca94 100644 (file)
@@ -128,7 +128,7 @@ typedef unsigned int __socklen_t;
 
 
 /* Now add the thread types.  */
-#ifdef __USE_UNIX98
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
 # include <bits/pthreadtypes.h>
 #endif
 
index b557635..a45b452 100644 (file)
@@ -154,7 +154,7 @@ typedef unsigned int __socklen_t;
 
 
 /* Now add the thread types.  */
-#ifdef __USE_UNIX98
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
 # include <bits/pthreadtypes.h>
 #endif
 
index 48ef3c1..4f37db4 100644 (file)
@@ -129,7 +129,7 @@ typedef long int __intptr_t;
 typedef unsigned int __socklen_t;
 
 /* Now add the thread types.  */
-#ifdef __USE_UNIX98
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
 # include <bits/pthreadtypes.h>
 #endif
 
index 379f2bc..818b947 100644 (file)
@@ -154,7 +154,7 @@ typedef unsigned int __socklen_t;
 
 
 /* Now add the thread types.  */
-#ifdef __USE_UNIX98
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
 # include <bits/pthreadtypes.h>
 #endif
 
index 191315f..78d85ab 100644 (file)
@@ -178,7 +178,7 @@ typedef unsigned int __socklen_t;
 
 
 /* Now add the thread types.  */
-#ifdef __USE_UNIX98
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
 # include <bits/pthreadtypes.h>
 #endif
 
index b74a9cb..7a00a39 100644 (file)
 #define __need_time_t
 #include <time.h>
 
+#ifdef __USE_XOPEN
+# ifndef __pid_t_defined
+typedef __pid_t pid_t;
+#  define __pid_t_defined
+# endif
+#endif /* X/Open */
 
 __BEGIN_DECLS
 
index 08a4a98..47e4d8c 100644 (file)
@@ -73,6 +73,28 @@ typedef __time_t time_t;
 #endif /* time_t not defined and <time.h> or need time_t.  */
 #undef __need_time_t
 
+#if !defined __clockid_t_defined && (defined _TIME_H || defined __need_clockid_t)
+# define __clockid_t_defined   1
+
+# include <bits/types.h>
+
+/* Clock ID used in clock and timer functions.  */
+typedef __clockid_t clockid_t;
+
+#endif /* clockid_t not defined and <time.h> or need clockid_t.  */
+#undef __clockid_time_t
+
+#if !defined __timer_t_defined && (defined _TIME_H || defined __need_timer_t)
+# define __timer_t_defined     1
+
+# include <bits/types.h>
+
+/* Timer ID returned by `timer_create'.  */
+typedef __timer_t timer_t;
+
+#endif /* timer_t not defined and <time.h> or need timer_t.  */
+#undef __need_timer_t
+
 
 #if !defined __timespec_defined && \
     ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timespec)
@@ -115,12 +137,6 @@ struct tm
 
 
 #ifdef __USE_POSIX199309
-/* Clock ID used in clock and timer functions.  */
-typedef __clockid_t clockid_t;
-
-/* Timer ID returned by `timer_create'.  */
-typedef __timer_t timer_t;
-
 /* POSIX.1b structure for timer start values and intervals.  */
 struct itimerspec
   {
index 66e7290..6ffe38b 100644 (file)
@@ -196,7 +196,7 @@ extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
 extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
      __THROW;
 
-#if defined __USE_XOPEN && !defined __USE_UNIX98
+#ifdef __USE_XOPEN
 /* Another name for `wcsstr' from XPG4.  */
 extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
      __THROW;
@@ -334,7 +334,7 @@ extern float wcstof (__const wchar_t *__restrict __nptr,
                     wchar_t **__restrict __endptr) __THROW;
 extern long double wcstold (__const wchar_t *__restrict __nptr,
                            wchar_t **__restrict __endptr) __THROW;
-#endif /* C9x */
+#endif /* C99 */
 
 
 /* Convert initial portion of wide string NPTR to `long int'
@@ -526,7 +526,7 @@ extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
 
 
 /* Wide character I/O functions.  */
-#ifdef __USE_ISOC99
+#if defined __USE_ISOC99 || defined __USE_UNIX98
 
 /* Select orientation for stream.  */
 extern int fwide (FILE *__fp, int __mode) __THROW;
@@ -572,7 +572,9 @@ extern int wscanf (__const wchar_t *__restrict __format, ...)
 extern int swscanf (__const wchar_t *__restrict __s,
                    __const wchar_t *__restrict __format, ...)
      __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
+#endif /* Use ISO C99 and Unix98. */
 
+#ifdef __USE_ISOC99
 /* Read formatted input from S into argument list ARG.  */
 extern int vfwscanf (FILE *__restrict __s,
                     __const wchar_t *__restrict __format,
@@ -587,6 +589,7 @@ extern int vswscanf (__const wchar_t *__restrict __s,
                     __const wchar_t *__restrict __format,
                     __gnuc_va_list __arg)
      __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
+#endif /* Use ISO C99. */
 
 
 /* Read a character from STREAM.  */
@@ -596,16 +599,6 @@ extern wint_t getwc (FILE *__stream);
 /* Read a character from stdin.  */
 extern wint_t getwchar (void);
 
-#ifdef __USE_GNU
-/* These are defined to be equivalent to the `char' functions defined
-   in POSIX.1:1996.  */
-extern wint_t getwc_unlocked (FILE *__stream);
-extern wint_t getwchar_unlocked (void);
-
-/* This is the wide character version of a GNU extension.  */
-extern wint_t fgetwc_unlocked (FILE *__stream);
-#endif /* Use POSIX or MISC.  */
-
 
 /* Write a character to STREAM.  */
 extern wint_t fputwc (wchar_t __wc, FILE *__stream);
@@ -614,7 +607,30 @@ extern wint_t putwc (wchar_t __wc, FILE *__stream);
 /* Write a character to stdout.  */
 extern wint_t putwchar (wchar_t __wc);
 
+
+/* Get a newline-terminated wide character string of finite length
+   from STREAM.  */
+extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
+                       FILE *__restrict __stream);
+
+/* Write a string to STREAM.  */
+extern int fputws (__const wchar_t *__restrict __ws,
+                  FILE *__restrict __stream);
+
+
+/* Push a character back onto the input buffer of STREAM.  */
+extern wint_t ungetwc (wint_t __wc, FILE *__stream);
+
+
 #ifdef __USE_GNU
+/* These are defined to be equivalent to the `char' functions defined
+   in POSIX.1:1996.  */
+extern wint_t getwc_unlocked (FILE *__stream);
+extern wint_t getwchar_unlocked (void);
+
+/* This is the wide character version of a GNU extension.  */
+extern wint_t fgetwc_unlocked (FILE *__stream);
+
 /* Faster version when locking is not necessary.  */
 extern wint_t fputwc_unlocked (wchar_t __wc, FILE *__stream);
 
@@ -622,43 +638,24 @@ extern wint_t fputwc_unlocked (wchar_t __wc, FILE *__stream);
    in POSIX.1:1996.  */
 extern wint_t putwc_unlocked (wchar_t __wc, FILE *__stream);
 extern wint_t putwchar_unlocked (wchar_t __wc);
-#endif
 
 
-/* Get a newline-terminated wide character string of finite length
-   from STREAM.  */
-extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
-                       FILE *__restrict __stream);
-
-#ifdef __USE_GNU
 /* This function does the same as `fgetws' but does not lock the stream.  */
 extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
                                 FILE *__restrict __stream);
-#endif
-
 
-/* Write a string to STREAM.  */
-extern int fputws (__const wchar_t *__restrict __ws,
-                  FILE *__restrict __stream);
-
-#ifdef __USE_GNU
 /* This function does the same as `fputws' but does not lock the stream.  */
 extern int fputws_unlocked (__const wchar_t *__restrict __ws,
                            FILE *__restrict __stream);
 #endif
 
 
-/* Push a character back onto the input buffer of STREAM.  */
-extern wint_t ungetwc (wint_t __wc, FILE *__stream);
-
-
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE wide characters and return the number
    of wide characters written, or 0 if it would exceed MAXSIZE.  */
 extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
                        __const wchar_t *__restrict __format,
                        __const struct tm *__restrict __tp);
-#endif /* Use ISO C9x. */
 
 /* The X/Open standard demands that most of the functions defined in
    the <wctype.h> header must also appear here.  This is probably