diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | catgets/open_catalog.c | 25 |
2 files changed, 25 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index 7e7e9d3ee4..99df4d8cbb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +1998-05-22 Ulrich Drepper <drepper@cygnus.com> + + * catgets/open_catalog.c (__open_catalog): Use byteswap.h + functions. Optimize filename creation a bit. + +1998-05-22 09:29 Ulrich Drepper <drepper@cygnus.com> + + * stdlib/random_r.c: Help gcc to optimize the code. + Patch by Joe Keane <jgk@jgk.org>. + 1998-05-21 Ulrich Drepper <drepper@cygnus.com> * iconv/iconv_prog.c (print_known_names): Use strverscmp in all diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c index 2197eb8363..9d54124cd0 100644 --- a/catgets/open_catalog.c +++ b/catgets/open_catalog.c @@ -17,6 +17,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include <byteswap.h> #include <endian.h> #include <fcntl.h> #include <string.h> @@ -28,8 +29,7 @@ #include "catgetsinfo.h" -#define SWAPU32(w) \ - (((w) << 24) | (((w) & 0xff00) << 8) | (((w) >> 8) & 0xff00) | ((w) >> 24)) +#define SWAPU32(w) bswap_32 (w) void @@ -68,6 +68,7 @@ __open_catalog (__nl_catd catalog) char *buf; size_t bufact; size_t bufmax; + size_t len; buf = NULL; bufmax = 0; @@ -86,13 +87,17 @@ __open_catalog (__nl_catd catalog) { case 'N': /* Use the catalog name. */ - ENOUGH (strlen (catalog->cat_name)); - bufact = __stpcpy (&buf[bufact], catalog->cat_name) - buf; + len = strlen (catalog->cat_name); + ENOUGH (len); + memcpy (&buf[bufact], catalog->cat_name, len); + bufact += len; break; case 'L': /* Use the current locale category value. */ - ENOUGH (strlen (catalog->env_var)); - bufact = __stpcpy (&buf[bufact], catalog->env_var) - buf; + len = strlen (catalog->env_var); + ENOUGH (len); + memcpy (&buf[bufact], catalog->env_var, len); + bufact += len; break; case 'l': /* Use language element of locale category value. */ @@ -178,15 +183,15 @@ __open_catalog (__nl_catd catalog) #ifndef MAP_COPY /* Linux seems to lack read-only copy-on-write. */ -#define MAP_COPY MAP_PRIVATE +# define MAP_COPY MAP_PRIVATE #endif #ifndef MAP_FILE /* Some systems do not have this flag; it is superfluous. */ -#define MAP_FILE 0 +# define MAP_FILE 0 #endif #ifndef MAP_INHERIT /* Some systems might lack this; they lose. */ -#define MAP_INHERIT 0 +# define MAP_INHERIT 0 #endif catalog->file_size = st.st_size; catalog->file_ptr = @@ -237,7 +242,7 @@ __open_catalog (__nl_catd catalog) swapping = 1; else { - /* Illegal file. Free the resources and mark catalog as not + /* Invalid file. Free the resources and mark catalog as not usable. */ if (catalog->status == mmapped) __munmap ((void *) catalog->file_ptr, catalog->file_size); |