/usr/include/baudboy.h should include fcntl.h because it uses open(). If you don't first include fcntl.h, open() will get an implicit definition (which is usually bad and won't compile). I think this hasn't been noticed because current baudboy.h users include fcntl.h themselves first. I'm building ckermit with baudboy.h and it doesn't include fcntl.h, so it won't compile.