>>that if write(2) sees a zero length argument, it should consider that a >>nop and return. But then it seems that that would break some weird >>semantic somewhere (``Any write will update a timestamp; except for >>zero length writes, which are ignored.'' ``Dude, that's broken.'') it isn't only the possible effect on time stamps; i think it should do a write 0 because it's what you said to do. to be fair, it's disguised by print, but even so, if i wanted nop() i'd use ; or void nop(void){} but i wouldn't call write() or even print. i'd call write() when i wanted to write, and i prefer systems that do what i tell it, so that if i say `write 0 bytes' i expect it to do that, rather than adding yet more special cases to remember. the effect of writing 0 bytes is determined by the device, but that's true of writing 1 byte or many, so there's no difference there. on the other hand, i'd probably write if(*str) print("%s", str); if that's what i wanted.