summary refs log tree commit diff
path: root/stdio-common/vfprintf.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-06-21 13:38:44 +0000
committerUlrich Drepper <drepper@redhat.com>1999-06-21 13:38:44 +0000
commit655c0697188085dea9377402e5fe9eadbe591a4f (patch)
tree2980da2361a28d97051cc3f69a8e8e9733df2dd8 /stdio-common/vfprintf.c
parent8811906f25f4c4592419a2073f785edf0b7061de (diff)
downloadglibc-655c0697188085dea9377402e5fe9eadbe591a4f.tar.gz
glibc-655c0697188085dea9377402e5fe9eadbe591a4f.tar.xz
glibc-655c0697188085dea9377402e5fe9eadbe591a4f.zip
Update.
1999-06-18  Thorsten Kukuk  <kukuk@suse.de>

	* sysdeps/alpha/atomicity.h: Correct counting of subsections.

1999-06-17  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* stdlib/tst-strtoll.c: Avoid warning about huge constant.

1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* stdio-common/vfprintf.c (group_member): Make parameters and
	return types pointers to CHAR_T instead of UCHAR_T.
	(vfprintf): Change type of work_buffer, workend and string to
	CHAR_T pointer/array.
	(process_arg, process_string_arg): Adjust/remove casts.  Add
	missing use of L_ macro.
	(printf_unknown): Add missing uses of L_ macro.

1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* wcsmbs/wcschrnul.c: Explicitly cast return value to avoid
	warning.

1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* libio/wgenops.c (__wuflow): Fix use of WEOF vs. EOF.  Call
	_IO_switch_to_wget_mode instead of _IO_switch_to_get_mode.
	(__wunderflow): Likewise.
	(_IO_switch_to_wget_mode): Likewise.
	(_IO_init_wmarker): Likewise.

	* libio/wfileops.c (_IO_wfile_seekoff): Call
	_IO_switch_to_wget_mode, not _IO_switch_to_get_mode.
	(_IO_wfile_jumps): Fix pbackfail entry.

	* libio/iosetvbuf.c (_IO_setvbuf): Only call wide char setbuf
	function if the stream is currently unoriented.

1999-06-19  Zack Weinberg  <zack@rabi.columbia.edu>

	* wcsmbs/wchar.h: Define __need___va_list before including stdarg.h.
	Wrap all wide stream functions with #ifdef __USE_ISOC9X.  Use
	__gnuc_va_list in v*w(printf|scanf) prototypes.

1999-06-20  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* libio/oldiopopen.c (_IO_old_proc_open): Apply change from
	1999-03-29 to iopopen also here.
	Reported by Richard Braakman <dark@xs4all.nl>.

1999-06-20  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* include/features.h: Use __GNUC_PREREQ.
	* sysdeps/i386/fpu/bits/mathinline.h: Likewise

1999-06-19  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* stdio-common/vfscanf.c (ungetc, inchar) [COMPILE_WPRINTF]:
	Change EOF to WEOF and remove cast.
	(UNGETC): Remove macro.
	(_IO_vfwscanf): Change isspace to ISSPACE and UNGETC to ungetc.
	* stdio-common/printf-parse.h (find_spec) [!COMPILE_WPRINTF]:
	Change ISASCII to isascii and MBRLEN to mbrlen.
	(parse_one_spec): Compare info.spec always against wchar_t
	values.
	* stdio-common/vfprintf.c: Remove unused ISASCII and MBRLEN.
	(_itoa, _itoa_word) [COMPILE_WRPINTF]: Don't cast second argument.
	(NOT_IN_JUMP_RANGE, CHAR_CLASS): Change (int) to (INT_T), use L_.

1999-06-19  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* libio/Makefile (shared-only-routines): Add oldiofgetpos,
	oldiofgetpos64, oldiofsetpos and oldiofsetpos64.
	(routines): Include oldiofgetpos, oldiofgetpos64, oldiofsetpos and
	oldiofsetpos64 only if doing versioning.
Diffstat (limited to 'stdio-common/vfprintf.c')
-rw-r--r--stdio-common/vfprintf.c86
1 files changed, 40 insertions, 46 deletions
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index fe145d6a3d..a65953d305 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -70,8 +70,6 @@
 #  define INT_T		int
 #  define L_(Str)	Str
 #  define ISDIGIT(Ch)	isdigit (Ch)
-#  define ISASCII(Ch)	isascii (Ch)
-#  define MBRLEN(Cp, L, St) mbrlen (Cp, L, St)
 
 #  define PUT(F, S, N)	_IO_sputn ((F), (S), (N))
 #  define PAD(Padchar) \
@@ -89,8 +87,6 @@
 #  define INT_T		wint_t
 #  define L_(Str)	L##Str
 #  define ISDIGIT(Ch)	iswdigit (Ch)
-#  define ISASCII(Ch)	(((unsigned int) (Ch) & ~0x7f) == 0)
-#  define MBRLEN(Cp, L, St) wcslen ((const wchar_t *) (Cp))
 
 #  define PUT(F, S, N)	_IO_sputn ((F), (S), (N))
 #  define PAD(Padchar) \
@@ -99,9 +95,8 @@
 #  define PUTC(C, F)	_IO_putwc_unlocked (C, F)
 #  define ORIENT	if (_IO_fwide (s, 1) != 1) return -1
 
-#  define _itoa(Val, Buf, Base, Case) _itowa (Val, (wchar_t *) Buf, Base, Case)
-#  define _itoa_word(Val, Buf, Base, Case) _itowa_word (Val, (wchar_t *) Buf, \
-							Base, Case)
+#  define _itoa(Val, Buf, Base, Case) _itowa (Val, Buf, Base, Case)
+#  define _itoa_word(Val, Buf, Base, Case) _itowa_word (Val, Buf, Base, Case)
 #  undef EOF
 #  define EOF WEOF
 # endif
@@ -199,8 +194,7 @@ static int printf_unknown __P ((FILE *, const struct printf_info *,
 				const void *const *));
 
 /* Group digits of number string.  */
-static UCHAR_T *group_number __P ((UCHAR_T *, UCHAR_T *, const char *,
-				   wchar_t))
+static CHAR_T *group_number __P ((CHAR_T *, CHAR_T *, const char *, wchar_t))
      internal_function;
 
 
@@ -227,8 +221,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
   const UCHAR_T *end_of_spec;
 
   /* Buffer intermediate results.  */
-  UCHAR_T work_buffer[1000];
-  UCHAR_T *workend;
+  CHAR_T work_buffer[1000];
+  CHAR_T *workend;
 
   /* State for restartable multibyte character handling functions.  */
 #ifndef COMPILE_WPRINTF
@@ -275,8 +269,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
     /* 'x' */ 18,            0, /* 'z' */ 13
   };
 
-#define NOT_IN_JUMP_RANGE(Ch) ((Ch) < ' ' || (Ch) > 'z')
-#define CHAR_CLASS(Ch) (jump_table[(int) (Ch) - ' '])
+#define NOT_IN_JUMP_RANGE(Ch) ((Ch) < L_(' ') || (Ch) > L_('z'))
+#define CHAR_CLASS(Ch) (jump_table[(INT_T) (Ch) - L_(' ')])
 #define JUMP(ChExpr, table)						      \
       do								      \
 	{								      \
@@ -593,8 +587,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	  else								      \
 	    {								      \
 	      /* Put the number in WORK.  */				      \
-	      string = (UCHAR_T *) _itoa (number.longlong, workend + 1, base, \
-					  spec == L_('X'));		      \
+	      string = _itoa (number.longlong, workend + 1, base,	      \
+			      spec == L_('X'));				      \
 	      string -= 1;						      \
 	      if (group && grouping)					      \
 		string = group_number (string, workend, grouping,	      \
@@ -647,8 +641,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	  else								      \
 	    {								      \
 	      /* Put the number in WORK.  */				      \
-	      string = (UCHAR_T *) _itoa_word (number.word, workend + 1,      \
-					       base, spec == L_('X'));	      \
+	      string = _itoa_word (number.word, workend + 1, base,	      \
+				   spec == L_('X'));			      \
 	      string -= 1;						      \
 	      if (group && grouping)					      \
 		string = group_number (string, workend, grouping,	      \
@@ -858,13 +852,13 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	    is_negative = 0;						      \
 	    alt = 1;							      \
 	    group = 0;							      \
-	    spec = 'x';							      \
+	    spec = L_('x');						      \
 	    goto LABEL (number);					      \
 	  }								      \
 	else								      \
 	  {								      \
 	    /* Write "(nil)" for a nil pointer.  */			      \
-	    string = (UCHAR_T *) L_("(nil)");				      \
+	    string = (CHAR_T *) L_("(nil)");	 			      \
 	    /* Make sure the full string "(nil)" is printed.  */	      \
 	    if (prec < 5)						      \
 	      prec = 5;							      \
@@ -901,8 +895,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
     LABEL (form_strerror):						      \
       /* Print description of error ERRNO.  */				      \
       string =								      \
-	(UCHAR_T *) __strerror_r (save_errno, (char *) work_buffer,	      \
-				  sizeof work_buffer);			      \
+	(CHAR_T *) __strerror_r (save_errno, (char *) work_buffer,	      \
+				 sizeof work_buffer);			      \
       is_long = 0;		/* This is no wide-char string.  */	      \
       goto LABEL (print_string)
 
@@ -945,9 +939,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	/* The string argument could in fact be `char *' or `wchar_t *'.      \
 	   But this should not make a difference here.  */		      \
 	if (fspec == NULL)						      \
-	  string = (UCHAR_T *) va_arg (ap, const wchar_t *);		      \
+	  string = (CHAR_T *) va_arg (ap, const wchar_t *);		      \
 	else								      \
-	  string = (UCHAR_T *) args_value[fspec->data_arg].pa_wstring;	      \
+	  string = (CHAR_T *) args_value[fspec->data_arg].pa_wstring;	      \
 									      \
 	/* Entry point for printing other strings.  */			      \
       LABEL (print_string):						      \
@@ -958,12 +952,12 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	    if (prec == -1						      \
 		|| prec >= (int) (sizeof (null) / sizeof (null[0])) - 1)      \
 	      {								      \
-		string = (UCHAR_T *) null;				      \
+		string = (CHAR_T *) null;				      \
 		len = (sizeof (null) / sizeof (null[0])) - 1;		      \
 	      }								      \
 	    else							      \
 	      {								      \
-		string = (UCHAR_T *) L"";				      \
+		string = (CHAR_T *) L"";				      \
 		len = 0;						      \
 	      }								      \
 	  }								      \
@@ -978,10 +972,10 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 									      \
 	    /* Allocate dynamically an array which definitely is long	      \
 	       enough for the wide character version.  */		      \
-	    string = (UCHAR_T *) alloca ((len + 1) * sizeof (wchar_t));	      \
+	    string = (CHAR_T *) alloca ((len + 1) * sizeof (wchar_t));	      \
 									      \
 	    memset (&mbstate, '\0', sizeof (mbstate_t));		      \
-	    len = __mbsrtowcs ((wchar_t *) string, &mbs, len + 1, &mbstate);  \
+	    len = __mbsrtowcs (string, &mbs, len + 1, &mbstate);	      \
 	    if (len == (size_t) -1)					      \
 	      {								      \
 		/* Illegal multibyte character.  */			      \
@@ -994,9 +988,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	    if (prec != -1)						      \
 	      /* Search for the end of the string, but don't search past      \
 		 the length specified by the precision.  */		      \
-	      len = __wcsnlen ((wchar_t *) string, prec);		      \
+	      len = __wcsnlen (string, prec);				      \
 	    else							      \
-	      len = __wcslen ((wchar_t *) string);			      \
+	      len = __wcslen (string);					      \
 	  }								      \
 									      \
 	if ((width -= len) < 0)						      \
@@ -1199,7 +1193,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
       } number;
       int base;
       union printf_arg the_arg;
-      UCHAR_T *string;	/* Pointer to argument string.  */
+      CHAR_T *string;	/* Pointer to argument string.  */
       int alt = 0;	/* Alternate format.  */
       int space = 0;	/* Use space prefix if no sign is needed.  */
       int left = 0;	/* Left-justify output.  */
@@ -1293,7 +1287,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	if (width + 32 >= sizeof (work_buffer) / sizeof (work_buffer[0]))
 	  /* We have to use a special buffer.  The "32" is just a safe
 	     bet for all the output which is not counted in the width.  */
-	  workend = ((UCHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
+	  workend = ((CHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
 		     + (width + 31));
       }
       JUMP (*f, step1_jumps);
@@ -1305,7 +1299,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
       if (width + 32 >= sizeof (work_buffer) / sizeof (work_buffer[0]))
 	/* We have to use a special buffer.  The "32" is just a safe
 	   bet for all the output which is not counted in the width.  */
-	workend = ((UCHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
+	workend = ((CHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
 		   + (width + 31));
       if (*f == L_('$'))
 	/* Oh, oh.  The argument comes from a positional parameter.  */
@@ -1579,7 +1573,7 @@ do_positional:
 	} number;
 	int base;
 	union printf_arg the_arg;
-	UCHAR_T *string;	/* Pointer to argument string.  */
+	CHAR_T *string;		/* Pointer to argument string.  */
 
 	/* Fill variables from values in struct.  */
 	int alt = specs[nspecs_done].info.alt;
@@ -1628,9 +1622,9 @@ do_positional:
 	  }
 
 	/* Maybe the buffer is too small.  */
-	if (MAX (prec, width) + 32 > sizeof (work_buffer) / sizeof (UCHAR_T))
-	  workend = ((UCHAR_T *) alloca ((MAX (prec, width) + 32)
-					 * sizeof (UCHAR_T))
+	if (MAX (prec, width) + 32 > sizeof (work_buffer) / sizeof (CHAR_T))
+	  workend = ((CHAR_T *) alloca ((MAX (prec, width) + 32)
+					* sizeof (CHAR_T))
 		     + (MAX (prec, width) + 31));
 
 	/* Process format specifiers.  */
@@ -1707,8 +1701,8 @@ printf_unknown (FILE *s, const struct printf_info *info,
 {
   int done = 0;
   CHAR_T work_buffer[MAX (info->width, info->spec) + 32];
-  CHAR_T *const workend = &work_buffer[sizeof (work_buffer) / sizeof (CHAR_T)
-				      - 1];
+  CHAR_T *const workend
+    = &work_buffer[sizeof (work_buffer) / sizeof (CHAR_T) - 1];
   register CHAR_T *w;
 
   outchar (L_('%'));
@@ -1723,7 +1717,7 @@ printf_unknown (FILE *s, const struct printf_info *info,
     outchar (L_(' '));
   if (info->left)
     outchar (L_('-'));
-  if (info->pad == '0')
+  if (info->pad == L_('0'))
     outchar (L_('0'));
 
   if (info->width != 0)
@@ -1735,7 +1729,7 @@ printf_unknown (FILE *s, const struct printf_info *info,
 
   if (info->prec != -1)
     {
-      outchar ('.');
+      outchar (L_('.'));
       w = _itoa_word (info->prec, workend + 1, 10, 0);
       while (w <= workend)
 	outchar (*w++);
@@ -1750,13 +1744,13 @@ printf_unknown (FILE *s, const struct printf_info *info,
 
 /* Group the digits according to the grouping rules of the current locale.
    The interpretation of GROUPING is as in `struct lconv' from <locale.h>.  */
-static UCHAR_T *
+static CHAR_T *
 internal_function
-group_number (UCHAR_T *w, UCHAR_T *rear_ptr, const char *grouping,
+group_number (CHAR_T *w, CHAR_T *rear_ptr, const char *grouping,
 	      wchar_t thousands_sep)
 {
   int len;
-  UCHAR_T *src, *s;
+  CHAR_T *src, *s;
 
   /* We treat all negative values like CHAR_MAX.  */
 
@@ -1767,9 +1761,9 @@ group_number (UCHAR_T *w, UCHAR_T *rear_ptr, const char *grouping,
   len = *grouping;
 
   /* Copy existing string so that nothing gets overwritten.  */
-  src = (UCHAR_T *) alloca ((rear_ptr - w) * sizeof (UCHAR_T));
-  s = (UCHAR_T *) __mempcpy (src, w + 1,
-			     (rear_ptr - w) * sizeof (UCHAR_T)) - 1;
+  src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T));
+  s = (CHAR_T *) __mempcpy (src, w + 1,
+			    (rear_ptr - w) * sizeof (CHAR_T)) - 1;
   w = rear_ptr;
 
   /* Process all characters in the string.  */