On Bug #61176, Matt Fischer points out that QNX does not have the popular-but-non-standard header <sys/fcntl.h>, only the "official" POSIX <fcntl.h>. This broke libdbus builds in the embedded copy of sd-daemon.c (which we should probably get rid of, but that's not the point right now). Matt said he'd open a systemd bug, but I couldn't find one, so I'm opening this.
sd-daemon.c currently does this:
# include <linux/fcntl.h>
# include <sys/fcntl.h>
but if we used <fcntl.h> we shouldn't need the ugly conditional, unless there's some special reason why you prefer the OS-specific version - more contents or something?
libdbus already uses #include <fcntl.h> in its other Unix-specific files, so this is at least as portable as D-Bus - in particular, it compiles on Android. Given the sort of esoteric platforms I've heard about people putting D-Bus on, I think we can safely assume that <fcntl.h> is portable.
Fixed in http://cgit.freedesktop.org/systemd/systemd/commit/?id=abad76cc4.