util: trim() fix for UB on pointer arithmetic Follow-up fix on commit df4c0611366bf361fa263fbc57009cbe68456855 " While it is true reversing the condition solves a single-byte read at one before s, there is a second instance of UB. Having a pointer to one before an object is in of itself UB in C, it's on the side of language lawyering, but it's UB. I add here a quote from a C standard draft: > When an expression that has integer type is added to or subtracted > from a pointer, the result has the type of the pointer operand. > If both the pointer operand and the result point to elements of the > same array object, or one past the last element of the array object, > the evaluation shall not produce an overflow; otherwise, the > behavior is undefined. Taken from: http://www.iso-9899.info/n1570.html#6.5.6p8 " Thanks Guilherme Janczak <guilherme.janczak@yandex.com>
Makefile improvements - Respect system/port flags by default. - Be verbose and do not hide output. This makes it easier to debug a build. - Remove the "options" target. - Remove config.mk: just edit the Makefile or override flags if needed. - dist: no need to clean before packaging files. - dist: pipe directly to gzip without an intermediate tarball file. - Define and add a POSIX marker to the Makefile.
fix undefined behaviour of using isspace ctype function cast all ctype(3) functions argument to (unsigned char) to avoid UB POSIX says: "The c argument is an int, the value of which the application shall ensure is a character representable as an unsigned char or equal to the value of the macro EOF. If the argument has any other value, the behavior is undefined." Many libc cast implicitly the value, but NetBSD for example does not, which is probably the correct thing to interpret it.