diff options
Diffstat (limited to 'manual')
-rw-r--r-- | manual/charset.texi | 8 | ||||
-rw-r--r-- | manual/install.texi | 33 |
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 |