On Thu, Aug 14, 2014 at 04:38:24PM -0500, Steven Degutis wrote: > Convenience link to the line: http://git.suckless.org/st/tree/st.c#n2315 > > Here, techo is calling ISCONTROL(c) where c is a 'char'. But > ISCONTROLC1 is always going to return false for a char.
This is not true, char can be signed or unsigned, it is implementation defined. > Perhaps it should test against ISCONTROLC0 instead? Or is this line > intended to use ISCONTROL for some reason? No, it must check that the character written is a control code, and it means check if the code is a C0 or C1 code. > For the record, I came across this while porting st to OS X using > native APIs (NSWindow, NSView, CoreText, etc). What processador do you use in your port? intel or ibm? There was a discussion in this list sometime ago about this topic, and I think this was the best solution (if someone can find the messages ...), but I agree that if char is signed then we have a problem. It is clear that c must be char, because tputc expects a char pointer and buf is also a char pointer. Maybe we should change the line to: if(ISCONTROL((uchar) c)) { /* control code */ Regards, -- Roberto E. Vargas Caballero