It's probably best to provide dumb wrappers.
I agree, and both Olin and I have adhered to this principle within reason, only removing obvious footguns like the errno variable.
> I'm certainly
> being tempted to crib more than I should from the POSIX document,
Crib away, that's what it's for. I wouldn't worry about copyright legalisms.
* Call count = getgroups(0, NULL) to get the actual count.
* Then call getgroups(count, gid_array);
I prefer this strategy.
> Plus an inability to pass an array of two timespec structs to set file
> times to nanosecond precision, the argument type (array (struct
> timespec) 2) doesn't do the right thing:
Probably just adding a type two-timespecs would do it.