summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--iconv/gconv_int.h6
-rw-r--r--iconv/loop.c52
-rw-r--r--iconv/skeleton.c4
4 files changed, 13 insertions, 56 deletions
diff --git a/ChangeLog b/ChangeLog
index 100d2d86aa..15512993ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2000-01-18  Ulrich Drepper  <drepper@cygnus.com>
+
+	* iconv/loop.c (COUNT_CONVERTED): Remove macro, comment, and all uses.
+	Remove done variable and all uses.
+	* iconv/skeleton.c: Update comment for *written modification.
+	* iconv/gconv_int.h (__gconv): Update comment.
+
 2000-01-18  Bruno Haible  <haible@ilog.fr>
 
 	* posix/fnmatch.c (ISWCTYPE): New macro.
diff --git a/iconv/gconv_int.h b/iconv/gconv_int.h
index 794f41f86b..da9e012794 100644
--- a/iconv/gconv_int.h
+++ b/iconv/gconv_int.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -111,8 +111,8 @@ extern int __gconv_close (__gconv_t cd)
 
 /* Transform at most *INBYTESLEFT bytes from buffer starting at *INBUF
    according to rules described by CD and place up to *OUTBYTESLEFT
-   bytes in buffer starting at *OUTBUF.  Return number of written
-   characters in *CONVERTED if this pointer is not null.  */
+   bytes in buffer starting at *OUTBUF.  Return number of non-identical
+   conversions in *CONVERTED if this pointer is not null.  */
 extern int __gconv (__gconv_t __cd, const unsigned char **__inbuf,
 		    const unsigned char *inbufend, unsigned char **__outbuf,
 		    unsigned char *outbufend, size_t *converted)
diff --git a/iconv/loop.c b/iconv/loop.c
index ada4f0a755..5c5948f46e 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -1,5 +1,5 @@
 /* Conversion loop frame work.
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -36,11 +36,6 @@
 			the name is `loop' but this prevents the use
 			of multiple functions in the same file.
 
-     COUNT_CONVERTED	optional macro which is used to count the actual
-			number of characters converted.  For some conversion
-			it is easy to compute the value afterwards, but for
-			others explicit counting is cheaper.
-
      BODY		this is supposed to expand to the body of the loop.
 			The user must provide this.
 
@@ -87,30 +82,6 @@
 # error "Definition of BODY missing for function" LOOPFCT
 #endif
 
-/* We can calculate the number of converted characters easily if one
-   of the character sets has a fixed width.  */
-#ifndef COUNT_CONVERTED
-# if MIN_NEEDED_INPUT == MAX_NEEDED_INPUT
-#  if MIN_NEEDED_OUTPUT == MAX_NEEDED_OUTPUT
-/* Decide whether one of the charsets has size 1.  */
-#   if MIN_NEEDED_INPUT == 1
-#    define COUNT_CONVERTED	(inptr - *inptrp)
-#   elif MIN_NEEDED_OUTPUT == 1
-#    define COUNT_CONVERTED	(outptr - *outptrp)
-#   else
-/* Else we should see whether one of the two numbers is a power of 2.  */
-#    define COUNT_CONVERTED \
-  ((MIN_NEEDED_INPUT & (-MIN_NEEDED_INPUT)) == MIN_NEEDED_INPUT		      \
-   ? (inptr - *inptrp) : (outptr - *outptrp))
-#   endif
-#  else
-#   define COUNT_CONVERTED	((inptr - *inptrp) / MIN_NEEDED_INPUT)
-#  endif
-# elif MIN_NEEDED_OUTPUT == MAX_NEEDED_OUTPUT
-#  define COUNT_CONVERTED	((outptr - *outptrp) / MIN_NEEDED_OUTPUT)
-# endif
-#endif
-
 
 /* If no arguments have to passed to the loop function define the macro
    as empty.  */
@@ -128,9 +99,6 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
   int result = __GCONV_OK;
   const unsigned char *inptr = *inptrp;
   unsigned char *outptr = *outptrp;
-#ifndef COUNT_CONVERTED
-  size_t done = 0;
-#endif
 
   /* We run one loop where we avoid checks for underflow/overflow of the
      buffers to speed up the conversion a bit.  */
@@ -151,11 +119,6 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
 	 vary in size), GCONV_ILLEGAL_INPUT, or GCONV_FULL_OUTPUT (if the
 	 output characters vary in size.  */
       BODY
-
-      /* If necessary count the successful conversion.  */
-#ifndef COUNT_CONVERTED
-      ++done;
-#endif
     }
 
   if (result == __GCONV_OK)
@@ -205,22 +168,10 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
 	     input characters vary in size), GCONV_ILLEGAL_INPUT, or
 	     GCONV_FULL_OUTPUT (if the output characters vary in size).  */
 	  BODY
-
-	  /* If necessary count the successful conversion.  */
-# ifndef COUNT_CONVERTED
-	  ++done;
-# endif
 	}
 #endif	/* Input and output charset are not both fixed width.  */
     }
 
-  /* Add the number of characters we actually converted.  */
-#ifdef COUNT_CONVERTED
-  *converted += COUNT_CONVERTED;
-#else
-  *converted += done;
-#endif
-
   /* Update the pointers pointed to by the parameters.  */
   *inptrp = inptr;
   *outptrp = outptr;
@@ -239,7 +190,6 @@ LOOPFCT (const unsigned char **inptrp, const unsigned char *inend,
 #undef MIN_NEEDED_OUTPUT
 #undef MAX_NEEDED_OUTPUT
 #undef LOOPFCT
-#undef COUNT_CONVERTED
 #undef BODY
 #undef LOOPFCT
 #undef EXTRA_LOOP_DECLS
diff --git a/iconv/skeleton.c b/iconv/skeleton.c
index 02d6118b62..da157588b9 100644
--- a/iconv/skeleton.c
+++ b/iconv/skeleton.c
@@ -1,5 +1,5 @@
 /* Skeleton for a conversion module.
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -264,7 +264,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
 	      /* Store information about how many bytes are available.  */
 	      data->__outbuf = outbuf;
 
-	      /* Remember how many characters we converted.  */
+	      /* Remember how many non-identical characters we converted.  */
 	      *written += converted;
 
 	      break;