if (debug) log_d("D getline");
static char *getline(struct pool *p){	char *s;	char *olds, *sp, *end;	int f;	end = p->end;	s = p->start;	if (s >= end)		return 0;	olds = s;	sp = s;	f = 0;	while (s < end) {		switch (*s++) {		case '\n':			if (s == end || (*s != ' ' && *s != '\t')) {				if (f)					*sp = 0;				else					s[-1] = 0;				p->start = s;				return olds;			}		case '\r':		case '\t':			if (f == 0) {				f = 1;				sp = s - 1;			}			s[-1] = ' ';			break;		default:			f = 0;			break;		}	}	log_d("getline: fallen off the end");	return 0;}