Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 25 Nov 1999 19:27:07 +0000 (19:27 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 25 Nov 1999 19:27:07 +0000 (19:27 +0000)
1999-11-25  H.J. Lu  <hjl@gnu.org>

* stdlib/exit.c (exit): Run funtions only if
__exit_funcs->idx > 0.

1999-11-25  Ulrich Drepper  <drepper@cygnus.com>

* manual/charset.texi (iconv Examples): Add iconv call to flush
state.  Reported by Andrew Clausen <clausen@alphalink.com.au>.

1999-11-25  Andreas Jaeger  <aj@suse.de>

* manual/install.texi (Running make install): Better describe
update from libc5.
Patch by Michael Deutschmann <michael@talamasca.wkpowerlink.com>.

1999-11-25  Andreas Jaeger  <aj@suse.de>

* include/sys/mman.h: Remove K&R compatibility.

1999-11-15  Andreas Jaeger  <aj@suse.de>

* misc/sys/mman.h: Use __REDIRECT for mmap, correct prototype to
use __off64_t.

1999-11-25  Ulrich Drepper  <drepper@cygnus.com>

* iconv/iconv_prog.c (process_block): For stateful charsets write
out byte sequence to get to initial state at the end of the file.

which was reported to not work (which proofed to be wrong).

ChangeLog
iconv/iconv_prog.c
include/sys/mman.h
localedata/ChangeLog
localedata/Makefile
manual/charset.texi
manual/install.texi
misc/sys/mman.h
stdlib/exit.c

index 2253407..0bd8ce7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+1999-11-25  H.J. Lu  <hjl@gnu.org>
+
+       * stdlib/exit.c (exit): Run funtions only if
+       __exit_funcs->idx > 0.
+
+1999-11-25  Ulrich Drepper  <drepper@cygnus.com>
+
+       * manual/charset.texi (iconv Examples): Add iconv call to flush
+       state.  Reported by Andrew Clausen <clausen@alphalink.com.au>.
+
+1999-11-25  Andreas Jaeger  <aj@suse.de>
+
+       * manual/install.texi (Running make install): Better describe
+       update from libc5.
+       Patch by Michael Deutschmann <michael@talamasca.wkpowerlink.com>.
+
+1999-11-25  Andreas Jaeger  <aj@suse.de>
+
+       * include/sys/mman.h: Remove K&R compatibility.
+
+1999-11-15  Andreas Jaeger  <aj@suse.de>
+
+       * misc/sys/mman.h: Use __REDIRECT for mmap, correct prototype to
+       use __off64_t.
+
+1999-11-25  Ulrich Drepper  <drepper@cygnus.com>
+
+       * iconv/iconv_prog.c (process_block): For stateful charsets write
+       out byte sequence to get to initial state at the end of the file.
+
 1999-11-25  Andreas Schwab  <schwab@suse.de>
 
        * Makeconfig: Include sys-dirs and sys-sorted earlier.
@@ -21,8 +51,7 @@
        * sysdeps/unix/sysv/linux/net/if_arp.h (ARPHRD_IEEE802_TR): Added.
 
        * string/stratcliff.c: Add one more strchr test for something
-       which was reported to not work
-       (which proofed to be wrong).
+       which was reported to not work (which proofed to be wrong).
 
        * iconv/skeleton.c: It's __is_last, not is_last.
 
index efa9e24..0144ac4 100644 (file)
@@ -338,8 +338,32 @@ conversion stopped due to problem in writing the output"));
        }
 
       if (n != (size_t) -1)
-       /* Everything is processed.  */
-       break;
+       {
+         /* All the input test is processed.  For state-dependent
+             character sets we have to flush the state now.  */
+         outptr = outbuf;
+         outlen = OUTBUF_SIZE;
+         n = iconv (cd, NULL, NULL, &outptr, &outlen);
+
+         if (outptr != outbuf)
+           {
+             /* We have something to write out.  */
+             int errno_save = errno;
+
+             if (fwrite (outbuf, 1, outptr - outbuf, output) < outptr - outbuf
+                 || ferror (output))
+               {
+                 /* Error occurred while printing the result.  */
+                 error (0, 0, _("\
+conversion stopped due to problem in writing the output"));
+                 return -1;
+               }
+
+             errno = errno_save;
+           }
+
+         break;
+       }
 
       if (errno != E2BIG)
        {
index a76c236..14e7578 100644 (file)
@@ -3,13 +3,13 @@
 
 /* Now define the internal interfaces.  */
 extern void *__mmap (void *__addr, size_t __len, int __prot,
-                    int __flags, int __fd, __off_t __offset) __THROW;
+                    int __flags, int __fd, __off_t __offset);
 extern void *__mmap64 (void *__addr, size_t __len, int __prot,
-                      int __flags, int __fd, __off64_t __offset) __THROW;
-extern int __munmap (void *__addr, size_t __len) __THROW;
-extern int __mprotect (void *__addr, size_t __len, int __prot) __THROW;
+                      int __flags, int __fd, __off64_t __offset);
+extern int __munmap (void *__addr, size_t __len);
+extern int __mprotect (void *__addr, size_t __len, int __prot);
 
 /* This one is Linux specific.  */
 extern void *__mremap (void *__addr, size_t __old_len,
-                      size_t __new_len, int __may_move) __THROW;
+                      size_t __new_len, int __may_move);
 #endif
index 4359b31..2d29f40 100644 (file)
@@ -1,3 +1,7 @@
+1999-11-25  Ulrich Drepper  <drepper@cygnus.com>
+
+       * Makefile: Don't run tests for now.
+
 1999-11-23  Ulrich Drepper  <drepper@cygnus.com>
 
        * locales/ko_KR: New file.
index 6433e37..1189723 100644 (file)
@@ -72,7 +72,7 @@ $(inst_i18ndir)/repertoiremaps/%: repertoiremaps/% $(+force); $(do-install)
 ifeq (no,$(cross-compiling))
 ifeq (yes,$(build-shared))
 .PHONY: do-collate-test do-tst-fmon do-tst-locale do-tst-rpmatch do-tst-trans
-tests: do-collate-test do-tst-fmon do-tst-locale do-tst-rpmatch do-tst-trans
+#tests: do-collate-test do-tst-fmon do-tst-locale do-tst-rpmatch do-tst-trans
 do-collate-test: sort-test.sh $(objpfx)collate-test $(objpfx)xfrm-test \
                 $(test-input-data)
        $(SHELL) -e $< $(common-objpfx) $(test-input)
index 7a5237e..76b189f 100644 (file)
@@ -1837,6 +1837,11 @@ file2wcs (int fd, const char *charset, wchar_t *outbuf, size_t avail)
              @r{characters in the @code{inbuf}.  Put them back.}  */
           if (lseek (fd, -insize, SEEK_CUR) == -1)
             result = -1;
+
+          /* @r{Now write out the byte sequence to get into the}
+             @r{initial state if this is necessary.}  */
+          iconv (cd, NULL, NULL, &wrptr, &avail);
+
           break;
         @}
       insize += nread;
@@ -1867,7 +1872,8 @@ file2wcs (int fd, const char *charset, wchar_t *outbuf, size_t avail)
     @}
 
   /* @r{Terminate the output string.}  */
-  *((wchar_t *) wrptr) = L'\0';
+  if (avail >= sizeof (wchar_t))
+    *((wchar_t *) wrptr) = L'\0';
 
   if (iconv_close (cd) != 0)
     perror ("iconv_close");
index 992203a..3f98b27 100644 (file)
@@ -232,18 +232,29 @@ shut the system down to single-user mode first, and reboot afterward.
 This minimizes the risk of breaking things when the library changes out
 from underneath.
 
+If you're upgrading from Linux libc5 or some other C library, you need to
+replace the @file{/usr/include} with a fresh directory before installing it.
+The new @file{/usr/include} should contain the Linux headers, but nothing else.  
+
+You must first build the library (@samp{make}), optionally check it
+(@samp{make check}), switch the include directories and then install
+(@samp{make install}).  The steps must be done in this order.  Not moving
+the directory before install will result in an unusable mixture of header
+files from both libraries, but configuring, building, and checking the
+library requires the ability to compile and run programs against the old
+library. 
+
 If you are upgrading from a previous installation of glibc 2.0 or 2.1,
-@samp{make install} will do the entire job.  If you're upgrading from
-Linux libc5 or some other C library, you need to rename the old
-@file{/usr/include} directory before running @samp{make install},
-or you will end up with a mixture of header files from both
-libraries, and you won't be able to compile anything.  You may also need
-to reconfigure GCC to work with the new library.  The easiest way to do
-that is to figure out the compiler switches to make it work again
-(@samp{-Wl,--dynamic-linker=/lib/ld-linux.so.2} should work on Linux
-systems) and use them to recompile gcc.  You can also edit the specs
-file (@file{/usr/lib/gcc-lib/@var{TARGET}/@var{VERSION}/specs}), but
-that is a bit of a black art.
+@samp{make install} will do the entire job.  You do not need to remove 
+the old includes -- if you want to do so anyway you must then follow the 
+order given above.
+
+You may also need to reconfigure GCC to work with the new library.  The
+easiest way to do that is to figure out the compiler switches to make it
+work again (@samp{-Wl,--dynamic-linker=/lib/ld-linux.so.2} should work on
+Linux systems) and use them to recompile gcc.  You can also edit the specs
+file (@file{/usr/lib/gcc-lib/@var{TARGET}/@var{VERSION}/specs}), but that
+is a bit of a black art. 
 
 You can install glibc somewhere other than where you configured it to go
 by setting the @code{install_root} variable on the command line for
index cddb451..a39639c 100644 (file)
@@ -44,9 +44,14 @@ __BEGIN_DECLS
 extern void *mmap (void *__addr, size_t __len, int __prot,
                   int __flags, int __fd, __off_t __offset) __THROW;
 #else
-extern void *mmap (void *__addr, size_t __len, int __prot,
-                  int __flags, int __fd, __off_t __offset) __THROW
-     __asm__ ("mmap64");
+# ifdef __REDIRECT
+extern void * __REDIRECT (mmap,
+                         (void *__addr, size_t __len, int __prot,
+                          int __flags, int __fd, __off64_t __offset) __THROW,
+                         mmap64);
+# else
+#  define mmap mmap64
+# endif
 #endif
 #ifdef __USE_LARGEFILE64
 extern void *mmap64 (void *__addr, size_t __len, int __prot,
index f44c519..f63dc1f 100644 (file)
@@ -41,7 +41,7 @@ exit (int status)
     {
       struct exit_function_list *old;
 
-      do
+      while (__exit_funcs->idx > 0)
        {
          const struct exit_function *const f =
            &__exit_funcs->fns[--__exit_funcs->idx];
@@ -58,7 +58,6 @@ exit (int status)
              break;
            }
        }
-      while (__exit_funcs->idx > 0);
 
       old = __exit_funcs;
       __exit_funcs = __exit_funcs->next;