aboutsummaryrefslogtreecommitdiff
path: root/manual
diff options
context:
space:
mode:
Diffstat (limited to 'manual')
-rw-r--r--manual/charset.texi8
-rw-r--r--manual/install.texi33
2 files changed, 29 insertions, 12 deletions
diff --git a/manual/charset.texi b/manual/charset.texi
index 7a5237e..76b189f 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 992203a..3f98b27 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