Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 14 Sep 1998 11:43:26 +0000 (11:43 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 14 Sep 1998 11:43:26 +0000 (11:43 +0000)
1998-09-14 11:26  Ulrich Drepper  <drepper@cygnus.com>

* wcsmbs/wcsmbs-tst1.c: Include stdlib.h.

1998-09-14  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>

* libc-work/nis/nss_nisplus/nisplus-service.c
(_nss_nisplus_parse_servent): Convert port in network byte order.

1998-09-14 07:53 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>

* stdlib/stdlib.h: Add a switch, __need_malloc_and_calloc,
to provide only malloc and calloc.
* include/stdlib.h: Support the above.
* string/bits/string2.h: Use __need_malloc_and_calloc when
including stdlib.h.
(__string2_1bptr_p): Avoid -Wbad-function-cast warnings.

* iconvdata/iso-2022-jp.c: Include <stdlib.h>.
* iconvdata/iso646.c: Include <stdlib.h>.

1998-09-14 07:51 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>

* sunrpc/rpc_cout.c: Add braces around ambiguous else.
* sysdeps/libm-ieee754/w_pow.c: Likewise.
* sysdeps/libm-ieee754/w_powf.c: Likewise.
* sysdeps/libm-ieee754/w_powl.c: Likewise.

1998-09-14 07:57 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>

* stdio-common/stdio_lim.h.in: New file.  All parameters
are adjustable at build time.
* Rules: Add a rule to build bits/stdio_lim.h from
stdio-common/stdio_lim.h.in.  (It has to be in Rules so that
all subdirectories know how to make the file.  It can't be
in Makerules because then it gets built at top level and the
dependencies are wrong.)

* stdio-common/Makefile (distribute): Add stdio_lim.h.in.
* sysdeps/unix/sysv/linux/Makefile: Delete rules to make
stdio_lim.h.
* sysdeps/unix/sysv/linux/stdio_lim.h.in: Removed.
* sysdeps/unix/sysv/linux/Dist: Take out stdio_lim.h.in.
* sysdeps/posix/Makefile: Removed.
* sysdeps/posix/mk-stdiolim.c: Removed.
* sysdeps/generic/bits/stdio_lim.h: Removed.

1998-09-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* argp/argp-help.c: Fixup indentation.
* nss/nss_files/files-alias.c: Quiet -Wparentheses warning.
* resolv/nss_dns/dns-network.c: Likewise.
* resolv/res_send.c: Likewise.
* rt/aio_cancel.c: Likewise.
* rt/aio_misc.c: Likewise.

1998-09-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* Makefile (install-symbolic-link): Remove the link list file at last.
* Makerules (install-clean-symbolic-link-list): Removed.

1998-09-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* timezone/tst-timezone.c: Print time in UTC to get consistent
output.

1998-09-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* elf/rtld.c (_dl_rpath): Removed.
* elf/dl-support.c (_dl_path): Removed.
* elf/Makefile ($(objpfx)ld.so): Don't pass -rpath.
(CFLAGS-dl-support.c): Removed.

* elf/dl-load.c (env_path_list): Renamed from fake_path_list.  All
uses changed.
(_dl_init_paths): Always set env_path_list from LD_LIBRARY_PATH,
instead of appending it to the main map's rpath info.
(_dl_map_object): Consistently use LD_LIBRARY_PATH after all
DT_RPATHs.  This makes it effective again.
(decompose_rpath): Remove second parameter, callers changed.
(fillin_rpath): Allocate enough space in curwd.
(expand_dynamic_string_token): Cope with get_origin returning -1.

1998-09-14  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>

* libc-work/nis/nss_compat/compat-pwd.c: Add support for
passwd.adjunct.

* nis/nss_nis/nis-pwd.c (_nss_nis_getpwent_r): Correct test for
invalid password.

1998-09-13 18:06  Ulrich Drepper  <drepper@cygnus.com>

* locale/programs/locale.c: Update dates.

36 files changed:
ChangeLog
Makefile
Makerules
Rules
argp/argp-help.c
elf/Makefile
elf/dl-load.c
elf/dl-support.c
elf/rtld.c
iconvdata/iso-2022-jp.c
iconvdata/iso646.c
include/stdlib.h
locale/programs/locale.c
nis/nss_compat/compat-pwd.c
nis/nss_nis/nis-pwd.c
nis/nss_nisplus/nisplus-service.c
nss/nss_files/files-alias.c
resolv/nss_dns/dns-network.c
resolv/res_send.c
rt/aio_cancel.c
rt/aio_misc.c
stdio-common/Makefile
stdio-common/stdio_lim.h.in [moved from sysdeps/generic/bits/stdio_lim.h with 73% similarity]
stdlib/stdlib.h
string/bits/string2.h
sunrpc/rpc_cout.c
sysdeps/libm-ieee754/w_pow.c
sysdeps/libm-ieee754/w_powf.c
sysdeps/libm-ieee754/w_powl.c
sysdeps/posix/Makefile [deleted file]
sysdeps/posix/mk-stdiolim.c [deleted file]
sysdeps/unix/sysv/linux/Dist
sysdeps/unix/sysv/linux/Makefile
sysdeps/unix/sysv/linux/stdio_lim.h.in [deleted file]
timezone/tst-timezone.c
wcsmbs/wcsmbs-tst1.c

index 2e34716a1afa7aa3e72861d47a95c30a0755a9ca..00d0704af6f070bea315b786848efc62e21278b0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,98 @@
+1998-09-14 11:26  Ulrich Drepper  <drepper@cygnus.com>
+
+       * wcsmbs/wcsmbs-tst1.c: Include stdlib.h.
+
+1998-09-14  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>
+
+       * libc-work/nis/nss_nisplus/nisplus-service.c
+       (_nss_nisplus_parse_servent): Convert port in network byte order.
+
+1998-09-14 07:53 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+       * stdlib/stdlib.h: Add a switch, __need_malloc_and_calloc,
+       to provide only malloc and calloc.
+       * include/stdlib.h: Support the above.
+       * string/bits/string2.h: Use __need_malloc_and_calloc when
+       including stdlib.h.
+       (__string2_1bptr_p): Avoid -Wbad-function-cast warnings.
+
+       * iconvdata/iso-2022-jp.c: Include <stdlib.h>.
+       * iconvdata/iso646.c: Include <stdlib.h>.
+
+1998-09-14 07:51 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+       * sunrpc/rpc_cout.c: Add braces around ambiguous else.
+       * sysdeps/libm-ieee754/w_pow.c: Likewise.
+       * sysdeps/libm-ieee754/w_powf.c: Likewise.
+       * sysdeps/libm-ieee754/w_powl.c: Likewise.
+
+1998-09-14 07:57 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+       * stdio-common/stdio_lim.h.in: New file.  All parameters
+       are adjustable at build time.
+       * Rules: Add a rule to build bits/stdio_lim.h from
+       stdio-common/stdio_lim.h.in.  (It has to be in Rules so that
+       all subdirectories know how to make the file.  It can't be
+       in Makerules because then it gets built at top level and the
+       dependencies are wrong.)
+
+       * stdio-common/Makefile (distribute): Add stdio_lim.h.in.
+       * sysdeps/unix/sysv/linux/Makefile: Delete rules to make
+       stdio_lim.h.
+       * sysdeps/unix/sysv/linux/stdio_lim.h.in: Removed.
+       * sysdeps/unix/sysv/linux/Dist: Take out stdio_lim.h.in.
+       * sysdeps/posix/Makefile: Removed.
+       * sysdeps/posix/mk-stdiolim.c: Removed.
+       * sysdeps/generic/bits/stdio_lim.h: Removed.
+
+1998-09-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * argp/argp-help.c: Fixup indentation.
+       * nss/nss_files/files-alias.c: Quiet -Wparentheses warning.
+       * resolv/nss_dns/dns-network.c: Likewise.
+       * resolv/res_send.c: Likewise.
+       * rt/aio_cancel.c: Likewise.
+       * rt/aio_misc.c: Likewise.
+
+1998-09-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * Makefile (install-symbolic-link): Remove the link list file at last.
+       * Makerules (install-clean-symbolic-link-list): Removed.
+
+1998-09-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * timezone/tst-timezone.c: Print time in UTC to get consistent
+       output.
+
+1998-09-12  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * elf/rtld.c (_dl_rpath): Removed.
+       * elf/dl-support.c (_dl_path): Removed.
+       * elf/Makefile ($(objpfx)ld.so): Don't pass -rpath.
+       (CFLAGS-dl-support.c): Removed.
+
+       * elf/dl-load.c (env_path_list): Renamed from fake_path_list.  All
+       uses changed.
+       (_dl_init_paths): Always set env_path_list from LD_LIBRARY_PATH,
+       instead of appending it to the main map's rpath info.
+       (_dl_map_object): Consistently use LD_LIBRARY_PATH after all
+       DT_RPATHs.  This makes it effective again.
+       (decompose_rpath): Remove second parameter, callers changed.
+       (fillin_rpath): Allocate enough space in curwd.
+       (expand_dynamic_string_token): Cope with get_origin returning -1.
+
+1998-09-14  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>
+
+       * libc-work/nis/nss_compat/compat-pwd.c: Add support for
+       passwd.adjunct.
+
+       * nis/nss_nis/nis-pwd.c (_nss_nis_getpwent_r): Correct test for
+       invalid password.
+
+1998-09-13 18:06  Ulrich Drepper  <drepper@cygnus.com>
+
+       * locale/programs/locale.c: Update dates.
+
 1998-09-13  Mark Kettenis  <kettenis@phys.uva.nl>
 
        * sysdeps/generic/bits/types.h: Include <features.h>.  Make sure
index 45c905820e74c8d2f36eb3d16ab29219d9001c97..21ae9d508a43672da5e7431e5e477c32c8fceb2c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -101,6 +101,7 @@ install: install-symbolic-link
 .PHONY: install-symbolic-link
 install-symbolic-link: subdir_install
        $(symbolic-link-prog) $(symbolic-link-list)
+       rm -f $(symbolic-link-list)
 
 install:
        -test ! -x $(common-objpfx)elf/ldconfig || \
index c17ea781b9f38f97570a4ab9fc038edc0a1d2d54..2e724fabd578be93768abf360a315fc991e6a5f2 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -651,14 +651,8 @@ endif
 
 ifeq (no,$(cross-compiling))
 ifeq (yes,$(build-shared))
-# We need to clean the symbolic link list first.
 symbolic-link-prog := $(common-objpfx)elf/sln
 symbolic-link-list := $(common-objpfx)elf/symlink.list
-install: install-clean-symbolic-link-list
-.PHONY: install-clean-symbolic-link-list
-install-clean-symbolic-link-list:
-       rm -f $(symbolic-link-list)
-
 define make-shlib-link
 echo $(<F) $@ >> $(symbolic-link-list)
 endef
diff --git a/Rules b/Rules
index b401c3136cb2a9780745b08e57828c59a77664ce..9c61b8418a699007af0f7bcde6e6859799fb1fac 100644 (file)
--- a/Rules
+++ b/Rules
@@ -200,3 +200,47 @@ $(common-objpfx)dummy$o: $(common-objpfx)dummy.c $(before-compile);
 endef
 object-suffixes-left := $(object-suffixes)
 include $(o-iterator)
+
+# There's no good place to put this - here will do.
+# The dependencies are wrong if it's run from the top level.
+ifeq ($(filter %posix, $(sysdirs)),)
+L_tmpnam  = 1
+TMP_MAX   = 0
+L_ctermid = 1
+L_cuserid = 1
+else
+L_tmpnam  = 19
+TMP_MAX   = 238328
+L_ctermid = 9
+L_cuserid = 9
+endif
+
+$(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d:                 \
+                       $(..)stdio-common/stdio_%.h.in
+       $(make-target-directory)
+       echo '#include "$(..)posix/bits/posix1_lim.h"' |                \
+       SUNPRO_DEPENDENCIES='$(@:.h=.d)T MARKER'                        \
+       $(CC) $(+includes) -E -dM -xc - -o $(@:.d=.h)T
+       sed -e 's!MARKER!$(@:.h=.d) $(@:.d=.h)!'                        \
+           -e 's!$(common-objpfx)!$$(common-objpfx)!g'                 \
+               $(@:.h=.d)T > $(@:.h=.d)t &&                            \
+       mv -f $(@:.h=.d)t $(@:.h=.d)
+       fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)T`;       \
+       filename_max=`sed -n 's/^#define PATH_MAX //p' $(@:.d=.h)T`;    \
+       fopen_max=$${fopen_max:-16};                                    \
+       filename_max=$${filename_max:-1024};                            \
+       sed -e "s/@FOPEN_MAX@/$$fopen_max/"                             \
+           -e "s/@FILENAME_MAX@/$$filename_max/"                       \
+           -e "s/@L_tmpnam@/$(L_tmpnam)/"                              \
+           -e "s/@TMP_MAX@/$(TMP_MAX)/"                                \
+           -e "s/@L_ctermid@/$(L_ctermid)/"                            \
+           -e "s/@L_cuserid@/$(L_cuserid)/"                            \
+           $< > $(@:.d=.h).new &&                                      \
+       mv -f $(@:.d=.h).new $(@:.d=.h);                                \
+# Remove these last so that they can be examined if something went wrong.
+       rm -f $(@:.d=.h)T $(@:.h=.d)T
+# Get dependencies.
+ifndef no_deps
+-include $(common-objpfx)bits/stdio_lim.d
+endif
+common-generated += bits/stdio_lim.h bits/stdio_lim.d
index 9a1c05387ff6da8743b09ebc7c9a67e760f4e983..a3a1a12ef9efa2cbf28d615900466fe8e4b1ff93 100644 (file)
@@ -833,11 +833,12 @@ hol_append (struct hol *hol, struct hol *more)
 
          __mempcpy (short_options, hol->short_options, hol_so_len);
 
-       /* Fix up the short options pointers from HOL.  */
+         /* Fix up the short options pointers from HOL.  */
          for (e = entries, left = hol->num_entries; left > 0; e++, left--)
            e->short_options += (short_options - hol->short_options);
 
-       /* Now add the short options from MORE, fixing up its entries too.  */
+         /* Now add the short options from MORE, fixing up its entries
+            too.  */
          so = short_options + hol_so_len;
          more_so = more->short_options;
          for (left = more->num_entries; left > 0; e++, left--)
@@ -872,7 +873,7 @@ hol_append (struct hol *hol, struct hol *more)
          hol->num_entries = num_entries;
          hol->short_options = short_options;
        }
-      }
+    }
 
   hol_free (more);
 }
index 7f2201dc0a29c0e53385c6808447be32f0e7fdd5..ddd9d222fb469d56db65210a74053868f0bade1b 100644 (file)
@@ -116,13 +116,9 @@ endif
 
 $(objpfx)ld.so: $(objpfx)librtld.os $(addprefix $(objpfx),$(rtld-ldscript)) \
                $(ld-map)
-       $(LINK.o) -nostdlib -nostartfiles -shared -o $@         \
-               -Wl,-rpath=$(default-rpath) $(LDFLAGS-rtld)     \
-               $(filter-out $(rtld-ldscript) $(map-file),$^)   \
-               $(load-map-file) -Wl,-soname=$(rtld-installed-name)
-
-# The dl code in the static libc needs a default library path.
-CFLAGS-dl-support.c = -D'DEFAULT_RPATH="$(default-rpath)"'
+       $(LINK.o) -nostdlib -nostartfiles -shared -o $@ $(LDFLAGS-rtld) \
+                 $(filter-out $(rtld-ldscript) $(map-file),$^)         \
+                 $(load-map-file) -Wl,-soname=$(rtld-installed-name)
 
 # interp.c exists just to get this string into the libraries.
 CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"'
index b93258e9eb8bfffdc79e4e0a40a0ccf9d0f17f9c..cb0a4ff75323579cb3aa00a97ae33eb860c08075 100644 (file)
@@ -99,9 +99,8 @@ size_t _dl_pagesize;
 extern const char *_dl_platform;
 extern size_t _dl_platformlen;
 
-/* This is a fake list to store the RPATH information for static
-   binaries.  */
-static struct r_search_path_elem **fake_path_list;
+/* This is the decomposed LD_LIBRARY_PATH search path.  */
+static struct r_search_path_elem **env_path_list;
 
 /* List of the hardware capabilities we might end up using.  */
 static const struct r_strlenpair *capstr;
@@ -175,7 +174,8 @@ expand_dynamic_string_token (struct link_map *l, const char *s)
     {
       assert (l->l_name[0] == '\0');
       l->l_origin = get_origin ();
-      origin_len = l->l_origin ? strlen (l->l_origin) : 0;
+      origin_len = (l->l_origin && l->l_origin != (char *) -1
+                   ? strlen (l->l_origin) : 0);
     }
   else
     origin_len = l->l_origin == (char *) -1 ? 0 : strlen (l->l_origin);
@@ -293,8 +293,8 @@ fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
          interpreted as `use the current directory'. */
       if (len == 0)
        {
-         static char curwd[2];
-         cp = strcpy (curwd, ".");
+         static char curwd[] = "./";
+         cp = curwd;
        }
 
       /* Remove trailing slashes (except for "/").  */
@@ -388,7 +388,7 @@ fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
 
 static struct r_search_path_elem **
 internal_function
-decompose_rpath (const char *rpath, size_t additional_room, struct link_map *l)
+decompose_rpath (const char *rpath, struct link_map *l)
 {
   /* Make a copy we can work with.  */
   const char *where = l->l_name;
@@ -410,7 +410,7 @@ decompose_rpath (const char *rpath, size_t additional_room, struct link_map *l)
              /* This object is on the list of objects for which the RPATH
                 must not be used.  */
              result = (struct r_search_path_elem **)
-               malloc ((additional_room + 1) * sizeof (*result));
+               malloc (sizeof (*result));
              if (result == NULL)
                _dl_signal_error (ENOMEM, NULL,
                                  "cannot create cache for search path");
@@ -433,10 +433,9 @@ decompose_rpath (const char *rpath, size_t additional_room, struct link_map *l)
     if (*cp == ':')
       ++nelems;
 
-  /* Allocate room for the result.  NELEMS + 1 + ADDITIONAL_ROOM is an upper
-     limit for the number of necessary entries.  */
-  result = (struct r_search_path_elem **) malloc ((nelems + 1
-                                                  + additional_room + 1)
+  /* Allocate room for the result.  NELEMS + 1 is an upper limit for the
+     number of necessary entries.  */
+  result = (struct r_search_path_elem **) malloc ((nelems + 1 + 1)
                                                  * sizeof (*result));
   if (result == NULL)
     _dl_signal_error (ENOMEM, NULL, "cannot create cache for search path");
@@ -458,32 +457,9 @@ _dl_init_paths (const char *llp)
   struct r_search_path_elem *pelem, **aelem;
   size_t round_size;
 
-#ifdef PIC
-  /* We have in `search_path' the information about the RPATH of the
-     dynamic loader.  Now fill in the information about the applications
-     RPATH and the directories addressed by the LD_LIBRARY_PATH environment
-     variable.  */
+  /* Fill in the information about the application's RPATH and the
+     directories addressed by the LD_LIBRARY_PATH environment variable.  */
   struct link_map *l;
-#endif
-
-  /* Number of elements in the library path.  */
-  size_t nllp;
-
-  /* First determine how many elements the LD_LIBRARY_PATH contents has.  */
-  if (llp != NULL && *llp != '\0')
-    {
-      /* Simply count the number of colons.  */
-      const char *cp = llp;
-      nllp = 1;
-      while (*cp)
-       {
-         if (*cp == ':' || *cp == ';')
-           ++nllp;
-         ++cp;
-       }
-    }
-  else
-    nllp = 0;
 
   /* Get the capabilities.  */
   capstr = _dl_important_hwcaps (_dl_platform, _dl_platformlen,
@@ -533,81 +509,44 @@ _dl_init_paths (const char *llp)
   l = _dl_loaded;
   if (l != NULL)
     {
-      /* We should never get here when initializing in a static application.
-        If this is a dynamically linked application _dl_loaded always
-        points to the main map which is not dlopen()ed.  */
       assert (l->l_type != lt_loaded);
 
       if (l->l_info[DT_RPATH])
-       {
-         /* Allocate room for the search path and fill in information
-            from RPATH.  */
-         l->l_rpath_dirs =
-           decompose_rpath ((const char *)
-                            (l->l_addr + l->l_info[DT_STRTAB]->d_un.d_ptr
-                             + l->l_info[DT_RPATH]->d_un.d_val),
-                            nllp, l);
-       }
+       /* Allocate room for the search path and fill in information
+          from RPATH.  */
+       l->l_rpath_dirs =
+         decompose_rpath ((const char *)
+                          (l->l_addr + l->l_info[DT_STRTAB]->d_un.d_ptr
+                           + l->l_info[DT_RPATH]->d_un.d_val), l);
       else
-       {
-         /* If we have no LD_LIBRARY_PATH and no RPATH we must tell
-            this somehow to prevent we look this up again and again.  */
-         if (nllp == 0)
-           l->l_rpath_dirs = (struct r_search_path_elem **) -1l;
-         else
-           {
-             l->l_rpath_dirs = (struct r_search_path_elem **)
-               malloc ((nllp + 1) * sizeof (*l->l_rpath_dirs));
-             if (l->l_rpath_dirs == NULL)
-               _dl_signal_error (ENOMEM, NULL,
-                                 "cannot create cache for search path");
-             l->l_rpath_dirs[0] = NULL;
-           }
-       }
-
-      /* We don't need to search the list of fake entries which is searched
-        when no dynamic objects were loaded at this time.  */
-      fake_path_list = NULL;
-
-      if (nllp > 0)
-       {
-         char *copy = local_strdup (llp);
-
-         /* Decompose the LD_LIBRARY_PATH and fill in the result.
-            First search for the next place to enter elements.  */
-         struct r_search_path_elem **result = l->l_rpath_dirs;
-         while (*result != NULL)
-           ++result;
-
-         /* We need to take care that the LD_LIBRARY_PATH environment
-            variable can contain a semicolon.  */
-         (void) fillin_rpath (copy, result, ":;",
-                              __libc_enable_secure ? system_dirs : NULL,
-                              "LD_LIBRARY_PATH", NULL);
-       }
+       l->l_rpath_dirs = NULL;
     }
-  else
 #endif /* PIC */
+
+  if (llp != NULL && *llp != '\0')
     {
-      /* This is a statically linked program but we still have to take
-        care for the LD_LIBRARY_PATH environment variable.  We use a fake
-        link_map entry.  This will only contain the l_rpath_dirs
-        information.  */
+      size_t nllp;
+      const char *cp = llp;
 
-      if (nllp == 0)
-       fake_path_list = NULL;
-      else
+      /* Decompose the LD_LIBRARY_PATH contents.  First determine how many
+        elements it has.  */
+      nllp = 1;
+      while (*cp)
        {
-         fake_path_list = (struct r_search_path_elem **)
-           malloc ((nllp + 1) * sizeof (struct r_search_path_elem *));
-         if (fake_path_list == NULL)
-           _dl_signal_error (ENOMEM, NULL,
-                             "cannot create cache for search path");
-
-         (void) fillin_rpath (local_strdup (llp), fake_path_list, ":;",
-                              __libc_enable_secure ? system_dirs : NULL,
-                              "LD_LIBRARY_PATH", NULL);
+         if (*cp == ':' || *cp == ';')
+           ++nllp;
+         ++cp;
        }
+
+      env_path_list = (struct r_search_path_elem **)
+       malloc ((nllp + 1) * sizeof (struct r_search_path_elem *));
+      if (env_path_list == NULL)
+       _dl_signal_error (ENOMEM, NULL,
+                         "cannot create cache for search path");
+
+      (void) fillin_rpath (local_strdup (llp), env_path_list, ":;",
+                          __libc_enable_secure ? system_dirs : NULL,
+                          "LD_LIBRARY_PATH", NULL);
     }
 }
 
@@ -1243,25 +1182,23 @@ _dl_map_object (struct link_map *loader, const char *name, int preloaded,
                                 + l->l_info[DT_STRTAB]->d_un.d_ptr
                                 + l->l_info[DT_RPATH]->d_un.d_val);
                l->l_rpath_dirs =
-                 decompose_rpath ((const char *) ptrval, 0, l);
+                 decompose_rpath ((const char *) ptrval, l);
              }
 
-           if (l->l_rpath_dirs != (struct r_search_path_elem **) -1l)
+           if (l->l_rpath_dirs != NULL)
              fd = open_path (name, namelen, preloaded, l->l_rpath_dirs,
                              &realname);
          }
 
-      /* If dynamically linked, try the DT_RPATH of the executable itself
-        and the LD_LIBRARY_PATH environment variable.  */
+      /* If dynamically linked, try the DT_RPATH of the executable itself.  */
       l = _dl_loaded;
       if (fd == -1 && l && l->l_type != lt_loaded && l != loader
-         && l->l_rpath_dirs != (struct r_search_path_elem **) -1l)
+         && l->l_rpath_dirs != NULL)
        fd = open_path (name, namelen, preloaded, l->l_rpath_dirs, &realname);
 
-      /* This is used if a static binary uses dynamic loading and there
-        is a LD_LIBRARY_PATH given.  */
-      if (fd == -1 && fake_path_list != NULL)
-       fd = open_path (name, namelen, preloaded, fake_path_list, &realname);
+      /* Try the LD_LIBRARY_PATH environment variable.  */
+      if (fd == -1 && env_path_list != NULL)
+       fd = open_path (name, namelen, preloaded, env_path_list, &realname);
 
       if (fd == -1)
        {
index 76af1883ac40365ae02d0fd1de12f3ffb1c90958..1126d46771d2d2cee63ecea8a835b4de8836e06d 100644 (file)
 extern char *__progname;
 char **_dl_argv = &__progname; /* This is checked for some error messages.  */
 
-/* This defines the default search path for libraries.
-   For the dynamic linker it is set by -rpath when linking.  */
-const char *_dl_rpath = DEFAULT_RPATH;
-
 /* Name of the architecture.  */
 const char *_dl_platform;
 size_t _dl_platformlen;
index 7216c19aabdf6d987cb46df11243101d912e163c..7c2e054d88a0a46a5bc2a4164c71614ad1cefc8a 100644 (file)
@@ -69,7 +69,6 @@ static void process_envvars (enum mode *modep, int *lazyp);
 int _dl_argc;
 char **_dl_argv;
 unsigned int _dl_skip_args;    /* Nonzero if we were run directly.  */
-const char *_dl_rpath;
 int _dl_verbose;
 const char *_dl_platform;
 size_t _dl_platformlen;
@@ -164,15 +163,6 @@ _dl_start (void *arg)
          sizeof _dl_rtld_map.l_info);
   _dl_setup_hash (&_dl_rtld_map);
 
-  /* Cache the DT_RPATH stored in ld.so itself; this will be
-     the default search path.  */
-  if (_dl_rtld_map.l_info[DT_STRTAB] && _dl_rtld_map.l_info[DT_RPATH])
-    {
-      _dl_rpath = (void *) (_dl_rtld_map.l_addr +
-                           _dl_rtld_map.l_info[DT_STRTAB]->d_un.d_ptr +
-                           _dl_rtld_map.l_info[DT_RPATH]->d_un.d_val);
-    }
-
 /* Don't bother trying to work out how ld.so is mapped in memory.  */
   _dl_rtld_map.l_map_start = ~0;
   _dl_rtld_map.l_map_end = ~0;
index 387298803ffb4f7a5fd47fcb072b069b4520cee2..9aeaad6c3e8ec3bbf25e5f7705ad04dcd0940b27 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <gconv.h>
 #include <stdint.h>
+#include <stdlib.h>
 #include <string.h>
 #include "jis0201.h"
 #include "jis0208.h"
index af1479a34777a65b0e3d94bf14d2aa245b686b8f..9888208122e82358ab5163c08037ec41ea7b26c4 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <gconv.h>
 #include <stdint.h>
+#include <stdlib.h>
 #include <string.h>
 
 /* Definitions used in the body of the `gconv' function.  */
index 7424243e99257f6550f3b4a4a6408a1c798aec5b..c15d364c6ef5546e3affd8ab31d913ba119206ea 100644 (file)
@@ -1,7 +1,13 @@
 #ifndef _STDLIB_H
+
+#ifdef __need_malloc_and_calloc
+#define __Need_M_And_C
+#endif
+
 #include <stdlib/stdlib.h>
 
 /* Now define the internal interfaces.  */
+#ifndef __Need_M_And_C
 extern int32_t __random __P ((void));
 extern void __srandom __P ((unsigned int __seed));
 extern __ptr_t __initstate __P ((unsigned int __seed, __ptr_t __statebuf,
@@ -41,3 +47,6 @@ extern char *__realpath __P ((__const char *__name, char *__resolved));
 extern int __ptsname_r __P ((int __fd, char *__buf, size_t __buflen));
 extern int __getpt __P ((void));
 #endif
+#undef __Need_M_And_C
+
+#endif  /* include/stdlib.h */
index 93818e02e21fa6ff48106ebd5862bb081540d23f..c51c0a14faa1bd6c00d6b14dacb72cc27ba0a4a2 100644 (file)
@@ -1,5 +1,5 @@
 /* Implementation of the locale program according to POSIX 9945-2.
-   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
 
@@ -268,7 +268,7 @@ print_version (FILE *stream, struct argp_state *state)
 Copyright (C) %s Free Software Foundation, Inc.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "1995, 1996, 1997");
+"), "1995, 1996, 1997, 1998");
   fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
 }
 
index 4cbf739d050a43d0cf2d57af707a9c454cc7f48a..f4e0720fb980566891523502d87b548fc82d4265 100644 (file)
@@ -185,6 +185,62 @@ copy_pwd_changes (struct passwd *dest, struct passwd *src,
     }
 }
 
+static enum nss_status
+insert_passwd_adjunct (char **result, int *len, char *domain, int *errnop)
+{
+  char *p1, *p2, *result2, *res;
+  int len2;
+  size_t namelen;
+
+  /* Check for adjunct style secret passwords.  They can be
+     recognized by a password starting with "##".  */
+  p1 = strchr (*result, ':');
+  if (p1 == NULL || p1[1] != '#' || p1[2] != '#')
+    return NSS_STATUS_SUCCESS;
+  p2 = strchr (p1 + 3, ':');
+
+  namelen = p2 - p1 - 3;
+
+  if (yp_match (domain, "passwd.adjunct.byname", &p1[3], namelen,
+               &result2, &len2) == YPERR_SUCCESS)
+    {
+      /* We found a passwd.adjunct entry.  Merge encrypted
+        password therein into original result.  */
+      char *encrypted = strchr (result2, ':');
+      char *endp;
+      size_t restlen;
+
+      if (encrypted == NULL || (endp = strchr (++encrypted, ':')) == NULL)
+       {
+         /* Invalid format of the entry.  This never should happen
+            unless the data from which the NIS table is generated is
+            wrong.  We simply ignore it.  */
+         free (result2);
+         return NSS_STATUS_SUCCESS;
+       }
+
+      restlen = *len - (p2 - *result);
+      if ((res = malloc (namelen + restlen + (endp - encrypted) + 2)) == NULL)
+       {
+         free (result2);
+         *errnop = ENOMEM;
+         return NSS_STATUS_TRYAGAIN;
+       }
+
+      __mempcpy (__mempcpy (__mempcpy (__mempcpy
+                                      (res, *result, (p1 - *result)),
+                                      ":", 1),
+                           encrypted, endp - encrypted),
+                p2, restlen + 1);
+
+      free (result2);
+      free (*result);
+      *result = res;
+      *len = strlen (res);
+    }
+  return NSS_STATUS_SUCCESS;
+}
+
 static enum nss_status
 internal_setpwent (ent_t *ent)
 {
@@ -403,6 +459,13 @@ getpwent_next_nis_netgr (const char *name, struct passwd *result, ent_t *ent,
          != YPERR_SUCCESS)
        continue;
 
+      if (insert_passwd_adjunct (&outval, &outvallen, ypdomain, errnop)
+         != NSS_STATUS_SUCCESS)
+       {
+         free (outval);
+         return NSS_STATUS_TRYAGAIN;
+       }
+
       p2len = pwd_need_buflen (&ent->pwd);
       if (p2len > buflen)
        {
@@ -659,6 +722,13 @@ getpwent_next_nis (struct passwd *result, ent_t *ent, char *buffer,
              return NSS_STATUS_UNAVAIL;
            }
 
+         if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop) !=
+             NSS_STATUS_SUCCESS)
+           {
+             free (outval);
+             return NSS_STATUS_TRYAGAIN;
+           }
+
          if (buflen < ((size_t) outvallen + 1))
            {
              free (outval);
@@ -685,6 +755,13 @@ getpwent_next_nis (struct passwd *result, ent_t *ent, char *buffer,
              return NSS_STATUS_NOTFOUND;
            }
 
+         if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
+             != NSS_STATUS_SUCCESS)
+           {
+             free (outval);
+             return NSS_STATUS_TRYAGAIN;
+           }
+
          if (buflen < ((size_t) outvallen + 1))
            {
              free (outval);
@@ -796,6 +873,13 @@ getpwnam_plususer (const char *name, struct passwd *result, char *buffer,
          return NSS_STATUS_NOTFOUND;
        }
 
+      if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
+         != NSS_STATUS_SUCCESS)
+       {
+         free (outval);
+         return NSS_STATUS_TRYAGAIN;
+       }
+
       if (buflen < ((size_t) outvallen + 1))
        {
          free (outval);
@@ -1307,7 +1391,14 @@ getpwuid_plususer (uid_t uid, struct passwd *result, char *buffer,
          return NSS_STATUS_TRYAGAIN;
        }
 
-      if ( buflen < ((size_t) outvallen + 1))
+      if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
+         != NSS_STATUS_SUCCESS)
+       {
+         free (outval);
+         return NSS_STATUS_TRYAGAIN;
+       }
+
+      if (buflen < ((size_t) outvallen + 1))
        {
          free (outval);
          *errnop = ERANGE;
index c0acaa13e573c4a7433b1ffaba130dc2079d48cc..0a337bb9e7651ae04f0da110f1044a6e6af84f8d 100644 (file)
@@ -128,7 +128,7 @@ internal_nis_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen,
          char *endp;
          size_t restlen;
 
-         if (encrypted != NULL
+         if (encrypted == NULL
              || (endp = strchr (++encrypted, ':')) == NULL
              || (p = strchr (p + 1, ':')) == NULL)
            {
index 04fed5980829e96daa88cb464f83003fd478993e..6dfae5e2ef1d9e192373171e915c46656c07d8a5 100644 (file)
@@ -80,7 +80,7 @@ _nss_nisplus_parse_servent (nis_result *result, struct servent *serv,
   room_left -= strlen (first_unused) + 1;
   first_unused += strlen (first_unused) + 1;
 
-  serv->s_port = atoi (NISENTRYVAL (0, 3, result));
+  serv->s_port = htons (atoi (NISENTRYVAL (0, 3, result)));
   p = first_unused;
 
   line = p;
index 2d6e15c1d8283bf056c6f5975f6501b07e9f0ad1..b18361f66cf9a49f87a92e03cfe955467352bb0e 100644 (file)
@@ -382,10 +382,12 @@ _nss_files_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen,
       /* If the last use was not by the getent function we need the
         position the stream.  */
       if (last_use != getent)
-       if (fsetpos (stream, &position) < 0)
-         status = NSS_STATUS_UNAVAIL;
-       else
-         last_use = getent;
+       {
+         if (fsetpos (stream, &position) < 0)
+           status = NSS_STATUS_UNAVAIL;
+         else
+           last_use = getent;
+       }
 
       if (status == NSS_STATUS_SUCCESS)
        {
index 61f6f90b471af93dce7a8b64d424963593465bc9..e9a4b91e9d21a74afbdb4bb992ab872eff32270f 100644 (file)
@@ -231,19 +231,21 @@ getanswer_r (const querybuf *answer, int anslen, struct netent *result,
   char *ans;
 
   if (question_count == 0)
-    /* FIXME: the Sun version uses for host name lookup an additional
-       parameter for pointing to h_errno.  this is missing here.
-       OSF/1 has a per-thread h_errno variable.  */
-    if (header_pointer->aa != 0)
-      {
-       __set_h_errno (HOST_NOT_FOUND);
-       return NSS_STATUS_NOTFOUND;
-      }
-    else
-      {
-       __set_h_errno (TRY_AGAIN);
-       return NSS_STATUS_TRYAGAIN;
-      }
+    {
+      /* FIXME: the Sun version uses for host name lookup an additional
+        parameter for pointing to h_errno.  this is missing here.
+        OSF/1 has a per-thread h_errno variable.  */
+      if (header_pointer->aa != 0)
+       {
+         __set_h_errno (HOST_NOT_FOUND);
+         return NSS_STATUS_NOTFOUND;
+       }
+      else
+       {
+         __set_h_errno (TRY_AGAIN);
+         return NSS_STATUS_TRYAGAIN;
+       }
+    }
 
   /* Skip the question part.  */
   while (question_count-- > 0)
index 0c784688ac3994eaf1bab64e189b65bffd512025..608659b2cae91a9feab881f93e6586f4c48125a7 100644 (file)
@@ -782,12 +782,12 @@ read_len:
           } /*foreach ns*/
        } /*foreach retry*/
        res_close();
-       if (!v_circuit)
+       if (!v_circuit) {
                if (!gotsomewhere)
                        __set_errno (ECONNREFUSED); /* no nameservers found */
                else
                        __set_errno (ETIMEDOUT);    /* no answer obtained */
-       else
+       else
                __set_errno (terrno);
        return (-1);
 }
index 645ae16d0480f78b01f90b44e53fc64e41b078bb..8a23353b1455a9642d153162789eee53fc423bf3 100644 (file)
@@ -106,24 +106,26 @@ aio_cancel (fildes, aiocbp)
       /* If any request is worked on by a thread it must be the first.
         So either we can delete all requests or all but the first.  */
       if (req != NULL)
-       if (req->running == allocated)
-         {
-           struct requestlist *old = req;
-           req = req->next_prio;
-           old->next_prio = NULL;
+       {
+         if (req->running == allocated)
+           {
+             struct requestlist *old = req;
+             req = req->next_prio;
+             old->next_prio = NULL;
 
-           result = AIO_NOTCANCELED;
-         }
-       else
-         {
-           /* Remove entry from the file descriptor list.  */
-           if (req->last_fd != NULL)
-             req->last_fd->next_fd = req->next_fd;
-           if (req->next_fd != NULL)
-             req->next_fd->last_fd = req->last_fd;
-
-           result = AIO_CANCELED;
-         }
+             result = AIO_NOTCANCELED;
+           }
+         else
+           {
+             /* Remove entry from the file descriptor list.  */
+             if (req->last_fd != NULL)
+               req->last_fd->next_fd = req->next_fd;
+             if (req->next_fd != NULL)
+               req->next_fd->last_fd = req->last_fd;
+
+             result = AIO_CANCELED;
+           }
+       }
     }
 
   /* Mark requests as canceled and send signal.  */
index 014870566214b877d33885270cbfeba08765f28d..1688a154321cea632657f1cf9f2c7f9e894bf072 100644 (file)
@@ -162,11 +162,13 @@ __aio_find_req (aiocb_union *elem)
     runp = runp->next_fd;
 
   if (runp != NULL)
-    if (runp->aiocbp->aiocb.aio_fildes != fildes)
-      runp = NULL;
-    else
-      while (runp != NULL && runp->aiocbp != elem)
-       runp = runp->next_prio;
+    {
+      if (runp->aiocbp->aiocb.aio_fildes != fildes)
+       runp = NULL;
+      else
+       while (runp != NULL && runp->aiocbp != elem)
+         runp = runp->next_prio;
+    }
 
   return runp;
 }
index dba0335a4b1b9406e01d00b284ca55b162ebb0fa..183f1406612b3df0eafadca51b571cdb5e9b1ce7 100644 (file)
@@ -37,7 +37,7 @@ routines      :=                                                            \
        lockfile
 
 aux    := errlist siglist
-distribute := _itoa.h printf-parse.h
+distribute := _itoa.h printf-parse.h stdio_lim.h.in
 
 tests := tst-printf tstscanf test_rdwr test-popen tstgetln test-fseek \
         temptest tst-fileno test-fwrite tst-ungetc tst-ferror \
@@ -46,7 +46,6 @@ tests := tst-printf tstscanf test_rdwr test-popen tstgetln test-fseek \
         tfformat tiformat tstdiomisc tst-printfsz tst-wc-printf \
         scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10
 
-
 include ../Rules
 
 CFLAGS-vfprintf.c = -Wno-uninitialized
similarity index 73%
rename from sysdeps/generic/bits/stdio_lim.h
rename to stdio-common/stdio_lim.h.in
index 86e83cf1e2872ac631e86a302a4e97d38081c028..957fac64498b876c4c22514d764e640c4f445395 100644 (file)
@@ -1,5 +1,4 @@
-/* Stdio limits for non-POSIX systems.
-   Copyright (C) 1994, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 # error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
 #endif
 
-#ifndef __need_FOPEN_MAX
-# define L_tmpnam      1
-# define TMP_MAX       0
+#ifdef _STDIO_H
+# define L_tmpnam @L_tmpnam@
+# define TMP_MAX @TMP_MAX@
+# define FILENAME_MAX @FILENAME_MAX@
 
 # ifdef __USE_POSIX
-#  define L_ctermid    1
-#  define L_cuserid    1
+#  define L_ctermid @L_ctermid@
+#  define L_cuserid @L_cuserid@
 # endif
-
-# define FILENAME_MAX  14
 #endif
 
-#if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX
-# define __defined_FOPEN_MAX
-# define FOPEN_MAX     16
+#if defined __need_FOPEN_MAX || defined _STDIO_H
+# undef  FOPEN_MAX
+# define FOPEN_MAX @FOPEN_MAX@
 #endif
-#undef __need_FOPEN_MAX
index 49374bd3968522df08e5deea162405419b510fd5..e577fb7245aca455e54902de5b25445f7a6ee22f 100644 (file)
  */
 
 #ifndef        _STDLIB_H
-#define        _STDLIB_H       1
 
 #include <features.h>
 
 /* Get size_t, wchar_t and NULL from <stddef.h>.  */
-#define        __need_size_t
-#define        __need_wchar_t
-#define        __need_NULL
+#define                __need_size_t
+#ifndef __need_malloc_and_calloc
+# define       __need_wchar_t
+# define       __need_NULL
+#endif
 #include <stddef.h>
 
 __BEGIN_DECLS
 
+#ifndef __need_malloc_and_calloc
+#define        _STDLIB_H       1
+
 /* Returned by `div'.  */
 typedef struct
   {
@@ -440,14 +444,20 @@ extern int lcong48_r __P ((unsigned short int __param[7],
 # endif        /* Use misc.  */
 #endif /* Use SVID or X/Open.  */
 
+#endif /* don't just need malloc and calloc */
 
+#ifndef __malloc_and_calloc_defined
+#define __malloc_and_calloc_defined
 /* Allocate SIZE bytes of memory.  */
 extern __ptr_t malloc __P ((size_t __size));
+/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
+extern __ptr_t calloc __P ((size_t __nmemb, size_t __size));
+#endif
+
+#ifndef __need_malloc_and_calloc
 /* Re-allocate the previously allocated block
    in __ptr_t, making the new block SIZE bytes long.  */
 extern __ptr_t realloc __P ((__ptr_t __ptr, size_t __size));
-/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
-extern __ptr_t calloc __P ((size_t __nmemb, size_t __size));
 /* Free a block allocated by `malloc', `realloc' or `calloc'.  */
 extern void free __P ((__ptr_t __ptr));
 
@@ -720,6 +730,9 @@ extern int ptsname_r __P ((int __fd, char *__buf, size_t __buflen));
 extern int getpt __P ((void));
 #endif
 
+#endif /* don't just need malloc and calloc */
+#undef __need_malloc_and_calloc
+
 __END_DECLS
 
 #endif /* stdlib.h  */
index 0d378039fea6bfadcd72707823e2d92cbe67ccd7..8051c48162b88898b813a9947a94468cd36e523b 100644 (file)
@@ -85,11 +85,12 @@ __STRING2_COPY_TYPE (8);
 # undef __STRING2_COPY_TYPE
 #endif
 
-/* Dereferencing a pointer arg to run sizeof on it fails for the
-   void pointer case, so we use this instead.  Note that the argument
-   must not contain any side effects.  */
-#define __string2_1bptr_p(x) (((size_t) ((x) + 1) - (size_t) (x)) == 1)
-
+/* Dereferencing a pointer arg to run sizeof on it fails for the void
+   pointer case, so we use this instead.
+   Note that __x is evaluated twice. */
+#define __string2_1bptr_p(__x) \
+       (({ const void *__a, *__b; __a = (__x) + 1; __b = (__x); \
+           (size_t)__a - (size_t)__b; }) == 1)
 
 /* Set N bytes of S to C.  */
 #ifndef _HAVE_STRING_ARCH_memset
@@ -862,12 +863,17 @@ __strsep_g (char **__s, __const char *__reject)
 # endif
 #endif
 
+/* We need the memory allocation functions for inline strdup().
+   Referring to stdlib.h (even minimally) is not allowed if
+   __STRICT_ANSI__. */
+#ifndef __STRICT_ANSI__
 
-#if !defined _HAVE_STRING_ARCH_strdup && !defined __STRICT_ANSI__
-
-/* We need the memory allocation functions.  Including this header is
-   not allowed. */
+#if !defined _HAVE_STRING_ARCH_strdup || !defined _HAVE_STRING_ARCH_strndup
+# define __need_malloc_and_calloc
 # include <stdlib.h>
+#endif
+
+#ifndef _HAVE_STRING_ARCH_strdup
 
 # define __strdup(s) \
   (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)          \
@@ -885,12 +891,7 @@ __strsep_g (char **__s, __const char *__reject)
 # endif
 #endif
 
-
-#if !defined _HAVE_STRING_ARCH_strndup && !defined __STRICT_ANSI__
-
-/* We need the memory allocation functions.  Including this header is
-   not allowed. */
-# include <stdlib.h>
+#ifndef _HAVE_STRING_ARCH_strndup
 
 # define __strndup(s, n) \
   (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)          \
@@ -916,6 +917,7 @@ __strsep_g (char **__s, __const char *__reject)
 # endif
 #endif
 
+#endif /* Strict ANSI */
 
 #undef __STRING_INLINE
 
index a9da54e7f80713dd9ac7d88b8c51d0411fb559bb..541be6e0da3e38bf715d319d551e7a926ca002e8 100644 (file)
@@ -453,8 +453,8 @@ inline_struct (definition *def, int flag)
   if (flag == PUT)
     f_print (fout, "\n\tif (xdrs->x_op == XDR_ENCODE) {\n");
   else
-    f_print(fout,
-           "\t\treturn TRUE;\n\t} else if (xdrs->x_op == XDR_DECODE) {\n");
+    f_print (fout,
+            "\t\treturn TRUE;\n\t} else if (xdrs->x_op == XDR_DECODE) {\n");
 
   i = 0;
   size = 0;
@@ -506,49 +506,51 @@ inline_struct (definition *def, int flag)
       else
        {
          if (i > 0)
-           if (sizestr == NULL && size < inlineflag)
-             {
-               /* don't expand into inline code if size < inlineflag */
-               while (cur != dl)
-                 {
-                   print_stat (indent + 1, &cur->decl);
-                   cur = cur->next;
-                 }
-             }
-           else
-             {
-               /* were already looking at a xdr_inlineable structure */
-               tabify (fout, indent + 1);
-               if (sizestr == NULL)
-                 f_print (fout, "buf = XDR_INLINE (xdrs, %d * BYTES_PER_XDR_UNIT);", size);
-               else if (size == 0)
-                 f_print (fout,
-                          "buf = XDR_INLINE (xdrs, %s * BYTES_PER_XDR_UNIT);",
-                          sizestr);
-               else
-                 f_print (fout,
-                          "buf = XDR_INLINE(xdrs, (%d + (%s)) * BYTES_PER_XDR_UNIT);",
-                          size, sizestr);
-               f_print (fout, "\n");
-               tabify (fout, indent + 1);
-               fprintf (fout, "if (buf == NULL) {\n");
-               psav = cur;
-               while (cur != dl)
-                 {
-                   print_stat (indent + 2, &cur->decl);
-                   cur = cur->next;
-                 }
-
-               f_print (fout, "\n\t\t} else {\n");
-               cur = psav;
-               while (cur != dl)
-                 {
-                   emit_inline (indent + 1, &cur->decl, flag);
-                   cur = cur->next;
-                 }
-               tabify (fout, indent + 1);
-               f_print (fout, "}\n");
-             }
+           {
+             if (sizestr == NULL && size < inlineflag)
+               {
+                 /* don't expand into inline code if size < inlineflag */
+                 while (cur != dl)
+                   {
+                     print_stat (indent + 1, &cur->decl);
+                     cur = cur->next;
+                   }
+               }
+             else
+               {
+                 /* were already looking at a xdr_inlineable structure */
+                 tabify (fout, indent + 1);
+                 if (sizestr == NULL)
+                   f_print (fout, "buf = XDR_INLINE (xdrs, %d * BYTES_PER_XDR_UNIT);", size);
+                 else if (size == 0)
+                   f_print (fout,
+                            "buf = XDR_INLINE (xdrs, %s * BYTES_PER_XDR_UNIT);",
+                            sizestr);
+                 else
+                   f_print (fout,
+                            "buf = XDR_INLINE(xdrs, (%d + (%s)) * BYTES_PER_XDR_UNIT);",
+                            size, sizestr);
+                 f_print (fout, "\n");
+                 tabify (fout, indent + 1);
+                 fprintf (fout, "if (buf == NULL) {\n");
+                 psav = cur;
+                 while (cur != dl)
+                   {
+                     print_stat (indent + 2, &cur->decl);
+                     cur = cur->next;
+                   }
+
+                 f_print (fout, "\n\t\t} else {\n");
+                 cur = psav;
+                 while (cur != dl)
+                   {
+                     emit_inline (indent + 1, &cur->decl, flag);
+                     cur = cur->next;
+                   }
+                 tabify (fout, indent + 1);
+                 f_print (fout, "}\n");
+               }
+           }
          size = 0;
          i = 0;
          sizestr = NULL;
@@ -556,46 +558,49 @@ inline_struct (definition *def, int flag)
        }
     }
   if (i > 0)
-    if (sizestr == NULL && size < inlineflag)
-      {
-       /* don't expand into inline code if size < inlineflag */
-       while (cur != dl)
-         {
-           print_stat (indent + 1, &cur->decl);
-           cur = cur->next;
-         }
-      }
-    else
-      {
-       /* were already looking at a xdr_inlineable structure */
-       if (sizestr == NULL)
-         f_print (fout, "\t\tbuf = XDR_INLINE(xdrs,%d * BYTES_PER_XDR_UNIT);",
-                  size);
-       else if (size == 0)
-         f_print (fout,
-                  "\t\tbuf = XDR_INLINE(xdrs,%s * BYTES_PER_XDR_UNIT);",
-                  sizestr);
-       else
-         f_print (fout,
-                  "\t\tbuf = XDR_INLINE(xdrs,(%d + %s)* BYTES_PER_XDR_UNIT);",
-                  size, sizestr);
-       f_print (fout, "\n\t\tif (buf == NULL) {\n");
-       psav = cur;
-       while (cur != NULL)
-         {
-           print_stat (indent + 2, &cur->decl);
-           cur = cur->next;
-         }
-       f_print (fout, "\t\t} else {\n");
+    {
+      if (sizestr == NULL && size < inlineflag)
+       {
+         /* don't expand into inline code if size < inlineflag */
+         while (cur != dl)
+           {
+             print_stat (indent + 1, &cur->decl);
+             cur = cur->next;
+           }
+       }
+      else
+       {
+         /* were already looking at a xdr_inlineable structure */
+         if (sizestr == NULL)
+           f_print (fout,
+                    "\t\tbuf = XDR_INLINE(xdrs,%d * BYTES_PER_XDR_UNIT);",
+                    size);
+         else if (size == 0)
+           f_print (fout,
+                    "\t\tbuf = XDR_INLINE(xdrs,%s * BYTES_PER_XDR_UNIT);",
+                    sizestr);
+         else
+           f_print (fout,
+                    "\t\tbuf = XDR_INLINE(xdrs,(%d + %s)* BYTES_PER_XDR_UNIT);",
+                    size, sizestr);
+         f_print (fout, "\n\t\tif (buf == NULL) {\n");
+         psav = cur;
+         while (cur != NULL)
+           {
+             print_stat (indent + 2, &cur->decl);
+             cur = cur->next;
+           }
+         f_print (fout, "\t\t} else {\n");
 
-       cur = psav;
-       while (cur != dl)
-         {
-           emit_inline (indent + 2, &cur->decl, flag);
-           cur = cur->next;
-         }
-       f_print (fout, "\t\t}\n");
-      }
+         cur = psav;
+         while (cur != dl)
+           {
+             emit_inline (indent + 2, &cur->decl, flag);
+             cur = cur->next;
+           }
+         f_print (fout, "\t\t}\n");
+       }
+    }
 }
 
 /* this may be const.  i haven't traced this one through yet. */
@@ -724,7 +729,7 @@ emit_inline (int indent, declaration * decl, int flag)
       f_print (fout, "register %s *genp;\n\n", decl->type);
       tabify (fout, indent + 1);
       f_print (fout,
-             "for (i = 0, genp = objp->%s;\n", decl->name);
+              "for (i = 0, genp = objp->%s;\n", decl->name);
       tabify (fout, indent + 2);
       f_print (fout, "i < %s; ++i) {\n", decl->array_max);
       emit_single_in_line (indent + 2, decl, flag, REL_VECTOR);
index 1711d71bda0d796b7d6e1cb685eaeb8c93f9d186..5850651a1a45e31ce37b06b2f8b3f29c218780c2 100644 (file)
            else
                return z;
        }
-       if(x==0.0){
+       if(x==0.0) {
            if(y==0.0)
                return __kernel_standard(x,y,20); /* pow(0.0,0.0) */
-           if(__finite(y)&&y<0.0)
+           if(__finite(y)&&y<0.0) {
              if (signbit (x) && signbit (z))
                return __kernel_standard(x,y,23); /* pow(-0.0,negative) */
              else
                return __kernel_standard(x,y,43); /* pow(+0.0,negative) */
+           }
            return z;
        }
        if(!__finite(z)) {
index 0b20822be8fd57de27409672077c31c0a33c2669..32196fd89facb18ead446d07fb6e4c13e345754c 100644 (file)
@@ -45,16 +45,17 @@ static char rcsid[] = "$NetBSD: w_powf.c,v 1.3 1995/05/10 20:49:41 jtc Exp $";
            else
                return z;
        }
-       if(x==(float)0.0){
+       if(x==(float)0.0) {
            if(y==(float)0.0)
                /* powf(0.0,0.0) */
                return (float)__kernel_standard((double)x,(double)y,120);
-           if(__finitef(y)&&y<(float)0.0)
+           if(__finitef(y)&&y<(float)0.0) {
              if (signbit (x) && signbit (z))
                /* powf(0.0,negative) */
                return (float)__kernel_standard((double)x,(double)y,123);
              else
                return (float)__kernel_standard((double)x,(double)y,143);
+           }
            return z;
        }
        if(!__finitef(z)) {
index 3529b5024ccf59466a7a9f86643e6440d9e39942..17feb9fc61661d7ae7759a4bd5a1ba30ea15381c 100644 (file)
            else
                return z;
        }
-       if(x==0.0){
+       if(x==0.0) {
            if(y==0.0)
                return __kernel_standard(x,y,220); /* pow(0.0,0.0) */
-           if(__finitel(y)&&y<0.0)
+           if(__finitel(y)&&y<0.0) {
              if (signbit (x) && signbit (z))
                return __kernel_standard(x,y,223); /* pow(-0.0,negative) */
              else
                return __kernel_standard(x,y,243); /* pow(+0.0,negative) */
+           }
            return z;
        }
        if(!__finitel(z)) {
diff --git a/sysdeps/posix/Makefile b/sysdeps/posix/Makefile
deleted file mode 100644 (file)
index 7806e4e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
-# This file is part of the GNU C Library.
-
-# The GNU C Library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public License as
-# published by the Free Software Foundation; either version 2 of the
-# License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Library General Public License for more details.
-
-# You should have received a copy of the GNU Library General Public
-# License along with the GNU C Library; see the file COPYING.LIB.  If not,
-# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-ifneq (yes,$(inhibit-stdio_lim))
-# Disable these rules if we generate stdio_lim.h by other means.
-
-$(common-objpfx)bits/stdio_lim.h: $(common-objpfx)mk-stdiolim
-       $(dir $<)$(notdir $<) > $@-t
-       mv $@-t $@
-
-# Turn into a version that works when cd'd into $(objdir).
-mk-stdiolim-CFLAGS = $(patsubst -I$(shell pwd)//%,-I/%,\
-                               $(patsubst -I%,-I$(shell pwd)/%,$(+includes)))
-# $(ALL_BUILD_CFLAGS) needs to come last because it contains unwanted -Is.
-$(common-objpfx)mk-stdiolim: $(sysdep_dir)/posix/mk-stdiolim.c \
-                            $(..)posix/bits/posix1_lim.h bits/local_lim.h
-       $(common-objdir-compile)
-
-common-generated := $(common-generated) bits/stdio_lim.h mk-stdiolim
-before-compile := $(before-compile) $(common-objpfx)bits/stdio_lim.h
-
-endif # inhibit-stdio_lim
diff --git a/sysdeps/posix/mk-stdiolim.c b/sysdeps/posix/mk-stdiolim.c
deleted file mode 100644 (file)
index ec482de..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#include <bits/posix1_lim.h>
-
-int
-main()
-{
-  /* Print copyright message.  */
-  printf ("\
-/* Stdio limits for POSIX systems.\n\
-   Copyright (C) 1994, 1997 Free Software Foundation, Inc.\n\
-   This file is part of the GNU C Library.\n\
-\n\
-   The GNU C Library is free software; you can redistribute it and/or\n\
-   modify it under the terms of the GNU Library General Public License as\n\
-   published by the Free Software Foundation; either version 2 of the\n\
-   License, or (at your option) any later version.\n\
-\n\
-   The GNU C Library is distributed in the hope that it will be useful,\n\
-   but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\
-   Library General Public License for more details.\n\
-\n\
-   You should have received a copy of the GNU Library General Publicn\n\
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,\n\
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n\
-   Boston, MA 02111-1307, USA.  */\n\
-\n\
-#if !defined _STDIO_H && !defined __need_FOPEN_MAX\n\
-# error \"Never include <bits/stdio_lim.h> directly; use <stdio.h> instead.\"\n\
-#endif\n\
-\n");
-
-  /* These values correspond to the code in sysdeps/posix/tempname.c.
-     Change the values here if you change that code.  */
-  puts ("#ifdef _STDIO_H");
-  printf ("# define L_tmpnam %u\n", sizeof ("/usr/tmp/") + 9);
-  printf ("# define TMP_MAX %u\n", 62 * 62 * 62);
-
-  puts   ("# ifdef __USE_POSIX");
-  printf ("#  define L_ctermid %u\n", sizeof ("/dev/tty"));
-  printf ("#  define L_cuserid 9\n");
-  puts   ("# endif");
-
-  printf (" #define FILENAME_MAX %u\n",
-#ifdef PATH_MAX
-         PATH_MAX
-#else
-        /* This is supposed to be the size needed to hold the longest file
-           name string the implementation guarantees can be opened.
-           PATH_MAX not being defined means the actual limit on the length
-           of a file name is runtime-variant (or it is unlimited).  ISO
-           says in such a case FILENAME_MAX should be a good size to
-           allocate for a file name string.  POSIX.1 guarantees that a
-           file name up to _POSIX_PATH_MAX chars long can be opened, so
-           this value must be at least that.  */
-         1024          /* _POSIX_PATH_MAX is 255.  */
-#endif
-         );
-
-  puts ("# undef __need_FOPEN_MAX");
-  puts ("# define __need_FOPEN_MAX     1");
-  puts ("#endif\n");
-
-  /* POSIX does not require that OPEN_MAX and PATH_MAX be defined, so
-     <bits/local_lim.h> will not define them if they are run-time
-     variant (which is the case in the Hurd).  ISO still requires
-     that FOPEN_MAX and FILENAME_MAX be defined, however.  */
-
-  puts ("#if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX");
-  puts ("# define __defined_FOPEN_MAX");
-  printf ("# define FOPEN_MAX %u\n",
-#ifdef OPEN_MAX
-
-         OPEN_MAX
-#else
-        /* This is the minimum number of files that the implementation
-           guarantees can be open simultaneously.  OPEN_MAX not being
-           defined means the maximum is run-time variant; but POSIX.1
-           requires that it never be less than _POSIX_OPEN_MAX, so that is
-           a good minimum to use.  */
-         _POSIX_OPEN_MAX
-#endif
-
-         );
-  puts ("#endif");
-  puts ("#undef __need_FOPEN_MAX");
-
-  exit (0);
-}
index e96ef14c920636b2ffa604970b909b40e893d3de..66d926655e4f5a8333674a8982bc83b6a6fe2d63 100644 (file)
@@ -1,5 +1,4 @@
 bits/pthreadtypes.h
-stdio_lim.h.in
 cmsg_nxthdr.c
 errlist.h
 init-first.h
index 6d6276a4639b51bac38118046c4af84217f8e930..fa12c056e2e58d1862cc9c5bf8782a23d074e9bf 100644 (file)
@@ -89,32 +89,6 @@ endif
 # Don't compile the ctype glue code, since there is no old non-GNU C library.
 inhibit-glue = yes
 
-# Tell sysdeps/posix/Makefile that we create stdio_lim.h differently.
-inhibit-stdio_lim = yes
-
-$(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d: \
- $(..)sysdeps/unix/sysv/linux/stdio_%.h.in
-       rm -f $(@:.h=.d) $(@:.d=.h)-t
-       echo '#include <linux/limits.h>' | \
-       SUNPRO_DEPENDENCIES='$(@:.h=.d) \
-                            $(patsubst $(common-objpfx)%,$$(common-objpfx)%,\
-                                       $(@:.d=.h) $(@:.h=.d))' \
-       $(CC) -E -dM - > $(@:.d=.h)-t
-       fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)-t`; \
-       filename_max=`sed -n 's/^#define PATH_MAX //p' $(@:.d=.h)-t`; \
-       if test -n "$$fopen_max" && test -n "$$filename_max"; then \
-               sed -e "s/DEFAULT_FOPEN_MAX/$$fopen_max/" \
-                   -e "s/DEFAULT_FILENAME_MAX/$$filename_max/" $< \
-                   > $(@:.d=.h).new && \
-               mv -f $(@:.d=.h).new $(@:.d=.h); \
-       else exit 1; fi
-# Remove this last so that it can be examined if something went wrong.
-       rm -f $(@:.d=.h)-t
-ifndef no_deps
-# Get the list of dependencies (probably /usr/include/linux/limits.h).
--include $(common-objpfx)bits/stdio_lim.d
-endif
-
 ifeq ($(subdir),signal)
 sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait        \
                   rt_sigqueueinfo rt_sigaction rt_sigpending
@@ -128,4 +102,3 @@ ifeq ($(subdir),nis)
 CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
 endif
 
-common-generated += bits/stdio_lim.h bits/stdio_lim.d
diff --git a/sysdeps/unix/sysv/linux/stdio_lim.h.in b/sysdeps/unix/sysv/linux/stdio_lim.h.in
deleted file mode 100644 (file)
index bded904..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Stdio limits for Linux.
-   Copyright (C) 1994, 1997 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#if !defined _STDIO_H && !defined __need_FOPEN_MAX
-# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
-#endif
-
-#ifdef _STDIO_H
-# define L_tmpnam 19
-# define TMP_MAX 238328
-
-# ifdef __USE_POSIX
-#  define L_ctermid 9
-#  define L_cuserid 9
-# endif
-
-# define FILENAME_MAX  DEFAULT_FILENAME_MAX
-
-# undef __need_FOPEN_MAX
-# define __need_FOPEN_MAX
-#endif
-
-#if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX
-# define __defined_FOPEN_MAX
-# define FOPEN_MAX     DEFAULT_FOPEN_MAX
-#endif
-#undef __need_FOPEN_MAX
index 3585a9c60bfb6c87071bf1df12a0f2e410b6283b..e866b94d1063a1004b6a05e60ff7635babb39bf1 100644 (file)
@@ -89,9 +89,9 @@ main (int argc, char ** argv)
   const struct test_times *pt;
   char buf[BUFSIZ];
 
-  /* This should be: Thu May 14 18:02:16 1998.  */
+  /* This should be: Fri May 15 01:02:16 1998 (UTC).  */
   t = 895194136;
-  printf ("We use this date: %s\n", ctime (&t));
+  printf ("We use this date: %s\n", asctime (gmtime (&t)));
 
   for (pt = tests; pt->name != NULL; ++pt)
     {
index 30a7faf33e9d692fc9ff12c18ea4c5511ba3b4b6..72fbda5a4d28e3a3aa8e821c793506f2e0ccf1e0 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <wchar.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <wctype.h>
 #include <locale.h>