return complete_command(word, dolist);
return (complete_command(word, dolist));
complete(el, ch)	EditLine *el;	int ch;{	static char word[FTPBUFLEN];	static int lastc_argc, lastc_argo;	struct cmd *c;	const LineInfo *lf;	int len, celems, dolist;	lf = el_line(el);	len = lf->lastchar - lf->buffer;	if (len >= sizeof(line))		return CC_ERROR;	strncpy(line, lf->buffer, len);	line[len] = '\0';	cursor_pos = line + (lf->cursor - lf->buffer);	lastc_argc = cursor_argc;	/* remember last cursor pos */	lastc_argo = cursor_argo;	makeargv();			/* build argc/argv of current line */	if (cursor_argo >= sizeof(word))		return CC_ERROR;	dolist = 0;			/* if cursor and word is same, list alternatives */	if (lastc_argc == cursor_argc && lastc_argo == cursor_argo	    && strncmp(word, margv[cursor_argc], cursor_argo) == 0)		dolist = 1;	else	    strncpy(word, margv[cursor_argc], cursor_argo);	word[cursor_argo] = '\0';	if (cursor_argc == 0)		return complete_command(word, dolist);	c = getcmd(margv[0]);	if (c == (struct cmd *)-1 || c == 0)		return CC_ERROR;	celems = strlen(c->c_complete);		/* check for 'continuation' completes (which are uppercase) */	if ((cursor_argc > celems) && (celems > 0)	    && isupper(c->c_complete[celems-1]))		cursor_argc = celems;	if (cursor_argc > celems)		return CC_ERROR;	switch (c->c_complete[cursor_argc - 1]) {		case 'l':			/* local complete */		case 'L':			return complete_local(word, dolist);		case 'r':			/* remote complete */		case 'R':			if (!connected) {				puts("\nMust be connected to complete");				return CC_REDISPLAY;			}			return complete_remote(word, dolist);		case 'c':			/* command complete */		case 'C':			return complete_command(word, dolist);		case 'n':			/* no complete */		default:			return CC_ERROR;	}	return CC_ERROR;}