aboutsummaryrefslogtreecommitdiff
path: root/stdio-common
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-07-09 23:17:59 +0000
committerRoland McGrath <roland@gnu.org>1996-07-09 23:17:59 +0000
commit07a4742f9ec2b0587c0d488bb65da2a6faa50fed (patch)
tree2b10e82cad4053bcbe27447bc3d444f6d2aef5e7 /stdio-common
parentc150923988933b5db75a974d4cc08cd7f7aaf3dc (diff)
downloadglibc-07a4742f9ec2b0587c0d488bb65da2a6faa50fed.tar
glibc-07a4742f9ec2b0587c0d488bb65da2a6faa50fed.tar.gz
glibc-07a4742f9ec2b0587c0d488bb65da2a6faa50fed.tar.bz2
glibc-07a4742f9ec2b0587c0d488bb65da2a6faa50fed.zip
* posix/glob.h (__glob_opendir_hook, __glob_readdir_hook,cvs/libc-960710
__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.
Diffstat (limited to 'stdio-common')
-rw-r--r--stdio-common/printf-parse.h2
-rw-r--r--stdio-common/printf-prs.c7
-rw-r--r--stdio-common/vfprintf.c7
3 files changed, 7 insertions, 9 deletions
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;