aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog19
-rw-r--r--locale/programs/stringtrans.c2
-rw-r--r--posix/glob.h7
-rw-r--r--socket/sys/socket.h (renamed from sysdeps/unix/sysv/linux/sys/socket.h)18
-rw-r--r--stdio-common/printf-parse.h2
-rw-r--r--stdio-common/printf-prs.c7
-rw-r--r--stdio-common/vfprintf.c7
-rw-r--r--sysdeps/generic/machine-gmon.h2
-rw-r--r--sysdeps/generic/socketbits.h (renamed from sysdeps/generic/sys/socket.h)147
-rw-r--r--sysdeps/mach/hurd/connect.c5
-rw-r--r--sysdeps/mach/hurd/send.c5
-rw-r--r--sysdeps/unix/inet/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/linux/configure10
-rw-r--r--sysdeps/unix/sysv/linux/socketbits.h2
-rw-r--r--wcsmbs/btowc.c10
-rw-r--r--wcsmbs/mbrlen.c3
-rw-r--r--wcsmbs/mbrtowc.c111
-rw-r--r--wcsmbs/mbsinit.c18
-rw-r--r--wcsmbs/mbsrtowcs.c114
-rw-r--r--wcsmbs/wchar.h20
-rw-r--r--wcsmbs/wcrtomb.c62
-rw-r--r--wcsmbs/wcsrtombs.c95
-rw-r--r--wcsmbs/wctob.c9
23 files changed, 396 insertions, 283 deletions
diff --git a/ChangeLog b/ChangeLog
index a619747dbf..bd2e083ed4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
Tue Jul 9 09:37:55 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
+ * posix/glob.h (__glob_opendir_hook, __glob_readdir_hook,
+ __glob_closedir_hook): Remove decls.
+
+ * sysdeps/generic/machine-gmon.h: Declare mcount_internal.
+
+ * sysdeps/unix/inet/syscalls.list: Define __ names with weak aliases
+ for send and connect syscalls.
+
+ * socket/sys/socket.h: New file, taken from non-sysdep parts of
+ linux/sys/socket.h; break sysdeps parts out into socketbits.h.
+ Declare __ names for send and connect.
+ * sysdeps/generic/socketbits.h: New file.
+ * sysdeps/unix/sysv/linux/socketbits.h: New file.
+ * sysdeps/unix/sysv/linux/sys/socket.h: File removed.
+ * sysdeps/generic/sys/socket.h: File removed.
+
+ * sysdeps/mach/hurd/connect.c: Define __ name and weak alias.
+ * sysdeps/mach/hurd/send.c: Likewise.
+
* sysdeps/mach/libc-lock.h: New file.
* sysdeps/unix/readdir.c: Do locking.
* sysdeps/unix/seekdir.c: Likewise.
diff --git a/locale/programs/stringtrans.c b/locale/programs/stringtrans.c
index bff5aa41a2..10b04fa62e 100644
--- a/locale/programs/stringtrans.c
+++ b/locale/programs/stringtrans.c
@@ -1,6 +1,6 @@
/* 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>.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 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
diff --git a/posix/glob.h b/posix/glob.h
index 73fd018066..8607e9f04c 100644
--- a/posix/glob.h
+++ b/posix/glob.h
@@ -100,13 +100,6 @@ extern int glob __P ((const char *__pattern, int __flags,
extern void globfree __P ((glob_t *__pglob));
-#if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE)
-/* If they are not NULL, `glob' uses these functions to read directories. */
-extern __ptr_t (*__glob_opendir_hook) __P ((const char *__directory));
-extern const char *(*__glob_readdir_hook) __P ((__ptr_t __stream));
-extern void (*__glob_closedir_hook) __P ((__ptr_t __stream));
-#endif
-
#ifdef __cplusplus
}
#endif
diff --git a/sysdeps/unix/sysv/linux/sys/socket.h b/socket/sys/socket.h
index a680d5fb29..172c897af7 100644
--- a/sysdeps/unix/sysv/linux/sys/socket.h
+++ b/socket/sys/socket.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 92, 94, 95, 96 Free Software Foundation, Inc.
+/* Declarations of socket constants, types, and functions.
+Copyright (C) 1991, 92, 94, 95, 96 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
@@ -27,8 +28,11 @@ __BEGIN_DECLS
#include <stddef.h>
-/* Get Linux specific constants and data types. */
-#include <linux/socket.h>
+/* This operating system-specific header file defines the SOCK_*, PF_*,
+ AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr',
+ `struct msghdr', and `struct linger' types. */
+#include <socketbits.h>
+
/* This is the type we use for generic socket address arguments.
@@ -90,6 +94,8 @@ extern int getsockname __P ((int __fd, __SOCKADDR_ARG __addr,
For connectionless socket types, just set the default address to send to
and the only address from which to accept transmissions.
Return 0 on success, -1 for errors. */
+extern int __connect __P ((int __fd,
+ __CONST_SOCKADDR_ARG __addr, size_t __len));
extern int connect __P ((int __fd,
__CONST_SOCKADDR_ARG __addr, size_t __len));
@@ -100,6 +106,7 @@ extern int getpeername __P ((int __fd, __SOCKADDR_ARG __addr,
/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */
+extern int __send __P ((int __fd, __ptr_t __buf, size_t __n, int __flags));
extern int send __P ((int __fd, __ptr_t __buf, size_t __n, int __flags));
/* Read N bytes into BUF from socket FD.
@@ -164,6 +171,11 @@ extern int accept __P ((int __fd, __SOCKADDR_ARG __addr,
extern int shutdown __P ((int __fd, int __how));
+/* FDTYPE is S_IFSOCK or another S_IF* macro defined in <sys/stat.h>;
+ returns 1 if FD is open on an object of the indicated type, 0 if not,
+ or -1 for errors (setting errno). */
+extern int isfdtype __P ((int __fd, int __fdtype));
+
__END_DECLS
#endif /* sys/socket.h */
diff --git a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h
index a7960e6003..9a5cfbac7e 100644
--- a/stdio-common/printf-parse.h
+++ b/stdio-common/printf-parse.h
@@ -97,6 +97,8 @@ find_spec (const char *format, mbstate_t *ps)
{
int len;
+ /* Remove any hints of a wrong encoding. */
+ ps->count = 0;
if (isascii (*format) || (len = mbrlen (format, MB_CUR_MAX, ps)) <= 0)
++format;
else
diff --git a/stdio-common/printf-prs.c b/stdio-common/printf-prs.c
index d0756de7d4..a15be55c48 100644
--- a/stdio-common/printf-prs.c
+++ b/stdio-common/printf-prs.c
@@ -81,7 +81,6 @@ parse_printf_format (fmt, n, argtypes)
nargs = 0;
max_ref_arg = 0;
- mbstate = 0;
/* Search for format specifications. */
for (fmt = find_spec (fmt, &mbstate); *fmt != '\0'; fmt = spec.next_fmt)
@@ -90,14 +89,14 @@ parse_printf_format (fmt, n, argtypes)
nargs += parse_one_spec (fmt, nargs, &spec, &max_ref_arg, &mbstate);
/* If the width is determined by an argument this is an int. */
- if (spec.width_arg != -1 && spec.width_arg < n)
+ if (spec.width_arg != -1 && (size_t) spec.width_arg < n)
argtypes[spec.width_arg] = PA_INT;
/* If the precision is determined by an argument this is an int. */
- if (spec.prec_arg != -1 && spec.prec_arg < n)
+ if (spec.prec_arg != -1 && (size_t) spec.prec_arg < n)
argtypes[spec.prec_arg] = PA_INT;
- if (spec.data_arg < n)
+ if ((size_t) spec.data_arg < n)
switch (spec.ndata_args)
{
case 0: /* No arguments. */
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index 8031b99ae9..3fa53a62a8 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -735,16 +735,14 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
else \
{ \
const wchar_t *s2 = (const wchar_t *) string; \
- mbstate_t mbstate = 0; \
+ mbstate_t mbstate; \
\
- len = wcsrtombs (NULL, &s2, prec != -1 ? prec : UINT_MAX, \
- &mbstate); \
+ len = wcsrtombs (NULL, &s2, 0, &mbstate); \
if (len == (size_t) -1) \
/* Illegal wide-character string. */ \
return -1; \
\
s2 = (const wchar_t *) string; \
- mbstate = 0; \
string = alloca (len + 1); \
(void) wcsrtombs (string, &s2, prec != -1 ? prec : UINT_MAX, \
&mbstate); \
@@ -841,7 +839,6 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
/* Initialize local variables. */
done = 0;
grouping = (const char *) -1;
- mbstate = 0;
ap_save = ap;
nspecs_done = 0;
diff --git a/sysdeps/generic/machine-gmon.h b/sysdeps/generic/machine-gmon.h
index 80ee97fcc3..115962a601 100644
--- a/sysdeps/generic/machine-gmon.h
+++ b/sysdeps/generic/machine-gmon.h
@@ -38,6 +38,8 @@ void _mcount (void);
weak_alias (_mcount, mcount)
#endif
+static void mcount_internal (u_long frompc, u_long selfpc);
+
#define _MCOUNT_DECL(frompc, selfpc) \
static inline void mcount_internal (frompc, selfpc)
diff --git a/sysdeps/generic/sys/socket.h b/sysdeps/generic/socketbits.h
index 6ee3ebe52e..770f011ffb 100644
--- a/sysdeps/generic/sys/socket.h
+++ b/sysdeps/generic/socketbits.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991, 92, 94, 95, 96 Free Software Foundation, Inc.
+/* System-specific socket constants and types. Generic/4.3 BSD version.
+Copyright (C) 1991, 92, 94, 95, 96 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
@@ -16,9 +17,9 @@ License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
-#ifndef _SYS_SOCKET_H
+#ifndef _SOCKETBITS_H
-#define _SYS_SOCKET_H 1
+#define _SOCKETBITS_H 1
#include <features.h>
__BEGIN_DECLS
@@ -115,75 +116,6 @@ struct sockaddr
char sa_data[14]; /* Address data. */
};
-/* This is the type we use for generic socket address arguments.
-
- With GCC 2.7 and later, the funky union causes redeclarations or uses with
- any of the listed types to be allowed without complaint. */
-#if (!defined (__GNUC__) || __GNUC__ < 2 || \
- (__GNUC__ == 2 && __GNUC_MINOR__ < 7))
-#define __SOCKADDR_ARG struct sockaddr *
-#define __CONST_SOCKADDR_ARG __const struct sockaddr *
-#else
-/* Add more `struct sockaddr_AF' types here as necessary.
- These are all the ones I found on NetBSD and Linux. */
-#define __SOCKADDR_ALLTYPES \
- __SOCKADDR_ONETYPE (sockaddr) \
- __SOCKADDR_ONETYPE (sockaddr_at) \
- __SOCKADDR_ONETYPE (sockaddr_ax25) \
- __SOCKADDR_ONETYPE (sockaddr_dl) \
- __SOCKADDR_ONETYPE (sockaddr_eon) \
- __SOCKADDR_ONETYPE (sockaddr_in) \
- __SOCKADDR_ONETYPE (sockaddr_in6) \
- __SOCKADDR_ONETYPE (sockaddr_inarp) \
- __SOCKADDR_ONETYPE (sockaddr_ipx) \
- __SOCKADDR_ONETYPE (sockaddr_iso) \
- __SOCKADDR_ONETYPE (sockaddr_ns) \
- __SOCKADDR_ONETYPE (sockaddr_un) \
- __SOCKADDR_ONETYPE (sockaddr_x25)
-
-#define __SOCKADDR_ONETYPE(type) struct type *__##type##__;
-typedef union { __SOCKADDR_ALLTYPES
- } __SOCKADDR_ARG __attribute__ ((__transparent_union__));
-#undef __SOCKADDR_ONETYPE
-#define __SOCKADDR_ONETYPE(type) __const struct type *__##type##__;
-typedef union { __SOCKADDR_ALLTYPES
- } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
-#undef __SOCKADDR_ONETYPE
-#endif
-
-
-/* Create a new socket of type TYPE in domain DOMAIN, using
- protocol PROTOCOL. If PROTOCOL is zero, one is chosen automatically.
- Returns a file descriptor for the new socket, or -1 for errors. */
-extern int socket __P ((int __domain, enum __socket_type __type,
- int __protocol));
-
-/* Create two new sockets, of type TYPE in domain DOMAIN and using
- protocol PROTOCOL, which are connected to each other, and put file
- descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero,
- one will be chosen automatically. Returns 0 on success, -1 for errors. */
-extern int socketpair __P ((int __domain, enum __socket_type __type,
- int __protocol, int __fds[2]));
-
-/* Give the socket FD the local address ADDR (which is LEN bytes long). */
-extern int bind __P ((int __fd, __CONST_SOCKADDR_ARG __addr, size_t __len));
-
-/* Put the local address of FD into *ADDR and its length in *LEN. */
-extern int getsockname __P ((int __fd, __SOCKADDR_ARG __addr,
- size_t *__len));
-
-/* Open a connection on socket FD to peer at ADDR (which LEN bytes long).
- For connectionless socket types, just set the default address to send to
- and the only address from which to accept transmissions.
- Return 0 on success, -1 for errors. */
-extern int connect __P ((int __fd,
- __CONST_SOCKADDR_ARG __addr, size_t __len));
-
-/* Put the address of the peer connected to socket FD into *ADDR
- (which is *LEN bytes long), and its actual length into *LEN. */
-extern int getpeername __P ((int __fd, __SOCKADDR_ARG __addr,
- size_t *__len));
-
/* Bits in the FLAGS argument to `send', `recv', et al. */
enum
@@ -198,26 +130,6 @@ enum
MSG_DONTWAIT = 0x80, /* This message should be nonblocking. */
};
-/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */
-extern int send __P ((int __fd, __ptr_t __buf, size_t __n, int __flags));
-
-/* Read N bytes into BUF from socket FD.
- Returns the number read or -1 for errors. */
-extern int recv __P ((int __fd, __ptr_t __buf, size_t __n, int __flags));
-
-/* Send N bytes of BUF on socket FD to peer at address ADDR (which is
- ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */
-extern int sendto __P ((int __fd, __ptr_t __buf, size_t __n, int __flags,
- __CONST_SOCKADDR_ARG __addr, size_t __addr_len));
-
-/* Read N bytes into BUF through socket FD.
- If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of
- the sender, and store the actual size of the address in *ADDR_LEN.
- Returns the number of bytes read or -1 for errors. */
-extern int recvfrom __P ((int __fd, __ptr_t __buf, size_t __n, int __flags,
- __SOCKADDR_ARG __addr, size_t *__addr_len));
-
-
/* Structure describing messages sent by
`sendmsg' and received by `recvmsg'. */
@@ -233,15 +145,6 @@ struct msghdr
size_t msg_accrightslen; /* Length of access rights information. */
};
-/* Send a message described MESSAGE on socket FD.
- Returns the number of bytes sent, or -1 for errors. */
-extern int sendmsg __P ((int __fd, __const struct msghdr *__message,
- int __flags));
-
-/* Receive a message as described by MESSAGE from socket FD.
- Returns the number of bytes read or -1 for errors. */
-extern int recvmsg __P ((int __fd, struct msghdr *__message, int __flags));
-
/* Protocol number used to manipulate socket-level options
with `getsockopt' and `setsockopt'. */
@@ -285,46 +188,6 @@ struct linger
int l_linger; /* Time to linger. */
};
-
-/* Put the current value for socket FD's option OPTNAME at protocol level LEVEL
- into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's
- actual length. Returns 0 on success, -1 for errors. */
-extern int getsockopt __P ((int __fd, int __level, int __optname,
- __ptr_t __optval, size_t *__optlen));
-
-/* Set socket FD's option OPTNAME at protocol level LEVEL
- to *OPTVAL (which is OPTLEN bytes long).
- Returns 0 on success, -1 for errors. */
-extern int setsockopt __P ((int __fd, int __level, int __optname,
- __ptr_t __optval, size_t __optlen));
-
-
-/* Prepare to accept connections on socket FD.
- N connection requests will be queued before further requests are refused.
- Returns 0 on success, -1 for errors. */
-extern int listen __P ((int __fd, unsigned int __n));
-
-/* Await a connection on socket FD.
- When a connection arrives, open a new socket to communicate with it,
- set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting
- peer and *ADDR_LEN to the address's actual length, and return the
- new socket's descriptor, or -1 for errors. */
-extern int accept __P ((int __fd, __SOCKADDR_ARG __addr,
- size_t *__addr_len));
-
-/* Shut down all or part of the connection open on socket FD.
- HOW determines what to shut down:
- 0 = No more receptions;
- 1 = No more transmissions;
- 2 = No more receptions or transmissions.
- Returns 0 on success, -1 for errors. */
-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 */
+#endif /* socketbits.h */
diff --git a/sysdeps/mach/hurd/connect.c b/sysdeps/mach/hurd/connect.c
index 0ecf7369ed..f55a2ae591 100644
--- a/sysdeps/mach/hurd/connect.c
+++ b/sysdeps/mach/hurd/connect.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1994, 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
@@ -30,7 +30,7 @@ Cambridge, MA 02139, USA. */
and the only address from which to accept transmissions.
Return 0 on success, -1 for errors. */
int
-DEFUN(connect, (fd, addr, len),
+DEFUN(__connect, (fd, addr, len),
int fd AND const struct sockaddr_un *addr AND size_t len)
{
error_t err;
@@ -72,3 +72,4 @@ DEFUN(connect, (fd, addr, len),
return err ? __hurd_dfail (fd, err) : 0;
}
+weak_alias (__connect, connect)
diff --git a/sysdeps/mach/hurd/send.c b/sysdeps/mach/hurd/send.c
index 153ee93701..17fa66344f 100644
--- a/sysdeps/mach/hurd/send.c
+++ b/sysdeps/mach/hurd/send.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 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,7 +25,7 @@ Cambridge, MA 02139, USA. */
/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */
int
-DEFUN(send, (fd, buf, n, flags),
+DEFUN(__send, (fd, buf, n, flags),
int fd AND PTR buf AND size_t n AND int flags)
{
error_t err;
@@ -38,3 +38,4 @@ DEFUN(send, (fd, buf, n, flags),
return err ? __hurd_dfail (fd, err) : wrote;
}
+weak_alias (__send, send)
diff --git a/sysdeps/unix/inet/syscalls.list b/sysdeps/unix/inet/syscalls.list
index 3b6ac59990..661a8433f5 100644
--- a/sysdeps/unix/inet/syscalls.list
+++ b/sysdeps/unix/inet/syscalls.list
@@ -2,7 +2,7 @@
accept - accept 3 accept
bind - bind 3 bind
-connect - connect 3 connect
+__connect - connect 3 connect connect
gethostid - gethostid 0 gethostid
gethostname - gethostname 2 __gethostname gethostname
getpeername - getpeername 3 getpeername
@@ -12,7 +12,7 @@ listen - listen 2 listen
recv - recv 4 recv
recvfrom - recvfrom 6 recvfrom
recvmsg - recvmsg 3 recvmsg
-send - send 4 send
+__send - send 4 send send
sendmsg - sendmsg 3 sendmsg
sendto - sendto 6 sendto
sethostid - sethostid 1 sethostid
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index 7dbb0f9f33..fd72c092ad 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -8,7 +8,7 @@ test $stdio = default && stdio=libio
inhibit_glue=yes
echo $ac_n "checking installed Linux kernel header files""... $ac_c" 1>&6
-if eval "test \"`echo '$''{'libc_cv_linux'+set}'`\" = set"; then
+if eval "test \"`echo '$''{'libc_cv_linux201'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
@@ -24,17 +24,17 @@ eat flaming death
EOF
if { (eval echo configure:26: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
- libc_cv_linux='2.0.1 or later'
+ libc_cv_linux201='2.0.1 or later'
else
rm -rf conftest*
- libc_cv_linux='TOO OLD!'
+ libc_cv_linux201='TOO OLD!'
fi
rm -f conftest*
fi
-echo "$ac_t""$libc_cv_linux" 1>&6
-if test "$libc_cv_linux" != '2.0.1 or later'; then
+echo "$ac_t""$libc_cv_linux201" 1>&6
+if test "$libc_cv_linux201" != '2.0.1 or later'; then
{ echo "configure: error: GNU libc requires kernel header files from Linux 2.0.1
or later to be installed before configuring. The kernel header files
are found usually in /usr/include/asm and /usr/include/linux; make sure