patch: __env_lock/__env_unlock prototypes

Werner Almesberger
Wed Aug 23 12:14:00 GMT 2000

This patch adds prototypes to envlock.h, which fixes two warnings in each
of getenv_r.c and setenv_r.c.

Hmm, as people watch in silent horror, maybe I should explain what I'm
doing: I'm trying to get a reasonably clean build with -Wall, mainly to
find my own bugs, but I think it can only help if other code doesn't
yield tons of unnecessary warnings too. I'm grouping my patches by
their complexity and by how controversial their inclusion may be, e.g.
the missing includes patch is a direct application of POSIX.1, while
this one re-arranges an internal interface, and the next one will deal
with gcc-isms.

Current status: I'm pretty much through with headers/prototypes (at
least as far as -Wall is concerned - -Wmissing-prototypes may be
another story). Now there are plenty of "might be used uninitialized"
and "suggest parentheses" warnings, particularly in libm. I've looked
at a few of them, mainly those in libc, and the code looks correct, so
I don't want to do a lot about them. I'll make a patch for a few
trivial cases of "suggest parentheses", though. Then I'll shut up
again ;-)

- Werner

---------------------------------- ChangeLog ----------------------------------

2000-08-23  Werner Almesberger  <>
	* libc/stdlib/envlock.c: changed documented "__env_lock" and
	"__env_unlock" prototype from "void *" or "char *" to
	"struct _reent *" to match real function
	* libc/stdlib/envlock.h: added "__env_lock" and "__env_unlock"
	prototypes (for getenv_r.c and setenv_r.c)
	* libc/stdlib/envlock.c: included envlock.h for "__env_lock" and
	"__env_unlock" prototypes

------------------------------------ patch ------------------------------------

--- orig/newlib/libc/stdlib/envlock.c	Wed Mar 22 01:09:49 2000
+++ src/newlib/libc/stdlib/envlock.c	Wed Aug 23 20:45:02 2000
@@ -9,15 +9,15 @@
 	#include "envlock.h"
-	void __env_lock (void *<[reent]>);
-	void __env_unlock (void *<[reent]>);
+	void __env_lock (struct _reent *<[reent]>);
+	void __env_unlock (struct _reent *<[reent]>);
 	void __env_lock(<[reent]>)
-	char *<[reent]>;
+	struct _reent *<[reent]>;
 	void __env_unlock(<[reent]>)
-	char *<[reent]>;
+	struct _reent *<[reent]>;
 The <<setenv>> family of routines call these functions when they need
@@ -34,6 +34,9 @@
 routines must be careful to avoid causing a thread to wait for a lock
 that it already holds.
+#include "envlock.h"
 __env_lock (ptr)
--- orig/newlib/libc/stdlib/envlock.h	Thu Feb 17 20:39:47 2000
+++ src/newlib/libc/stdlib/envlock.h	Wed Aug 23 20:48:24 2000
@@ -9,4 +9,7 @@
 #define ENV_LOCK __env_lock(reent_ptr)
 #define ENV_UNLOCK __env_unlock(reent_ptr)
+void _EXFUN(__env_lock,(struct _reent *reent));
+void _EXFUN(__env_unlock,(struct _reent *reent));
 #endif /* _INCLUDE_ENVLOCK_H_ */

 / Werner Almesberger, ICA, EPFL, CH /

More information about the Newlib mailing list