From 7cabd57c0d64a2ee5ca0c5218c877ff700727880 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 3 Aug 1998 16:47:01 +0000 Subject: Update. 1998-08-03 16:36 Ulrich Drepper * catgets/catgets.c: Use mmap/munmap only is _POSIX_MAPPED_FILES is defined. * catgets/open_catalog.c: Likewise. * iconv/iconv_prog.c: Likewise. * intl/loadmsgcat.c: Likewise. * locale/findlocale.c: Likewise. * locale/loadlocale.c: Likewise. * locale/programs/localedef.c: Likewise. * malloc/malloc.c: Likewise. * elf/elf.h: Fix typo. * math/Makefile: Use $(LN_S) instead of ln. * sysdeps/generic/getpgid.c: Fix return type. 1998-08-01 02:49 -0400 Zack Weinberg * sysdeps/posix/tempname.c (__stdio_gen_tempname): Rename to __gen_tempname and simplify the interface. Strip out the code to do path search and create FILE objects. This function now takes a mktemp() style template and returns either a name or a file descriptor. (__path_search): New function; searches for directories for temp files. * sysdeps/generic/tempname.c: Stub out __gen_tempname and __path_search, not __stdio_gen_tempname. * libio/stdio.h: Prototype __gen_tempname and __path_search, not __stdio_gen_tempname. * stdio/stdio.h: Likewise. * stdio-common/tempnam.c: Use __path_search and __gen_tempname. * stdio-common/tmpfile.c: Likewise. * stdio-common/tmpfile64.c: Likewise. * stdio-common/tmpnam.c: Likewise. * stdio-common/tmpnam_r.c: Likewise. * misc/mkstemp.c: New file. Use __gen_tempname. * misc/mktemp.c: Likewise. * sysdeps/posix/mkstemp.c: Removed. * sysdeps/posix/mktemp.c: Removed. * sysdeps/generic/mkstemp.c: Removed. * sysdeps/generic/mktemp.c: Removed. 1998-08-02 Thorsten Kukuk * configure.in: Check, if door add-on is installed. * config.make.in: Add have_doors. * sunrpc/Makefile: Add HAVE_DOOR define. * sunrpc/key_call.c: Add keyserv/door interface. * sunrpc/svc_unix.c: Call setsockopt only if SO_PASSCRED is defined. * sunrpc/clnt_unix.c: Likewise. 1998-08-02 Andreas Jaeger * inet/netinet/in.h (IN_CLASSC): Correct mask. Reported by Ian Staniforth [fixes PR libc/727]. 1998-08-03 10:23 Ulrich Drepper * misc/Makefile: Fix installation problem with --disable-shared. * posix/Makefile: Likewise. 1998-08-02 Andreas Schwab * posix/regex.c (re_search_2): Optimize searching for anchored pattern if '^' cannot match at embedded newlines. (regerror): Renamed from __regerror, which it should only be called if _LIBC. 1998-07-31 Andreas Schwab * sunrpc/svc_unix.c (__msgread): Check setsockopt return value. 1998-07-31 Andreas Schwab * sysdeps/generic/glob.c: Remove obsolete cast. 1998-07-31 Andreas Schwab * Rules (tests): Fix last change. --- catgets/catgets.c | 19 +++++++++++-------- catgets/open_catalog.c | 28 +++++++++++++++++----------- 2 files changed, 28 insertions(+), 19 deletions(-) (limited to 'catgets') diff --git a/catgets/catgets.c b/catgets/catgets.c index ebfb2c54cc..b5de2fbb50 100644 --- a/catgets/catgets.c +++ b/catgets/catgets.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -166,15 +166,18 @@ catclose (nl_catd catalog_desc) catalog = (__nl_catd) catalog_desc; +#ifdef _POSIX_MAPPED_FILES if (catalog->status == mmapped) __munmap ((void *) catalog->file_ptr, catalog->file_size); - else if (catalog->status == malloced) - free ((void *) catalog->file_ptr); - else if (catalog->status != closed && catalog->status != nonexisting) - { - __set_errno (EBADF); - return -1; - } + else +#endif /* _POSIX_MAPPED_FILES */ + if (catalog->status == malloced) + free ((void *) catalog->file_ptr); + else if (catalog->status != closed && catalog->status != nonexisting) + { + __set_errno (EBADF); + return -1; + } if (catalog->nlspath) free ((void *) catalog->nlspath); diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c index deaa8718dd..e4b61d779a 100644 --- a/catgets/open_catalog.c +++ b/catgets/open_catalog.c @@ -24,7 +24,9 @@ #include #include #include -#include +#ifdef _POSIX_MAPPED_FILES +# include +#endif #include #include "catgetsinfo.h" @@ -194,19 +196,20 @@ __open_catalog (__nl_catd catalog) goto unlock_return; } -#ifndef MAP_COPY + catalog->file_size = st.st_size; +#ifdef _POSIX_MAPPED_FILES +# ifndef MAP_COPY /* Linux seems to lack read-only copy-on-write. */ -# define MAP_COPY MAP_PRIVATE -#endif -#ifndef MAP_FILE +# define MAP_COPY MAP_PRIVATE +# endif +# ifndef MAP_FILE /* Some systems do not have this flag; it is superfluous. */ -# define MAP_FILE 0 -#endif -#ifndef MAP_INHERIT +# define MAP_FILE 0 +# endif +# ifndef MAP_INHERIT /* Some systems might lack this; they lose. */ -# define MAP_INHERIT 0 -#endif - catalog->file_size = st.st_size; +# define MAP_INHERIT 0 +# endif catalog->file_ptr = (struct catalog_obj *) __mmap (NULL, st.st_size, PROT_READ, MAP_FILE|MAP_COPY|MAP_INHERIT, fd, 0); @@ -214,6 +217,7 @@ __open_catalog (__nl_catd catalog) /* Tell the world we managed to mmap the file. */ catalog->status = mmapped; else +#endif /* _POSIX_MAPPED_FILES */ { /* mmap failed perhaps because the system call is not implemented. Try to load the file. */ @@ -258,9 +262,11 @@ __open_catalog (__nl_catd catalog) invalid_file: /* Invalid file. Free the resources and mark catalog as not usable. */ +#ifdef _POSIX_MAPPED_FILES if (catalog->status == mmapped) __munmap ((void *) catalog->file_ptr, catalog->file_size); else +#endif /* _POSIX_MAPPED_FILES */ free (catalog->file_ptr); catalog->status = nonexisting; goto unlock_return; -- cgit 1.4.1