On 05/26/2013 19:20, David Wolfskill wrote:
A while back, I volunteered to maintain x11-wm/piewm, as it had been
assigned to "ports" and I'm one of the very few folks I know who uses
it.
...
So I hacked twm.c, per:
--- twm.c 1998-06-12 13:28:07.000000000 -0700
+++ twm.c 2013-05-10 21:02:32.000000000 -0700
@@ -93,6 +93,7 @@
#endif
#include <stdio.h>
+#include <stdlib.h>
#include <signal.h>
#include <fcntl.h>
#include "twm.h"
@@ -177,6 +178,8 @@
unsigned long black, white;
+extern char **environ;
+
/***********************************************************************
*
* Procedure:
@@ -186,7 +189,7 @@
*/
int
-main(int argc, char **argv, char **environ)
+main(int argc, char **argv)
{
Window root, parent, *children;
unsigned int nchildren;
rebuilt piewm, et voilĂ : no crash. :-)
I thought this was encouraging, and sent a note to Russ Nelson at
crynwr.com -- the upstream site. That was on 10 May; I've had no
response.
I subsequently rebuild piewm with the patch applied for my usual
FreeBSD/i386 environment, and it's (also) been trouble-free. (That
said, I don't actually do anything with the environment for piewm.
Indeed, in nearly all respects, I could use tvtwm without any difference
-- and those that would show up are too arcane to describe here.)
So I have a couple of questions related to the above:
* Is the patch correct? I don't do much with C, and even less with C
code that accesses the environment. (When I write code, it's normally
scripts, mostly in /bin/sh.) getenv(3) mentioned the "#include
<stdlib.h>", so I did that based on theat man page. I didn't see
anything about declaring environ as an "extern char **", but wasn't
keen on making more changes than necessary to the code. (Mind, I
fully support making "necessary" -- or even "strongly advised" --
changes.)
Should be fine. See environ(7) or
http://pubs.opengroup.org/onlinepubs/9699919799/functions/environ.html:
"In addition, the following variable, which must be declared by the user
if it is to be used directly: extern char **environ; "
Including <stdlib.h> is not necessary to access the environ variable.
--
Stefan
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"