I ran into this question while typing man 2 open
. It says that there are two kinds of open, one with two args, and one with three! last time i checked we could not
No, they just used variadic function.
int open(const char * pathname, int flags, ...);
This makes the last argument mode
optional. The prototypes only show how the function should be used, not the actual interface.
Of course, unlike real overloading, the compiler cannot type-check the mode
argument, so the user have to be extra careful to ensure only 2 or 3 arguments are passed, and the 3rd argument must be a mode_t
.
BTW, if you check the man 2 open
for BSD (including OS X) it shows the correct prototype as above.