]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 25 Aug 2000 22:13:09 +0000 (22:13 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 25 Aug 2000 22:13:09 +0000 (22:13 +0000)
2000-08-25  Ulrich Drepper  <drepper@redhat.com>

* locales/i18n (default_missing): Change back to only U003F.

iconv/gconv_trans.c
iconv/loop.c
iconv/skeleton.c
localedata/ChangeLog
localedata/locales/i18n

index bb908176e602957367d4af7b8d35c225743e2c50..8c658b126f781363eed3079684c2b0c066153e65 100644 (file)
@@ -117,7 +117,7 @@ __gconv_transliterate (struct __gconv_step *step,
                                 (step, step_data, &toinptr,
                                  (const unsigned char *) &to_tbl[idx2 + len],
                                  (unsigned char **) outbufstart,
-                                 irreversible, 0, 0));
+                                 NULL, 0, 0));
              if (res != __GCONV_ILLEGAL_INPUT)
                {
                  /* If the conversion succeeds we have to increment the
@@ -200,7 +200,7 @@ __gconv_transliterate (struct __gconv_step *step,
                         (step, step_data, &toinptr,
                          (const unsigned char *) (default_missing + len),
                          (unsigned char **) outbufstart,
-                         irreversible, 0, 0));
+                         NULL, 0, 0));
 
       if (res != __GCONV_ILLEGAL_INPUT)
        {
index 9d168d84e9c77ad61497972adfa35694b5c0fe63..3a2779ed4af637a6882d9bccebd2f565ed0194da 100644 (file)
 
 /* To make it easier for the writers of the modules, we define a macro
    to test whether we have to ignore errors.  */
-#define ignore_errors_p() (flags & __GCONV_IGNORE_ERRORS)
+#define ignore_errors_p() \
+  (irreversible != NULL && (flags & __GCONV_IGNORE_ERRORS))
 
 
 /* Error handling with transliteration/transcription function use and
     struct __gconv_trans_data *trans;                                        \
                                                                              \
     result = __GCONV_ILLEGAL_INPUT;                                          \
+                                                                             \
+    if (irreversible == NULL)                                                \
+      /* This means we are in call from __gconv_transliterate.  In this              \
+        case we are not doing any error recovery outself.  */                \
+      break;                                                                 \
+                                                                             \
     /* First try the transliteration methods.  */                            \
     for (trans = step_data->__trans; trans != NULL; trans = trans->__next)    \
       {                                                                              \
     /* Next see whether we have to ignore the error.  If not, stop.  */              \
     if (! ignore_errors_p ())                                                \
       break;                                                                 \
-                                                                             \
+                                                                             \
     /* When we come here it means we ignore the character.  */               \
     ++*irreversible;                                                         \
     inptr += Incr;                                                           \
index e203f0fddba98f752492d485f6d977e64ebf23c1..76189b56a93128c8ca1dd93442ef199321168e43 100644 (file)
@@ -320,6 +320,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
       /* This variable is used to count the number of characters we
         actually converted.  */
       size_t lirreversible = 0;
+      size_t *lirreversiblep = irreversible ? &lirreversible : NULL;
 #if defined _STRING_ARCH_unaligned \
     || MIN_NEEDED_FROM == 1 || MAX_NEEDED_FROM % MIN_NEEDED_FROM != 0 \
     || MIN_NEEDED_TO == 1 || MAX_NEEDED_TO % MIN_NEEDED_TO != 0
@@ -350,7 +351,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
 # if MAX_NEEDED_FROM > 1
          if (MAX_NEEDED_TO == 1 || FROM_DIRECTION)
            status = SINGLE(FROM_LOOP) (step, data, inptrp, inend, &outbuf,
-                                       outend, &lirreversible
+                                       outend, lirreversiblep
                                        EXTRA_LOOP_ARGS);
 # endif
 # if MAX_NEEDED_FROM > 1 && MAX_NEEDED_TO > 1 && !ONE_DIRECTION
@@ -358,7 +359,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
 # endif
 # if MAX_NEEDED_TO > 1 && !ONE_DIRECTION
            status = SINGLE(TO_LOOP) (step, data, inptrp, inend, &outbuf,
-                                     outend, &lirreversible EXTRA_LOOP_ARGS);
+                                     outend, lirreversiblep EXTRA_LOOP_ARGS);
 # endif
 
          if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK)
@@ -402,11 +403,11 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
              if (FROM_DIRECTION)
                /* Run the conversion loop.  */
                status = FROM_LOOP (step, data, inptrp, inend, &outbuf, outend,
-                                   &lirreversible EXTRA_LOOP_ARGS);
+                                   lirreversiblep EXTRA_LOOP_ARGS);
              else
                /* Run the conversion loop.  */
                status = TO_LOOP (step, data, inptrp, inend, &outbuf, outend,
-                                 &lirreversible EXTRA_LOOP_ARGS);
+                                 lirreversiblep EXTRA_LOOP_ARGS);
            }
 #if !defined _STRING_ARCH_unaligned \
     && MIN_NEEDED_FROM != 1 && MAX_NEEDED_FROM % MIN_NEEDED_FROM == 0 \
@@ -417,13 +418,13 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
                /* Run the conversion loop.  */
                status = GEN_unaligned (FROM_LOOP) (step, data, inptrp, inend,
                                                    &outbuf, outend,
-                                                   &lirreversible
+                                                   lirreversiblep
                                                    EXTRA_LOOP_ARGS);
              else
                /* Run the conversion loop.  */
                status = GEN_unaligned (TO_LOOP) (step, data, inptrp, inend,
                                                  &outbuf, outend,
-                                                 &lirreversible
+                                                 lirreversiblep
                                                  EXTRA_LOOP_ARGS);
            }
 #endif
@@ -498,7 +499,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
                                             (const unsigned char *) inend,
                                             (unsigned char **) &outbuf,
                                             (unsigned char *) outerr,
-                                            &lirreversible EXTRA_LOOP_ARGS);
+                                            lirreversiblep EXTRA_LOOP_ARGS);
                      else
                        /* Run the conversion loop.  */
                        nstatus = TO_LOOP (step, data,
@@ -506,7 +507,7 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
                                           (const unsigned char *) inend,
                                           (unsigned char **) &outbuf,
                                           (unsigned char *) outerr,
-                                          &lirreversible EXTRA_LOOP_ARGS);
+                                          lirreversiblep EXTRA_LOOP_ARGS);
 
                      /* We must run out of output buffer space in this
                         rerun.  */
index 9941da6729f9e64b860911713d9804fe049c509a..a851e490870e220a24fb62fcd4ad3d1fb92417a0 100644 (file)
@@ -1,3 +1,7 @@
+2000-08-25  Ulrich Drepper  <drepper@redhat.com>
+
+       * locales/i18n (default_missing): Change back to only U003F.
+
 2000-08-24  Andreas Jaeger  <aj@suse.de>
 
        * Makefile (generated): Add some .out files.
index 30d2ae4159073d058926c1f48a7e781de6663b0c..965eb6b9127f50a3708e1f3701bd3fa021ff57be 100644 (file)
@@ -805,7 +805,7 @@ translit_start
 % RIGHT DOUBLE QUOTATION MARK.
 <U201D> <U0022>
 
-default_missing <UFFFD>;<U003F>
+default_missing <U003F>
 
 translit_end