+#if !_LIBC
+# if !defined errno
+extern int errno;
+# endif
+# define __set_errno(ev) ((errno) = (ev))
+#endif
+
+/* Don't include stdlib.h because some (e.g., Solaris 7) declare putenv
+ with a non-const argument. That would conflict with the declaration of
+ rpl_putenv below (due to the #define putenv rpl_putenv from config.h). */
+
+char *malloc ();
+void free ();
+
+#if defined (__GNU_LIBRARY__) || defined (HAVE_STRING_H)
+# include <string.h>
+#endif
+#if defined (__GNU_LIBRARY__) || defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#if !defined (__GNU_LIBRARY__) && !defined (HAVE_STRCHR)
+# define strchr index
+#endif
+#if !defined (__GNU_LIBRARY__) && !defined (HAVE_MEMCPY)
+# define memcpy(d,s,n) bcopy ((s), (d), (n))
+#endif
+
+#if HAVE_GNU_LD
+# define environ __environ
+#else
+extern char **environ;
+#endif
+
+#if _LIBC
+/* This lock protects against simultaneous modifications of `environ'. */
+# include <bits/libc-lock.h>
+__libc_lock_define_initialized (static, envlock)
+# define LOCK __libc_lock_lock (envlock)
+# define UNLOCK __libc_lock_unlock (envlock)
+#else
+# define LOCK
+# define UNLOCK
+#endif