p++;
p = memmove(q, p, parselleft);
preadbuffer(void){	char *p, *q;	int more;#ifndef SMALL	int something;#endif	char savec;	while (parsefile->strpush) {		if (			parsenleft == -1 && parsefile->strpush->ap &&			parsenextc[-1] != ' ' && parsenextc[-1] != '\t'		) {			return PEOA;		}		popstring();		if (--parsenleft >= 0)			return (*parsenextc++);	}	if (parsenleft == EOF_NLEFT || parsefile->buf == NULL)		return PEOF;	flushout(&output);#ifdef FLUSHERR	flushout(&errout);#endifagain:	if (parselleft <= 0) {		if ((parselleft = preadfd()) <= 0) {			parselleft = parsenleft = EOF_NLEFT;			return PEOF;		}	}	q = p = parsenextc;	/* delete nul characters */#ifndef SMALL	something = 0;#endif	for (more = 1; more;) {		switch (*p) {		case '\0':			p++;	/* Skip nul */			goto check;#ifndef SMALL		case '\t':		case ' ':			break;#endif		case '\n':			parsenleft = q - parsenextc;			more = 0; /* Stop processing here */			break;#ifndef SMALL		default:			something = 1;			break;#endif		}		*q++ = *p++;check:		if (--parselleft <= 0 && more) {			parsenleft = q - parsenextc - 1;			if (parsenleft < 0)				goto again;			more = 0;		}	}	savec = *q;	*q = '\0';#ifndef SMALL	if (parsefile->fd == 0 && hist && something) {		HistEvent he;		INTOFF;		history(hist, &he, whichprompt == 1? H_ENTER : H_APPEND,		    parsenextc);		INTON;	}#endif	if (vflag) {		out2str(parsenextc);#ifdef FLUSHERR		flushout(out2);#endif	}	*q = savec;	return *parsenextc++;}