/* Get next non-ignored character, normalised: ASCII letters are converted to lowercase control characters, space, '-', '_', '.', '/', '+' and ':' are ignored A terminating zero is returned as 0.  */
static int next_char(const char **ps, const char *limit)
/* Get next non-ignored character, normalised: ASCII letters are converted to lowercase control characters, space, '-', '_', '.', '/', '+' and ':' are ignored A terminating zero is returned as 0.  */
static int next_char(const char **ps, const char *limit)
{
	for (;;) {
		int c;
		if (*ps == limit) {
			return 0;
		}
		c = *(*ps) ++;
		if (c == 0) {
			return 0;
		}
		if (c >= 'A' && c <= 'Z') {
			c += 'a' - 'A';
		}
		if (!is_ign(c)) {
			return c;
		}
	}
}