aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog33
-rw-r--r--iconv/iconv_prog.c28
-rw-r--r--include/sys/mman.h10
-rw-r--r--localedata/ChangeLog4
-rw-r--r--localedata/Makefile2
-rw-r--r--manual/charset.texi8
-rw-r--r--manual/install.texi33
-rw-r--r--misc/sys/mman.h11
-rw-r--r--stdlib/exit.c3
9 files changed, 105 insertions, 27 deletions
diff --git a/ChangeLog b/ChangeLog
index 2253407581..0bd8ce7a60 100644
--- 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.
diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c
index efa9e24411..0144ac40ee 100644
--- a/iconv/iconv_prog.c
+++ b/iconv/iconv_prog.c
@@ -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)
{
diff --git a/include/sys/mman.h b/include/sys/mman.h
index a76c23688f..14e757892e 100644
--- a/include/sys/mman.h
+++ b/include/sys/mman.h
@@ -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
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 4359b31d89..2d29f4035e 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -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.
diff --git a/localedata/Makefile b/localedata/Makefile
index 6433e374ea..1189723988 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -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)
diff --git a/manual/charset.texi b/manual/charset.texi
index 7a5237edfb..76b189f5fc 100644
--- a/manual/charset.texi
+++ b/manual/charset.texi
@@ -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");
diff --git a/manual/install.texi b/manual/install.texi
index 992203a056..3f98b270aa 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -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
diff --git a/misc/sys/mman.h b/misc/sys/mman.h
index cddb451081..a39639c995 100644
--- a/misc/sys/mman.h
+++ b/misc/sys/mman.h
@@ -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,
diff --git a/stdlib/exit.c b/stdlib/exit.c
index f44c519aa7..f63dc1fdec 100644
--- a/stdlib/exit.c
+++ b/stdlib/exit.c
@@ -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;