From: Paul Tan Date: Wed, 03 Jun 2015 08:16:57 GMT Subject: Re: [PATCH/WIP 1/8] wrapper: implement xopen() Message-ID: In-Reply-To: <20150527215307.GC23259@peff.net> On Thu, May 28, 2015 at 5:53 AM, Jeff King wrote: > On Wed, May 27, 2015 at 09:03:47PM +0200, Torsten Bögershausen wrote: > >> The original open can take 2 or 3 parameters, how about this: >> int xopen(const char *path, int oflag, ... ) >> { >> va_list params; >> int mode; >> int fd; >> >> va_start(params, oflag); >> mode = va_arg(params, int); >> va_end(params); >> >> fd = open(path, oflag, mode); > > Don't you need a conditional on pulling the mode arg off the stack > (i.e., if O_CREAT is in the flags)? Yeah, we do, as va_arg()'s behavior is undefined if we do not have the next argument. The POSIX spec[1] only mentions O_CREAT as requiring the extra argument, so I guess we'll only need to check for that. [1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html Thanks, Paul