need errno.h. other than that, its portable