modified:   portability.h