Re: [PATCH/WIP 1/8] wrapper: implement xopen()
- From
Paul Tan <pyokagan@gmail.com>
- Date
- Jun 3, 2015, 08:16 UTC
- Message-ID
- <CACRoPnSk7vgFwTazEz3yytsdBC0CT+Yjs3JZ_oX_kuR2yyZhRA@mail.gmail.com>
- In-Reply-To
- <20150527215307.GC23259@peff.net>
On Thu, May 28, 2015 at 5:53 AM, Jeff King <peff@peff.net> wrote:
Show 17 quoted lines
> 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