case '^':	*(ptr++) = '^';		break;
case '\\': *(ptr++) = '\\'; break;
_nc_trans_string(char *ptr){int	count = 0;int	number;int	i, c;chtype	ch, last_ch = '\0';bool	ignored = FALSE;	while ((ch = c = next_char()) != (chtype)separator && c != EOF) {	    if ((_nc_syntax == SYN_TERMCAP) && c == '\n')		break;	    if (ch == '^' && last_ch != '%') {		ch = c = next_char();		if (c == EOF)		    _nc_err_abort("Premature EOF");		if (! (is7bits(ch) && isprint(ch))) {		    _nc_warning("Illegal ^ character - %s",			_tracechar((unsigned char)ch));		}		if (ch == '?') {		    *(ptr++) = '\177';		} else {		    if ((ch &= 037) == 0)		        ch = 128;		    *(ptr++) = (char)(ch);		}	    }	    else if (ch == '\\') {		ch = c = next_char();		if (c == EOF)		    _nc_err_abort("Premature EOF");		if (ch >= '0'  &&  ch <= '7') {		    number = ch - '0';		    for (i=0; i < 2; i++) {			ch = c = next_char();			if (c == EOF)			    _nc_err_abort("Premature EOF");			if (c < '0'  ||  c > '7') {			    if (isdigit(c)) {				_nc_warning("Non-octal digit `%c' in \\ sequence", c);				/* allow the digit; it'll do less harm */			    } else {				push_back((char)c);				break;			    }			}			number = number * 8 + c - '0';		    }		    if (number == 0)			number = 0200;		    *(ptr++) = (char) number;		} else {		    switch (c) {			case 'E':			case 'e':	*(ptr++) = '\033';	break;			case 'a':	*(ptr++) = '\007';	break;			case 'l':			case 'n':	*(ptr++) = '\n';	break;			case 'r':	*(ptr++) = '\r';	break;			case 'b':	*(ptr++) = '\010';	break;			case 's':	*(ptr++) = ' ';		break;			case 'f':	*(ptr++) = '\014';	break;			case 't':	*(ptr++) = '\t';	break;			case '\\':	*(ptr++) = '\\';	break;			case '^':	*(ptr++) = '^';		break;			case ',':	*(ptr++) = ',';		break;			case ':':	*(ptr++) = ':';		break;			case '\n':			    continue;			default:			    _nc_warning("Illegal character %s in \\ sequence",				    _tracechar((unsigned char)ch));			    *(ptr++) = (char)ch;		    } /* endswitch (ch) */		} /* endelse (ch < '0' ||  ch > '7') */	    } /* end else if (ch == '\\') */	    else if (ch == '\n' && (_nc_syntax == SYN_TERMINFO)) {		/* newlines embedded in a terminfo string are ignored */		ignored = TRUE;	    } else {		*(ptr++) = (char)ch;	    }	    if (!ignored) {		last_ch = ch;		count ++;	    }	    ignored = FALSE;	    if (count > MAXCAPLEN)		_nc_warning("Very long string found.  Missing separator?");	} /* end while */	*ptr = '\0';	return(ch);}