From owner-freebsd-hackers@FreeBSD.ORG Mon Jul 21 10:42:10 2003 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7F8E837B401 for ; Mon, 21 Jul 2003 10:42:10 -0700 (PDT) Received: from colnta.issci.ca (mail.acns.AB.ca [142.179.151.95]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3EA4143F85 for ; Mon, 21 Jul 2003 10:42:09 -0700 (PDT) (envelope-from davidc@colnta.issci.ca) Received: from colnta.issci.ca (localhost [127.0.0.1]) by colnta.issci.ca (8.12.9/8.12.9) with ESMTP id h6LHg6PR021938; Mon, 21 Jul 2003 11:42:06 -0600 (MDT) (envelope-from davidc@colnta.issci.ca) Received: (from davidc@localhost) by colnta.issci.ca (8.12.9/8.12.9/Submit) id h6LHg6su021937; Mon, 21 Jul 2003 11:42:06 -0600 (MDT) Date: Mon, 21 Jul 2003 11:42:06 -0600 From: Chad David To: hackers@freebsd.org, Tim Kientzle Message-ID: <20030721174206.GA21892@colnta.acns.ab.ca> Mail-Followup-To: hackers@freebsd.org, Tim Kientzle References: <3F1B0610.90803@acm.org> <20030720225041.GA26277@ussenterprise.ufp.org> <3F1C0C91.6050203@acm.org> <20030721165735.GA56766@ussenterprise.ufp.org> <20030721171538.GA21656@colnta.acns.ab.ca> <20030721172321.GA57666@ussenterprise.ufp.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20030721172321.GA57666@ussenterprise.ufp.org> User-Agent: Mutt/1.5.1i Subject: Re: Correct way to call execve? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jul 2003 17:42:10 -0000 On Mon, Jul 21, 2003 at 01:23:21PM -0400, Leo Bicknell wrote: > In a message written on Mon, Jul 21, 2003 at 11:15:38AM -0600, Chad David wrote: > > Try cc -Wwrite-strings -Wcast-qual exec.c. > > > > You cannot simply cast away a const. > > Grumble, will someone give me all the warnings you want turned on so I > can work around all of them? :) > > % cat exec.c > > #include > #include > #include > > int main(int argc, char *const argv[], char *const envp[]) { > char *const execargv[] = { strdup(_PATH_BSHELL), strdup(NULL) }; > > execve(_PATH_BSHELL,execargv,envp); > > return 0; > } > % cc -Wwrite-strings -Wcast-qual exec.c > % cc -Wall exec.c You can/should probably skip the strdup(NULL), or ensure V in malloc.conf :). I assumed it was obvious that you could copy the data, but I believe the intent of the original question was to find an alternative. As far as I know there isn't one. A const is a const, except in C++. -- Chad David davidc@issci.ca www.FreeBSD.org davidc@freebsd.org ISSci Inc. Calgary, Alberta Canada