+1998-10-25 Ulrich Drepper <drepper@cygnus.com>
+
+ * include/features.h: Define __USE_POSIS199506 is _POSIX_C_SOURCE is
+ greater or equal than 199506L.
+
+ * sysdeps/generic/bits/types.h (__fd_set): Define element as fds_bits
+ only is __USE_XOPEN. Otherwise use __fds_bits.
+ * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise.
+
+1998-10-24 H.J. Lu <hjl@gnu.org>
+
+ * locale/programs/charmap.c (parse_charmap): Accept tok_string
+ for <code_set_name>.
+
+1998-10-25 H.J. Lu <hjl@gnu.org>
+
+ * locale/programs/ld-ctype.c (ctype_finish): Also check
+ <space>.
+
+1998-10-25 Ulrich Drepper <drepper@cygnus.com>
+
+ * signal/signal.h: Include bits/sigthread.h only if __USE_POSIX199506.
+
+ * sysdeps/unix/sysv/linux/bits/types.h: Include pthreadtypes.h only
+ if __USE_POSIX199506 or __USE_UNIX98.
+
+1998-10-24 22:34 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
+
+ * string/bits/string2.h: Inline strdup+friends only if
+ __USE_MISC || __USE_GNU (prevents namespace pollution).
+
+1998-10-24 H.J. Lu <hjl@gnu.org>
+
+ * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (LOCK_SH,
+ LOCK_EX, LOCK_NB, LOCK_UN): Protect with __USE_BSD.
+ * sysdeps/unix/sysv/linux/i386/bits/fcntl.h (LOCK_SH, LOCK_EX,
+ LOCK_NB, LOCK_UN): Likewise.
+ * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (LOCK_SH, LOCK_EX,
+ LOCK_NB, LOCK_UN): Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (LOCK_SH, LOCK_EX,
+ LOCK_NB, LOCK_UN): Likewise.
+ * sysdeps/unix/sysv/linux/bits/fcntl.h (LOCK_SH, LOCK_EX,
+ LOCK_NB, LOCK_UN): Likewise.
+
+1998-10-24 H.J. Lu <hjl@gnu.org>
+
+ * libio/ioseekoff.c (_IO_seekoff): Check the valid dir value.
+
+ * libio/rewind.c (rewind): Clear the error.
+
+1998-10-24 H.J. Lu <hjl@gnu.org>
+
+ * grp/grp.h (getgrent_r, getgrgid_r, getgrnam_r): Add "__" to
+ "buffer".
+
+1998-10-24 H.J. Lu <hjl@gnu.org>
+
+ * sysdeps/unix/sysv/linux/alpha/bits/time.h (timeval): Protect
+ with __need_timeval.
+ * sysdeps/unix/sysv/linux/mips/bits/time.h (timeval): Likewise.
+ * sysdeps/unix/sysv/linux/bits/time.h (timeval): Likewise.
+
+1998-10-24 H.J. Lu <hjl@gnu.org>
+
+ * signal/signal.h (timespec, siginfo_t, sigwaitinfo, sigtimedwait,
+ sigqueue): Protect with __USE_POSIX199309.
+
+1998-10-24 H.J. Lu <hjl@gnu.org>
+
+ * time/time.h (timespec): Protect with __USE_POSIX199309 instead of
+ __USE_POSIX.
+
+1998-10-24 H.J. Lu <hjl@gnu.org>
+
+ * libio/fileops.c (_IO_new_file_seekoff): Always resync with
+ the kernel file offset.
+ * libio/oldfileops.c (_IO_old_file_seekoff): Likewise.
+
1998-10-24 H.J. Lu <hjl@gnu.org>
* time/tzfile.c (__tzfile_default): Set num_types to 2.
/* fd_set for select and pselect. */
typedef struct
{
- /* XPG4.2 requires this member name. */
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the user namespace. */
+#ifdef __USE_XOPEN
__fd_mask fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
+#else
+ __fd_mask __fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
+#endif
} __fd_set;
POSIX people would choose. */
# if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
-extern int getgrent_r __P ((struct group *__resultbuf, char *buffer,
+extern int getgrent_r __P ((struct group *__resultbuf, char *__buffer,
size_t __buflen, struct group **__result));
# endif
/* Search for an entry with a matching group ID. */
extern int getgrgid_r __P ((__gid_t __gid, struct group *__resultbuf,
- char *buffer, size_t __buflen,
+ char *__buffer, size_t __buflen,
struct group **__result));
/* Search for an entry with a matching group name. */
extern int getgrnam_r __P ((__const char *__name, struct group *__resultbuf,
- char *buffer, size_t __buflen,
+ char *__buffer, size_t __buflen,
struct group **__result));
# ifdef __USE_SVID
/* Read a group entry from STREAM. This function is not standardized
an probably never will. */
extern int fgetgrent_r __P ((FILE * __stream, struct group *__resultbuf,
- char *buffer, size_t __buflen,
+ char *__buffer, size_t __buflen,
struct group **__result));
# endif
-/* Copyright (C) 1991, 92, 93, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 95, 96, 97, 98 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
__USE_ISOC9X Define ISO C 9X things.
__USE_POSIX Define IEEE Std 1003.1 things.
__USE_POSIX2 Define IEEE Std 1003.2 things.
- __USE_POSIX199309 Define IEEE Std 1003.1b things.
+ __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+ __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
__USE_XOPEN Define XPG things.
__USE_XOPEN_EXTENDED Define X/Open Unix things.
__USE_UNIX98 Define Single Unix V2 things.
#undef __USE_POSIX
#undef __USE_POSIX2
#undef __USE_POSIX199309
+#undef __USE_POSIX199506
#undef __USE_XOPEN
#undef __USE_XOPEN_EXTENDED
#undef __USE_UNIX98
# define __USE_POSIX199309 1
#endif
+#if (_POSIX_C_SOURCE - 0) >= 199506L
+# define __USE_POSIX199506 1
+#endif
+
#ifdef _XOPEN_SOURCE
# define __USE_XOPEN 1
# if (_XOPEN_SOURCE - 0) == 500
_IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
{
_IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- return offset;
+ goto resync;
}
}
#ifdef TODO
if (ignore (to_skip) != to_skip)
goto dumb;
_IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- return offset;
+ goto resync;
}
#endif
}
_IO_switch_to_backup_area (fp);
gbump (fp->_IO_read_end + rel_offset - fp->_IO_read_ptr);
_IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- return offset;
+ goto resync;
}
#endif
}
_IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
}
return result;
+
+resync:
+ /* We need to do it since it is possible that the file offset in
+ the kernel may be changed behind our back. It may happen when
+ we fopen a file and then do a fork. One process may access the
+ the file and the kernel file offset will be changed. */
+ if (fp->_offset >= 0)
+ _IO_SYSSEEK (fp, fp->_offset, 0);
+
+ return offset;
}
_IO_ssize_t
General Public License. */
#include <libioP.h>
+#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
+#ifndef __set_errno
+# define __set_errno(Val) errno = (Val)
+#endif
_IO_fpos64_t
_IO_seekoff (fp, offset, dir, mode)
{
_IO_fpos64_t retval;
+ if (dir != _IO_seek_cur && dir != _IO_seek_set && dir != _IO_seek_end)
+ {
+ __set_errno (EINVAL);
+ return EOF;
+ }
+
/* If we have a backup buffer, get rid of it, since the __seekoff
callback may not know to do the right thing about it.
This may be over-kill, but it'll do for now. TODO */
_IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
_IO_flockfile (fp);
-
if (mode != 0 && _IO_have_backup (fp))
{
if (dir == _IO_seek_cur && _IO_in_backup (fp))
_IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + rel_offset,
fp->_IO_read_end);
_IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
- return offset;
+ goto resync;
}
#ifdef TODO
/* If we have streammarkers, seek forward by reading ahead. */
- (fp->_IO_read_ptr - fp->_IO_read_base);
if (ignore (to_skip) != to_skip)
goto dumb;
- return offset;
+ goto resync;
}
#endif
}
if (!_IO_in_backup (fp))
_IO_switch_to_backup_area (fp);
gbump (fp->_IO_read_end + rel_offset - fp->_IO_read_ptr);
- return offset;
+ goto resync;
}
#endif
}
_IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
}
return result;
+
+resync:
+ /* We need to do it since it is possible that the file offset in
+ the kernel may be changed behind our back. It may happen when
+ we fopen a file and then do a fork. One process may access the
+ the file and the kernel file offset will be changed. */
+ if (fp->_old_offset >= 0)
+ _IO_SYSSEEK (fp, fp->_old_offset, 0);
+
+ return offset;
}
_IO_ssize_t
_IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
_IO_flockfile (fp);
_IO_rewind (fp);
+ _IO_clearerr (fp);
_IO_funlockfile (fp);
_IO_cleanup_region_end (0);
}
switch (nowtok)
{
case tok_code_set_name:
- if (arg->tok != tok_ident)
+ if (arg->tok != tok_ident && arg->tok != tok_string)
{
badarg:
lr_error (cmfile, _("syntax error in prolog: %s"),
/* ... and now test <SP> as a special case. */
space_value = charset_find_value (&charset->char_table, "SP", 2);
if ((wchar_t) space_value == ILLEGAL_CHAR_VALUE)
+ space_value = charset_find_value (&charset->char_table, "space", 5);
+ if ((wchar_t) space_value == ILLEGAL_CHAR_VALUE)
{
if (!be_quiet)
error (0, 0, _("character <SP> not defined in character map"));
#ifdef __USE_POSIX
+# ifdef __USE_POSIX199309
/* We need `struct timespec' later on. */
# define __need_timespec
# include <time.h>
/* Get the `siginfo_t' type plus the needed symbols. */
# include <bits/siginfo.h>
+# endif
/* Clear all signals from SET. */
extern int sigemptyset __P ((sigset_t *__set));
/* Return 1 if SIGNO is in SET, 0 if not. */
extern int sigismember __P ((__const sigset_t *__set, int __signo));
-# ifdef __USE_GNU
+# ifdef __USE_GNU
/* Return non-empty value is SET is not empty. */
extern int sigisemptyset __P ((__const sigset_t *__set));
/* Build new signal set by combining the two inputs set using logical OR. */
extern int sigorset __P ((sigset_t *__set, __const sigset_t *__left,
__const sigset_t *__right));
-# endif /* GNU */
+# endif /* GNU */
/* Get the system-specific definitions of `struct sigaction'
and the `SA_*' and `SIG_*'. constants. */
-# include <bits/sigaction.h>
+# include <bits/sigaction.h>
/* Get and/or change the set of blocked signals. */
extern int sigprocmask __P ((int __how,
/* Select any of pending signals from SET or wait for any to arrive. */
extern int sigwait __P ((__const sigset_t *__set, int *__sig));
+# ifdef __USE_POSIX199309
/* Select any of pending signals from SET and place information in INFO. */
extern int sigwaitinfo __P ((__const sigset_t *__set, siginfo_t *__info));
signal. */
extern int sigqueue __P ((__pid_t __pid, int __sig,
__const union sigval __val));
+# endif /* Use POSIX 199306. */
#endif /* Use POSIX. */
extern __sighandler_t sigset __P ((int __sig, __sighandler_t __disp));
#endif /* use Unix98 */
-#ifdef __USE_POSIX
+#ifdef __USE_POSIX199506
/* Some of the functions for handling signals in threaded programs must
be defined here. */
# include <bits/sigthread.h>
#endif
/* We need the memory allocation functions for inline strdup().
- Referring to stdlib.h (even minimally) is not allowed if
- __STRICT_ANSI__. */
-#ifndef __STRICT_ANSI__
+ Referring to stdlib.h (even minimally) is not allowed
+ in any of the tight standards compliant modes. */
+#if defined __USE_MISC || defined __USE_GNU
-#if !defined _HAVE_STRING_ARCH_strdup || !defined _HAVE_STRING_ARCH_strndup
-# define __need_malloc_and_calloc
-# include <stdlib.h>
-#endif
+# if !defined _HAVE_STRING_ARCH_strdup || !defined _HAVE_STRING_ARCH_strndup
+# define __need_malloc_and_calloc
+# include <stdlib.h>
+# endif
-#ifndef _HAVE_STRING_ARCH_strdup
+# ifndef _HAVE_STRING_ARCH_strdup
-# define __strdup(s) \
+# define __strdup(s) \
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
? (((__const char *) (s))[0] == '\0' \
? (char *) calloc (1, 1) \
__retval; })) \
: __strdup (s)))
-# if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
-# define strdup(s) __strdup (s)
+# if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+# define strdup(s) __strdup (s)
+# endif
# endif
-#endif
-#ifndef _HAVE_STRING_ARCH_strndup
+# ifndef _HAVE_STRING_ARCH_strndup
-# define __strndup(s, n) \
+# define __strndup(s, n) \
(__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
? (((__const char *) (s))[0] == '\0' \
? (char *) calloc (1, 1) \
__retval; })) \
: __strndup ((s), (n))))
-# ifdef __GNU_SOURCE
-# define strndup(s, n) __strndup ((s), (n))
+# ifdef __GNU_SOURCE
+# define strndup(s, n) __strndup ((s), (n))
+# endif
# endif
-#endif
-#endif /* Strict ANSI */
+#endif /* Use misc. or use GNU. */
#undef __STRING_INLINE
/* fd_set for select and pselect. */
typedef struct
{
- /* XPG4.2 requires this member name. */
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the user namespace. */
+#ifdef __USE_XOPEN
__fd_mask fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
+#else
+ __fd_mask __fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
+#endif
} __fd_set;
#define F_EXLCK 16 /* or 3 */
#define F_SHLCK 32 /* or 4 */
-/* operations for bsd flock(), also used by the kernel implementation */
-#define LOCK_SH 1 /* shared lock */
-#define LOCK_EX 2 /* exclusive lock */
-#define LOCK_NB 4 /* or'd with one of the above to prevent
+/* Operations for bsd flock(), also used by the kernel implementation */
+#ifdef __USE_BSD
+# define LOCK_SH 1 /* shared lock */
+# define LOCK_EX 2 /* exclusive lock */
+# define LOCK_NB 4 /* or'd with one of the above to prevent
blocking */
-#define LOCK_UN 8 /* remove lock */
+# define LOCK_UN 8 /* remove lock */
+#endif
/* We don't need to support __USE_FILE_OFFSET64. */
struct flock
# endif /* bits/time.h */
#endif /* !__need_timeval */
-
-#ifndef _STRUCT_TIMEVAL
-# define _STRUCT_TIMEVAL 1
-# include <bits/types.h>
+#ifdef __need_timeval
+# undef __need_timeval
+# ifndef _STRUCT_TIMEVAL
+# define _STRUCT_TIMEVAL 1
+# include <bits/types.h>
/* A time value that is accurate to the nearest
microsecond but also has a range of years. */
__time_t tv_sec; /* Seconds. */
__time_t tv_usec; /* Microseconds. */
};
-#endif /* struct timeval */
+# endif /* struct timeval */
+#endif /* need timeval */
/* fd_set for select and pselect. */
typedef struct
{
- /* XPG4.2 requires this member name. */
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the user namespace. */
+#ifdef __USE_XOPEN
__fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
+#else
+ __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
+#endif
} __fd_set;
/* Used in XTI. */
/* Now add the thread types. */
-#include <bits/pthreadtypes.h>
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
+# include <bits/pthreadtypes.h>
+#endif
#endif /* bits/types.h */
#define F_EXLCK 4 /* or 3 */
#define F_SHLCK 8 /* or 4 */
-/* operations for bsd flock(), also used by the kernel implementation */
-#define LOCK_SH 1 /* shared lock */
-#define LOCK_EX 2 /* exclusive lock */
-#define LOCK_NB 4 /* or'd with one of the above to prevent
+#ifdef __USE_BSD
+/* Operations for bsd flock(), also used by the kernel implementation */
+# define LOCK_SH 1 /* shared lock */
+# define LOCK_EX 2 /* exclusive lock */
+# define LOCK_NB 4 /* or'd with one of the above to prevent
blocking */
-#define LOCK_UN 8 /* remove lock */
+# define LOCK_UN 8 /* remove lock */
+#endif
struct flock
{
# endif /* bits/time.h */
#endif
-#ifndef _STRUCT_TIMEVAL
-# define _STRUCT_TIMEVAL 1
-# include <bits/types.h>
+#ifdef __need_timeval
+# undef __need_timeval
+# ifndef _STRUCT_TIMEVAL
+# define _STRUCT_TIMEVAL 1
+# include <bits/types.h>
/* A time value that is accurate to the nearest
microsecond but also has a range of years. */
__time_t tv_sec; /* Seconds. */
__time_t tv_usec; /* Microseconds. */
};
-#endif /* struct timeval */
+# endif /* struct timeval */
+#endif /* need timeval */
/* fd_set for select and pselect. */
typedef struct
{
- /* XPG4.2 requires this member name. */
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the global namespace. */
+#ifdef __USE_XOPEN
__fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
+#else
+ __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
+#endif
} __fd_set;
/* Now add the thread types. */
-#include <bits/pthreadtypes.h>
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
+# include <bits/pthreadtypes.h>
+#endif
#endif /* bits/types.h */
#define F_EXLCK 4 /* or 3 */
#define F_SHLCK 8 /* or 4 */
+#ifdef __USE_BSD
/* operations for bsd flock(), also used by the kernel implementation */
-#define LOCK_SH 1 /* shared lock */
-#define LOCK_EX 2 /* exclusive lock */
-#define LOCK_NB 4 /* or'd with one of the above to prevent
+# define LOCK_SH 1 /* shared lock */
+# define LOCK_EX 2 /* exclusive lock */
+# define LOCK_NB 4 /* or'd with one of the above to prevent
blocking */
-#define LOCK_UN 8 /* remove lock */
+# define LOCK_UN 8 /* remove lock */
+#endif
struct flock
{
#define F_EXLCK 4 /* or 3 */
#define F_SHLCK 8 /* or 4 */
-/* operations for bsd flock(), also used by the kernel implementation */
-#define LOCK_SH 1 /* shared lock */
-#define LOCK_EX 2 /* exclusive lock */
-#define LOCK_NB 4 /* or'd with one of the above to prevent XXXXXXXXXXXXXXXXXX
+#ifdef __USE_BSD
+/* Operations for bsd flock(), also used by the kernel implementation */
+# define LOCK_SH 1 /* shared lock */
+# define LOCK_EX 2 /* exclusive lock */
+# define LOCK_NB 4 /* or'd with one of the above to prevent XXXXXXXXXXXXXXXXXX
blocking */
-#define LOCK_UN 8 /* remove lock */
+# define LOCK_UN 8 /* remove lock */
+#endif
typedef struct flock
{
# endif /* bits/time.h */
#endif
-#ifndef _STRUCT_TIMEVAL
-# define _STRUCT_TIMEVAL 1
+#ifdef __need_timeval
+# undef __need_timeval
+# ifndef _STRUCT_TIMEVAL
+# define _STRUCT_TIMEVAL 1
/* A time value that is accurate to the nearest
microsecond but also has a range of years. */
struct timeval
long int tv_sec; /* Seconds. */
long int tv_usec; /* Microseconds. */
};
-#endif /* struct timeval */
+# endif /* struct timeval */
+#endif /* need timeval */
/* fd_set for select and pselect. */
typedef struct
{
- /* XPG4.2 requires this member name. */
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the user namespace. */
+#ifdef __USE_XOPEN
__fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
+#else
+ __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
+#endif
} __fd_set;
/* Now add the thread types. */
-#include <bits/pthreadtypes.h>
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
+# include <bits/pthreadtypes.h>
+#endif
#endif /* bits/types.h */
#define F_EXLCK 4 /* or 3 */
#define F_SHLCK 8 /* or 4 */
-/* operations for bsd flock(), also used by the kernel implementation */
-#define LOCK_SH 1 /* shared lock */
-#define LOCK_EX 2 /* exclusive lock */
-#define LOCK_NB 4 /* or'd with one of the above to prevent
+#ifdef __USE_BSD
+/* Operations for bsd flock(), also used by the kernel implementation */
+# define LOCK_SH 1 /* shared lock */
+# define LOCK_EX 2 /* exclusive lock */
+# define LOCK_NB 4 /* or'd with one of the above to prevent
blocking */
-#define LOCK_UN 8 /* remove lock */
+# define LOCK_UN 8 /* remove lock */
+#endif
struct flock
{
/* fd_set for select and pselect. */
typedef struct
{
- /* XPG4.2 requires this member name. */
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the user namespace. */
+#ifdef __USE_XOPEN
__fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
+#else
+ __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
+#endif
} __fd_set;
/* Now add the thread types. */
-#include <bits/pthreadtypes.h>
+#if defined __USE_POSIX199506 || defined __USE_UNIX98
+# include <bits/pthreadtypes.h>
+#endif
#endif /* bits/types.h */
typedef struct
{
- /* XPG4.2 requires this member name. */
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the user namespace. */
+#ifdef __USE_XOPEN
unsigned long int fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
+#else
+ unsigned long int __fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
+#endif
} __fd_set;
typedef unsigned long int __fd_mask;
#if !defined __timespec_defined && \
- ((defined _TIME_H && defined __USE_POSIX) || defined __need_timespec)
+ ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timespec)
# define __timespec_defined 1
/* POSIX.4 structure for a time value. This is like a `struct timeval' but