Wed Jul 3 16:29:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>

* nss/getXXbyYY_r.c (REENTRANT_NAME): Cast FCT in __nss_next call.

	* sysdeps/generic/sbrk.c: Always call __brk (0) to update __curbrk.

	* malloc/malloc-size.c (malloc_usable_size): Renamed from
	malloc_object_allocation_size.
	* malloc/malloc.h: Fix decl.

	* sys/select.h: New file, wrapper header.

	* posix/sys/types.h [__USE_BSD]: Include <sys/select.h>; remove
	fd_set, associated macros, and select decl.

	* sysdeps/posix/isfdtype.c: New file.

Tue Jul  2 23:45:14 1996  Ulrich Drepper  <drepper@cygnus.com>

	The latest Japanese proposal for POSIX locales renames the
	CHARMAP keyword in locale definition files to CHARCONV.
	* locale/programs/ld-ctype.c, locale/programs/locales.h: Rename
        function ctype_is_charmap to ctype_is_charconv.
	* locale/programs/locfile-kw.gperf: Replace charmap keyword with
        charconv.
	* locale/programs/locfile-token.h: Add definition of token
        charconv.
	* locale/programs/locfile.c: Recognize charconv keyword.  Rename
        lables according to this.

	* locale/weight.h (get_weight): Cast constants to prevent
        warnings.

	* stdlib/strtod.c, stdlib/strtol.c, string/strcoll.c,
	string/strxfrm.c: Add some more casts to prevent signed<->unsigned
	warnings.

	New stuff described in P1003.1g.
	* misc/Makefile (headers): Add sys/select.h.
	(routines): Add pselect.
	* misc/sys/select.h: New file.  Declare select functions and
	needed data types and macros.
	* sysdeps/generic/pselect.c: New file.  Add generic implementation
	of pselect() function which uses select().

	* posix/getconf.c: Recognize new variables from P1003.1g.
	* posix/posix1_lim.h: Define _POSIX_FD_SETSIZE, _POSIX_QLIMIT,
	_POSIX_HIWAT, and _POSIX_UIO_MAXIOV.
	* posix/unistd.h: Add description of the P1003.1g variables.
	* sysdeps/generic/confname.h: Define _SC_* values for new
	variables.
	* sysdeps/posix/fpathconf.c (fpathconf): Add handling of
	_PC_SOCK_MAXBUF.
	* sysdeps/stub/fpathconf.c (fpathconf): Ditto.
	* sysdeps/posix/sysconf.c (sysconf): Add handling of new
	P1003.1g variables.
	* sysdeps/stub/sysconf.c (sysconf): Ditto.
	* sysdeps/unix/sysv/linux/posix_opt.h: Define _POSIX_POLL and
	_POSIX_SELECT since Linux has this.

	* socket/Makefile (routines): Add isfdtype.
	* sysdeps/generic/sys/socket.h: Add prototype for isfdtype.
	* sysdeps/stub/isfdtype.c: New file.  Stub implementation of
	isfdtype.

	* wcsmbs/wcrtomb.c (wcrtomb): Fix typo.
This commit is contained in:
Roland McGrath 1996-07-04 00:07:18 +00:00
parent 175b633d81
commit 503054c0dd
32 changed files with 528 additions and 70 deletions

View file

@ -1,3 +1,70 @@
Wed Jul 3 16:29:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* nss/getXXbyYY_r.c (REENTRANT_NAME): Cast FCT in __nss_next call.
* sysdeps/generic/sbrk.c: Always call __brk (0) to update __curbrk.
* malloc/malloc-size.c (malloc_usable_size): Renamed from
malloc_object_allocation_size.
* malloc/malloc.h: Fix decl.
* sys/select.h: New file, wrapper header.
* posix/sys/types.h [__USE_BSD]: Include <sys/select.h>; remove
fd_set, associated macros, and select decl.
* sysdeps/posix/isfdtype.c: New file.
Tue Jul 2 23:45:14 1996 Ulrich Drepper <drepper@cygnus.com>
The latest Japanese proposal for POSIX locales renames the
CHARMAP keyword in locale definition files to CHARCONV.
* locale/programs/ld-ctype.c, locale/programs/locales.h: Rename
function ctype_is_charmap to ctype_is_charconv.
* locale/programs/locfile-kw.gperf: Replace charmap keyword with
charconv.
* locale/programs/locfile-token.h: Add definition of token
charconv.
* locale/programs/locfile.c: Recognize charconv keyword. Rename
lables according to this.
* locale/weight.h (get_weight): Cast constants to prevent
warnings.
* stdlib/strtod.c, stdlib/strtol.c, string/strcoll.c,
string/strxfrm.c: Add some more casts to prevent signed<->unsigned
warnings.
New stuff described in P1003.1g.
* misc/Makefile (headers): Add sys/select.h.
(routines): Add pselect.
* misc/sys/select.h: New file. Declare select functions and
needed data types and macros.
* sysdeps/generic/pselect.c: New file. Add generic implementation
of pselect() function which uses select().
* posix/getconf.c: Recognize new variables from P1003.1g.
* posix/posix1_lim.h: Define _POSIX_FD_SETSIZE, _POSIX_QLIMIT,
_POSIX_HIWAT, and _POSIX_UIO_MAXIOV.
* posix/unistd.h: Add description of the P1003.1g variables.
* sysdeps/generic/confname.h: Define _SC_* values for new
variables.
* sysdeps/posix/fpathconf.c (fpathconf): Add handling of
_PC_SOCK_MAXBUF.
* sysdeps/stub/fpathconf.c (fpathconf): Ditto.
* sysdeps/posix/sysconf.c (sysconf): Add handling of new
P1003.1g variables.
* sysdeps/stub/sysconf.c (sysconf): Ditto.
* sysdeps/unix/sysv/linux/posix_opt.h: Define _POSIX_POLL and
_POSIX_SELECT since Linux has this.
* socket/Makefile (routines): Add isfdtype.
* sysdeps/generic/sys/socket.h: Add prototype for isfdtype.
* sysdeps/stub/isfdtype.c: New file. Stub implementation of
isfdtype.
* wcsmbs/wcrtomb.c (wcrtomb): Fix typo.
Wed Jul 3 11:26:28 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* elf/Makefile (LDFLAGS-dl.so): New variable.

View file

@ -665,8 +665,8 @@ ctype_map_new (struct linereader *lr, struct localedef_t *locale,
int
ctype_is_charmap (struct linereader *lr, struct localedef_t *locale,
const char *name)
ctype_is_charconv (struct linereader *lr, struct localedef_t *locale,
const char *name)
{
struct locale_ctype_t *ctype = locale->categories[LC_CTYPE].ctype;
size_t cnt;

View file

@ -99,8 +99,8 @@ void ctype_class_to (struct linereader *lr, struct localedef_t *locale,
struct token *code, struct charset_t *charset);
void ctype_class_end (struct linereader *lr, struct localedef_t *locale);
int ctype_is_charmap (struct linereader *lr, struct localedef_t *locale,
const char *name);
int ctype_is_charconv (struct linereader *lr, struct localedef_t *locale,
const char *name);
void ctype_map_new (struct linereader *lr, struct localedef_t *locale,
enum token_t tok, struct token *code,
struct charset_t *charset);

View file

@ -42,7 +42,7 @@ print, tok_print, 0
xdigit, tok_xdigit, 0
blank, tok_blank, 0
charclass, tok_charclass, 0
charmap, tok_charmap, 0
charconv, tok_charconv, 0
toupper, tok_toupper, 0
tolower, tok_tolower, 0
LC_COLLATE, tok_lc_collate, 0

View file

@ -1,3 +1,4 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
@ -42,6 +43,7 @@ enum token_t
tok_escape_char,
tok_comment_char,
tok_charmap,
tok_end,
tok_g0esc,
tok_g1esc,
@ -51,7 +53,7 @@ enum token_t
tok_code_set_name,
tok_mb_cur_max,
tok_mb_cur_min,
tok_charmap,
tok_charconv,
tok_width,
tok_width_variable,
tok_width_default,

View file

@ -280,11 +280,11 @@ syntax error in definition of new character class"));
continue;
}
if (nowtok == tok_charmap)
if (nowtok == tok_charconv)
{
READ_STRING_LIST (ctype_map_new, bad_new_charmap);
READ_STRING_LIST (ctype_map_new, bad_new_charconv);
continue;
bad_new_charmap:
bad_new_charconv:
SYNTAX_ERROR (_("\
syntax error in definition of new character map"));
continue;
@ -324,7 +324,7 @@ syntax error in definition of new character map"));
}
/* ...or a self-defined character map. */
if (ctype_is_charmap (ldfile, result, now->val.str.start))
if (ctype_is_charconv (ldfile, result, now->val.str.start))
{
ctype_tok_sym = nowtok;
ctype_tok_str = now->val.str.start;
@ -411,14 +411,14 @@ syntax error in character class definition"));
{
/* Match ( bsymbol , bsymbol ) */
if (now->tok != tok_open_brace)
goto bad_charmap;
goto bad_charconv;
now = lr_token (ldfile, charset);
if (now->tok != tok_bsymbol)
{
bad_charmap:
bad_charconv:
SYNTAX_ERROR (_("\
syntax error in character mapping definition"));
syntax error in character conversion definition"));
state = 3;
break;
}
@ -428,18 +428,18 @@ syntax error in character mapping definition"));
now = lr_token (ldfile, charset);
if (now->tok != tok_comma)
goto bad_charmap;
goto bad_charconv;
now = lr_token (ldfile, charset);
if (now->tok != tok_bsymbol)
goto bad_charmap;
goto bad_charconv;
/* Lookup arg and assign to TO. */
ctype_map_to (ldfile, result, now, charset);
now = lr_token (ldfile, charset);
if (now->tok != tok_close_brace)
goto bad_charmap;
goto bad_charconv;
now = lr_token (ldfile, charset);
if (now->tok == tok_eol)
@ -448,7 +448,7 @@ syntax error in character mapping definition"));
break;
}
if (now->tok != tok_semicolon)
goto bad_charmap;
goto bad_charconv;
now = lr_token (ldfile, charset);
}

View file

@ -92,7 +92,7 @@ get_weight (const STRING_TYPE **str, weight_t *result)
}
}
if (__collate_table[slot + 1] != FORWARD_CHAR)
if (__collate_table[slot + 1] != (u_int32_t) FORWARD_CHAR)
{
/* We have a simple form. One one value for each weight. */
size_t cnt;

View file

@ -27,7 +27,8 @@ headers := sys/uio.h iovec.h sys/ioctl.h ioctls.h ioctl-types.h \
ar.h a.out.h nlist.h stab.h stab.def sgtty.h \
ttyent.h syslog.h sys/syslog.h paths.h sys/reboot.h \
sys/mman.h sys/param.h fstab.h mntent.h search.h err.h error.h\
sys/queue.h sysexits.h syscall.h sys/syscall.h sys/swap.h
sys/queue.h sysexits.h syscall.h sys/syscall.h sys/swap.h \
sys/select.h
routines := brk sbrk sstk ioctl \
readv writev \
@ -36,7 +37,7 @@ routines := brk sbrk sstk ioctl \
getpagesize \
getdtsz \
gethostname sethostname getdomain setdomain \
select \
select pselect \
acct chroot fsync sync fdatasync reboot \
gethostid sethostid \
revoke vhangup \

81
misc/sys/select.h Normal file
View file

@ -0,0 +1,81 @@
/* `fd_set' type and related macros, and `select'/`pselect' declarations.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> */
#ifndef __SYS_SELECT_H
#define __SYS_SELECT_H 1
#include <features.h>
/* Get definition of needed basic types. */
#include <gnu/types.h>
/* Get definition of timer specification structures. */
/* XXX this is wrong. 1003.1gD6.1 says `struct timespec'
is defined by <sys/select.h>, and that is all.
However, since a program is required to include <sys/time.h>
before using select/pselect anyway, perhaps it doesn't matter. */
#include <sys/time.h>
__BEGIN_DECLS
/* Representation of a set of file descriptors. */
#define fd_set __fd_set
/* Maximum number of file descriptors in `fd_set'. */
#define FD_SETSIZE __FD_SETSIZE
#ifdef __USE_MISC
/* Number of bits per word of `fd_set' (some code assumes this is 32). */
#define NFDBITS __NFDBITS
#endif
/* Access macros for `fd_set'. */
#define FD_SET(fd, fdsetp) __FD_SET ((fd), (fdsetp))
#define FD_CLR(fd, fdsetp) __FD_CLR ((fd), (fdsetp))
#define FD_ISSET(fd, fdsetp) __FD_ISSET ((fd), (fdsetp))
#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
(if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
after waiting the interval specified therein. Returns the number of ready
descriptors, or -1 for errors. */
extern int __select __P ((int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timeval *__timeout));
extern int select __P ((int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timeval *__timeout));
/* Same as above only that the TIMEOUT value is given with higher
resolution. This version should be used. */
extern int __pselect __P ((int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timespec *__timeout));
extern int pselect __P ((int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timespec *__timeout));
__END_DECLS
#endif /* sys/select.h */

View file

@ -122,7 +122,8 @@ REENTRANT_NAME (ADD_PARAMS, LOOKUP_TYPE *result, char *buffer, int buflen
{
status = (*fct) (ADD_VARIABLES, result, buffer, buflen H_ERRNO_VAR);
no_more = __nss_next (&nip, REENTRANT_NAME_STRING, &fct, status, 0);
no_more = __nss_next (&nip, REENTRANT_NAME_STRING,
(void **) &fct, status, 0);
}
return status == NSS_STATUS_SUCCESS ? result : NULL;

View file

@ -38,6 +38,7 @@ static struct conf vars[] =
{ "NAME_MAX", _PC_NAME_MAX, PATHCONF },
{ "PATH_MAX", _PC_PATH_MAX, PATHCONF },
{ "PIPE_BUF", _PC_PIPE_BUF, PATHCONF },
{ "SOCK_MAXBUF", _PC_SOCK_MAXBUF, PATHCONF },
{ "_POSIX_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED, PATHCONF },
{ "_POSIX_NO_TRUNC", _PC_NO_TRUNC, PATHCONF },
{ "_POSIX_VDISABLE", _PC_VDISABLE, PATHCONF },
@ -67,6 +68,20 @@ static struct conf vars[] =
{ "_POSIX_SEMAPHORES", _SC_SEMAPHORES, SYSCONF },
{ "_POSIX_SHARED_MEMORY_OBJECTS", _SC_SHARED_MEMORY_OBJECTS, SYSCONF },
{ "_POSIX_VERSION", _SC_VERSION, SYSCONF },
{ "_POSIX_PII", _SC_PII, SYSCONF },
{ "_POSIX_PII_XTI", _SC_PII_XTI, SYSCONF },
{ "_POSIX_PII_SOCKET", _SC_PII_SOCKET, SYSCONF },
{ "_POSIX_PII_INTERNET", _SC_PII_INTERNET, SYSCONF },
{ "_POSIX_PII_OSI", _SC_PII_OSI, SYSCONF },
{ "_POSIX_POLL", _SC_POLL, SYSCONF },
{ "_POSIX_SELECT", _SC_SELECT, SYSCONF },
{ "UIO_MAXIOV", _SC_UIO_MAXIOV, SYSCONF },
{ "_POSIX_PII_INTERNET_STREAM", _SC_PII_INTERNET_STREAM, SYSCONF },
{ "_POSIX_PII_INTERNET_DGRAM", _SC_PII_INTERNET_DGRAM, SYSCONF },
{ "_POSIX_PII_OSI_COTS", _SC_PII_OSI_COTS, SYSCONF },
{ "_POSIX_PII_OSI_CLTS", _SC_PII_OSI_CLTS, SYSCONF },
{ "_POSIX_PII_OSI_M", _SC_PII_OSI_M, SYSCONF },
{ "_T_IOV_MAX", _SC_T_IOV_MAX, SYSCONF },
{ "PATH", _CS_PATH, CONFSTR },

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1992, 1993, 1996 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
@ -49,6 +49,10 @@ Cambridge, MA 02139, USA. */
/* Number of files one process can have open at once. */
#define _POSIX_OPEN_MAX 16
/* Number of descriptors that a process may examine with `pselect' or
`select'. */
#define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
/* Number of bytes in a filename. */
#define _POSIX_NAME_MAX 14
@ -67,6 +71,16 @@ Cambridge, MA 02139, USA. */
/* Maximum length of a timezone name (element of `tzname'). */
#define _POSIX_TZNAME_MAX 3
/* Maximum number of connections that can be queued on a socket. */
#define _POSIX_QLIMIT 1
/* Maximem number of bytes that can be buffered on a socket for send
or receive. */
#define _POSIX_HIWAT _POSIX_PIPE_BUF
/* Maximum number of elements in an `iovec' array. */
#define _POSIX_UIO_MAXIOV 16
/* Get the implementation-specific values for the above. */
#include <local_lim.h>

View file

@ -122,35 +122,9 @@ typedef long int key_t;
#ifdef __USE_BSD
/* In BSD <sys/types.h> is expected to define BYTE_ORDER. */
#include <endian.h>
#endif
#ifdef __USE_BSD
#define FD_SETSIZE __FD_SETSIZE
#define NFDBITS __NFDBITS
#define fd_set __fd_set
#define FD_ZERO(set) __FD_ZERO(set)
#define FD_SET(d, set) __FD_SET((d), (set))
#define FD_CLR(d, set) __FD_CLR((d), (set))
#define FD_ISSET(d, set)__FD_ISSET((d), (set))
/* This being here makes the `select' prototype valid whether or not
we have already included <sys/time.h> to define `struct timeval'. */
struct timeval;
/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
(if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
after waiting the interval specified therein. Returns the number of ready
descriptors, or -1 for errors. */
extern int __select __P ((int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timeval *__timeout));
extern int select __P ((int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timeval *__timeout));
/* It also defines `fd_set' and the FD_* macros for `select'. */
#include <sys/select.h>
#endif /* Use BSD. */

View file

@ -79,6 +79,17 @@ __BEGIN_DECLS
_POSIX_MESSAGE_PASSING POSIX.4 message queues are supported.
_POSIX_SEMAPHORES POSIX.4 counting semaphores are supported.
_POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported.
_POSIX_PII Protocol-independent interfaces are supported.
_POSIX_PII_XTI XTI protocol-indep. interfaces are supported.
_POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported.
_POSIX_PII_INTERNET Internet family of protocols supported.
_POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported.
_POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported.
_POSIX_PII_OSI ISO/OSI family of protocols supported.
_POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported.
_POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported.
_POSIX_POLL Implementation supports `poll' function.
_POSIX_SELECT Implementation supports `select' and `pselect'.
If any of these symbols is defined as -1, the corresponding option is not
true for any file. If any is defined as other than -1, the corresponding

View file

@ -1,4 +1,4 @@
# Copyright (C) 1991, 1995 Free Software Foundation, Inc.
# Copyright (C) 1991, 1995, 1996 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,6 @@ headers := sys/socket.h sys/un.h sockaddrcom.h
routines := accept bind connect getpeername getsockname getsockopt \
listen recv recvfrom recvmsg send sendmsg sendto \
setsockopt shutdown socket socketpair
setsockopt shutdown socket socketpair isfdtype
include ../Rules

View file

@ -431,19 +431,19 @@ INTERNAL (STRTOF) (nptr, endptr, group)
/* Return 0.0 if no legal string is found.
No character is used even if a sign was found. */
if ((c < L_('0') || c > L_('9'))
&& (c != decimal || cp[1] < L_('0') || cp[1] > L_('9')))
&& ((wint_t) c != decimal || cp[1] < L_('0') || cp[1] > L_('9')))
RETURN (0.0, nptr);
/* Record the start of the digits, in case we will check their grouping. */
start_of_digits = startp = cp;
/* Ignore leading zeroes. This helps us to avoid useless computations. */
while (c == L_('0') || (thousands != L'\0' && c == thousands))
while (c == L_('0') || (thousands != L'\0' && (wint_t) c == thousands))
c = *++cp;
/* If no other digit but a '0' is found the result is 0.0.
Return current read pointer. */
if ((c < L_('0') || c > L_('9')) && c != decimal)
if ((c < L_('0') || c > L_('9')) && (wint_t) c != decimal)
{
tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping);
/* If TP is at the start of the digits, there was no correctly
@ -462,7 +462,7 @@ INTERNAL (STRTOF) (nptr, endptr, group)
{
if (c >= L_('0') && c <= L_('9'))
++dig_no;
else if (thousands == L'\0' || c != thousands)
else if (thousands == L'\0' || (wint_t) c != thousands)
/* Not a digit or separator: end of the integer part. */
break;
c = *++cp;
@ -512,7 +512,7 @@ INTERNAL (STRTOF) (nptr, endptr, group)
/* Read the fractional digits. A special case are the 'american style'
numbers like `16.' i.e. with decimal but without trailing digits. */
if (c == decimal)
if ((wint_t) c == decimal)
{
c = *++cp;
while (c >= L_('0') && c <= L_('9'))
@ -609,7 +609,7 @@ INTERNAL (STRTOF) (nptr, endptr, group)
if (lead_zero)
{
/* Find the decimal point */
while (*startp != decimal)
while ((wint_t) *startp != decimal)
++startp;
startp += lead_zero + 1;
exponent -= lead_zero;

View file

@ -248,8 +248,9 @@ INTERNAL (strtol) (nptr, endptr, base, group)
/* Find the end of the digit string and check its grouping. */
end = s;
for (c = *end; c != L_('\0'); c = *++end)
if (c != thousands && (c < L_('0') || c > L_('9'))
&& (!ISALPHA (c) || TOUPPER (c) - L_('A') + 10 >= base))
if ((wchar_t) c != thousands
&& ((wchar_t) c < L_('0') || (wchar_t) c > L_('9'))
&& (!ISALPHA (c) || (int) (TOUPPER (c) - L_('A') + 10) >= base))
break;
if (*s == thousands)
end = s;
@ -275,7 +276,7 @@ INTERNAL (strtol) (nptr, endptr, base, group)
c = TOUPPER (c) - L_('A') + 10;
else
break;
if (c >= base)
if ((int) c >= base)
break;
/* Check for overflow. */
if (i > cutoff || (i == cutoff && c > cutlim))

View file

@ -75,7 +75,8 @@ STRCOLL (s1, s2)
/* Here we have to check for IGNORE entries. If these are
found we count them and go on witht he next value. */
while ((w1 = s1run->data[pass].value[s1idx]) == IGNORE_CHAR)
while ((w1 = s1run->data[pass].value[s1idx])
== (u_int32_t) IGNORE_CHAR)
{
++s1ignore;
if ((forward && ++s1idx >= s1run->data[pass].number)
@ -92,7 +93,8 @@ STRCOLL (s1, s2)
}
}
while ((w2 = s2run->data[pass].value[s2idx]) == IGNORE_CHAR)
while ((w2 = s2run->data[pass].value[s2idx])
== (u_int32_t) IGNORE_CHAR)
{
++s2ignore;
if ((forward && ++s2idx >= s2run->data[pass].number)

View file

@ -179,7 +179,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n)
/* Here we have to check for IGNORE entries. If these are
found we count them and go on witht he next value. */
while ((w = run->data[pass].value[idx]) == IGNORE_CHAR)
while ((w = run->data[pass].value[idx]) == (u_int32_t) IGNORE_CHAR)
{
++ignore;
if ((forward && ++idx >= run->data[pass].number)

1
sys/select.h Normal file
View file

@ -0,0 +1 @@
#include <misc/sys/select.h>

View file

@ -41,8 +41,10 @@ enum
#define _PC_SYNC_IO _PC_SYNC_IO
_PC_ASYNC_IO,
#define _PC_ASYNC_IO _PC_ASYNC_IO
_PC_PRIO_IO
_PC_PRIO_IO,
#define _PC_PRIO_IO _PC_PRIO_IO
_PC_SOCK_MAXBUF
#define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
};
/* Values for the argument to `sysconf'. */
@ -156,7 +158,37 @@ enum
#define _SC_2_FORT_RUN _SC_2_FORT_RUN
_SC_2_SW_DEV,
#define _SC_2_SW_DEV _SC_2_SW_DEV
_SC_2_LOCALEDEF
_SC_2_LOCALEDEF,
#define _SC_2_LOCALEDEF _SC_2_LOCALEDEF
_SC_PII,
#define _SC_PII _SC_PII
_SC_PII_XTI,
#define _SC_PII_XTI _SC_PII_XTI
_SC_PII_SOCKET,
#define _SC_PII_SOCKET _SC_PII_SOCKET
_SC_PII_INTERNET,
#define _SC_PII_INTERNET _SC_PII_INTERNET
_SC_PII_OSI,
#define _SC_PII_OSI _SC_PII_OSI
_SC_POLL,
#define _SC_POLL _SC_POLL
_SC_SELECT,
#define _SC_SELECT _SC_SELECT
_SC_UIO_MAXIOV,
#define _SC_UIO_MAXIOV _SC_UIO_MAXIOV
_SC_PII_INTERNET_STREAM,
#define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM
_SC_PII_INTERNET_DGRAM,
#define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM
_SC_PII_OSI_COTS,
#define _SC_PII_OSI_COTS _SC_PII_OSI_COTS
_SC_PII_OSI_CLTS,
#define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS
_SC_PII_OSI_M,
#define _SC_PII_OSI_M _SC_PII_OSI_M
_SC_T_IOV_MAX
#define _SC_T_IOV_MAX _SC_T_IOV_MAX
};
#ifdef __USE_POSIX2

55
sysdeps/generic/pselect.c Normal file
View file

@ -0,0 +1,55 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <sys/select.h>
/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
(if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
after waiting the interval specified therein. Returns the number of ready
descriptors, or -1 for errors. */
int
__pselect (nfds, readfds, writefds, exceptfds, timeout)
int nfds;
fd_set *readfds;
fd_set *writefds;
fd_set *exceptfds;
struct timespec *timeout;
{
struct timeval tval;
int retval;
/* Change nanosecond number to microseconds. This may loose
precision and therefore the `pselect` should be available. But
for now it is hardly found. */
if (timeout != NULL)
TIMESPEC_TO_TIMEVAL (&tval, timeout);
retval = __select (nfds, readfds, writefds, exceptfds,
timeout != NULL ? &tval : NULL);
/* Change the result back. The remaining time must be made
available to the caller. */
if (timeout != NULL)
TIMEVAL_TO_TIMESPEC (&tval, timeout);
return retval;
}
weak_alias (__pselect, pselect)

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1995, 1996 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 modify
@ -30,7 +30,11 @@ __sbrk (ptrdiff_t increment)
{
void *oldbrk;
if (__curbrk == 0 && __brk (0) < 0)
/* Always update __curbrk from the kernel's brk value. That way two
separate instances of __brk and __sbrk can share the heap, returning
interleaved pieces of it. This happens when libc.so is loaded by
dlopen in a statically-linked program that already uses __brk. */
if (__brk (0) < 0)
return (void *) -1;
if (increment == 0)

View file

@ -321,6 +321,10 @@ extern int accept __P ((int __fd, __SOCKADDR_ARG __addr,
extern int shutdown __P ((int __fd, int __how));
/* Determine whether FILDES if the property identified by the value if
FDTYPE. */
extern int isfdtype __P ((int __fildes, int __fdtype));
__END_DECLS
#endif /* sys/socket.h */

View file

@ -136,6 +136,14 @@ DEFUN(__fpathconf, (fd, name), int fd AND int name)
#else
return -1;
#endif
case _PC_SOCK_MAXBUF:
#ifdef SOCK_MAXBUF
return SOCK_MAXBUF;
#else
errno = ENOSYS;
return -1;
#endif
}
errno = ENOSYS;

37
sysdeps/posix/isfdtype.c Normal file
View file

@ -0,0 +1,37 @@
/* isfdtype - Determine whether descriptor has given property.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <sys/stat.h>
#include <sys/socket.h>
int
isfdtype (int fildes, int fdtype)
{
struct stat st;
int result;
{
int save_error = errno;
result = fstat (fildes, &st);
errno = save_error;
}
return result ?: (st.st_mode & S_IFMT) == fdtype;
}

View file

@ -336,6 +336,104 @@ DEFUN(__sysconf, (name), int name)
return -1;
#endif
case _SC_PII:
#ifdef _POSIX_PII
return 1;
#else
return -1;
#endif
case _SC_PII_XTI:
#ifdef _POSIX_PII_XTI
return 1;
#else
return -1;
#endif
case _SC_PII_SOCKET:
#ifdef _POSIX_PII_SOCKET
return 1;
#else
return -1;
#endif
case _SC_PII_INTERNET:
#ifdef _POSIX_PII_INTERNET
return 1;
#else
return -1;
#endif
case _SC_PII_OSI:
#ifdef _POSIX_PII_OSI
return 1;
#else
return -1;
#endif
case _SC_POLL:
#ifdef _POSIX_POLL
return 1;
#else
return -1;
#endif
case _SC_SELECT:
#ifdef _POSIX_SELECT
return 1;
#else
return -1;
#endif
case _SC_UIO_MAXIOV:
#ifdef UIO_MAXIOV
return UIO_MAXIOV;
#else
return -1;
#endif
case _SC_PII_INTERNET_STREAM:
#ifdef _POSIX_PII_INTERNET_STREAM
return 1;
#else
return -1;
#endif
case _SC_PII_INTERNET_DGRAM:
#ifdef _POSIX_PII_INTERNET_DGRAM
return 1;
#else
return -1;
#endif
case _SC_PII_OSI_COTS:
#ifdef _POSIX_PII_OSI_COTS
return 1;
#else
return -1;
#endif
case _SC_PII_OSI_CLTS:
#ifdef _POSIX_PII_OSI_CLTS
return 1;
#else
return -1;
#endif
case _SC_PII_OSI_M:
#ifdef _POSIX_PII_OSI_M
return 1;
#else
return -1;
#endif
case _SC_T_IOV_MAX:
#ifdef _T_IOV_MAX
return _T_IOV_MAX;
#else
return -1;
#endif
case _SC_2_VERSION:
/* This is actually supposed to return the version
of the 1003.2 utilities on the system {POSIX2_VERSION}. */

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1995, 1996 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
@ -44,6 +44,7 @@ DEFUN(__fpathconf, (fd, name), int fd AND int name)
case _PC_NAME_MAX:
case _PC_PATH_MAX:
case _PC_PIPE_BUF:
case _PC_SOCK_MAXBUF:
case _PC_CHOWN_RESTRICTED:
case _PC_NO_TRUNC:
case _PC_VDISABLE:

29
sysdeps/stub/isfdtype.c Normal file
View file

@ -0,0 +1,29 @@
/* isfdtype - Determine whether descriptor has given property. Stub version.
Copyright (C) 1996 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
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <sys/stat.h>
int
isfdtype (int fildes, int fdtype)
{
errno = ENOSYS;
return -1;
}
stub_warning (isfdtype)

View file

@ -59,6 +59,20 @@ DEFUN(__sysconf, (name), int name)
case _SC_SHARED_MEMORY_OBJECTS:
case _SC_VERSION:
case _SC_PII:
case _SC_PII_XTI:
case _SC_PII_SOCKET:
case _SC_PII_OSI:
case _SC_POLL:
case _SC_SELECT:
case _SC_UIO_MAXIOV:
case _SC_PII_INTERNET_STREAM:
case _SC_PII_INTERNET_DGRAM:
case _SC_PII_OSI_COTS:
case _SC_PII_OSI_CLTS:
case _SC_PII_OSI_M:
case _SC_T_IOV_MAX:
case _SC_BC_BASE_MAX:
case _SC_BC_DIM_MAX:
case _SC_BC_SCALE_MAX:

View file

@ -47,6 +47,12 @@ Boston, MA 02111-1307, USA. */
/* Setting of memory protections is supported. */
#define _POSIX_MEMORY_PROTECTION 1
/* Implementation supports `poll' function. */
#define _POSIX_POLL 1
/* Implementation supports `select' and `pselect' functions. */
#define _POSIX_SELECT 1
/* Only root can change owner of file. */
#define _POSIX_CHOWN_RESTRICTED 1

View file

@ -36,7 +36,7 @@ wcrtomb (s, wc, ps)
char fake[1];
if (ps == NULL)
ps = internal;
ps = &internal;
/*************************************************************\
|* This is no complete implementation. While the multi-byte *|