Leo Bicknell wrote:
In a message written on Sun, Jul 20, 2003 at 02:13:52PM -0700, Tim Kientzle wrote:
If I declare argv as "const char *",
then the call to execve() warns about
"incompatible pointer type" for the
second argument.

Almost, but the other order is important here, this passes gcc -Wall:


#include <unistd.h>
#include <paths.h>

int main(int argc, char *const argv[], char *const envp[]) {
  char *const execargv[] = { _PATH_BSHELL, NULL };

execve(_PATH_BSHELL,execargv,envp);

  return 0;
}

Actually, this example passes -Wall if you declare "execargv" as simply "char *[]". However, I'm looking for something that passes gcc -Wwrite-strings, which this example does not.

I honestly don't believe it is possible to call
execve() in a const-correct fashion with -Wwrite-strings
unless you copy over all of the arguments into
non-const storage. <sigh>  I'd love to be proven wrong, though.

Tim Kientzle




_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to