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 overload functions in C. How did they do this? did they write in C++?
int open(const char * pathname, int flags);
int open(const char * pathname, int flags, mode_t mode);