_doprnt_ansi(register const char *fmt, va_list args, FILE *stream){	int		length;	int		prec;	boolean_t	ladjust;	char		padc;	long		n;	unsigned long	u;	int		plus_sign;	int		sign_char;	boolean_t	altfmt;	int		base;	int		size;	unsigned char	char_buf[2];	char_buf[1] = '\0';	while (*fmt != '\0') {	    if (*fmt != '%') {		putc(*fmt++, stream);		continue;	    }	    fmt++;	    length = 0;	    prec = -1;	    ladjust = FALSE;	    padc = ' ';	    plus_sign = 0;	    sign_char = 0;	    altfmt = FALSE;	    while (TRUE) {		if (*fmt == '#') {		    altfmt = TRUE;		    fmt++;		}		else if (*fmt == '-') {		    ladjust = TRUE;		    fmt++;		}		else if (*fmt == '+') {		    plus_sign = '+';		    fmt++;		}		else if (*fmt == ' ') {		    if (plus_sign == 0)			plus_sign = ' ';		    fmt++;		}		else		    break;	    }	    if (*fmt == '0') {		padc = '0';		fmt++;	    }	    if (isdigit(*fmt)) {		while(isdigit(*fmt))		    length = 10 * length + Ctod(*fmt++);	    }	    else if (*fmt == '*') {		length = va_arg(args, int);		fmt++;		if (length < 0) {		    ladjust = !ladjust;		    length = -length;		}	    }	    if (*fmt == '.') {		prec = 0;		fmt++;		if (isdigit(*fmt)) {		    prec = 0;		    while(isdigit(*fmt))			prec = 10 * prec + Ctod(*fmt++);		}		else if (*fmt == '*') {		    prec = va_arg(args, int);		    fmt++;		}	    }	    if (*fmt == 'l' || *fmt == 'h')		size = *(fmt++) == 'l' ? LONG : SHORT;	    else		size = INT;	    switch(*fmt) {		case 'c':		{		    register const char *p;		    register const char *p2;		    char_buf[0] = va_arg(args, int);		    p = char_buf;		    prec = 1;		    goto put_string;		case 's':		    if (prec == -1)			prec = INT_MAX;		    p = va_arg(args, char *);		    if (p == (const char *)0)			p = "";		put_string:		    if (length > 0 && !ladjust) {			n = 0;			p2 = p;			for (; *p != '\0' && n < prec; p++)			    n++;			p = p2;			while (n < length) {			    putc(padc, stream);			    n++;			}		    }		    n = 0;		    while (*p != '\0') {			if (++n > prec)			    break;			putc(*p++, stream);		    }		    if (n < length && ladjust) {			while (n < length) {			    putc(' ', stream);			    n++;			}		    }		    break;		}		case 'o':		    base = 8;		    goto print_unsigned;		case 'i':		case 'd':		    base = 10;		    goto print_signed;		case 'u':		    base = 10;		    goto print_unsigned;		case 'x':		case 'X':		    base = 16;		    goto print_unsigned;				case 'p':		    base = 16;		    altfmt = TRUE;		    u = (unsigned long) va_arg(args, void *);		    goto print_num;		print_signed:		    if (size == INT)			n = va_arg(args, int);		    else if (size == LONG)		    	n = va_arg(args, long);		    else			n = (short) va_arg(args, int);		    if (n >= 0) {			u = n;			sign_char = plus_sign;		    }		    else {			u = -n;			sign_char = '-';		    }		    goto print_num;		print_unsigned:		    if (size == INT)		    	u = va_arg(args, unsigned int);		    else if (size == LONG)			u = va_arg(args, unsigned long);		    else			u = (unsigned short) va_arg(args, unsigned int);		    goto print_num;		print_num:		{		    char	buf[MAXBUF];	/* build number here */		    register char *	p = &buf[MAXBUF-1];		    static const char digits[] = "0123456789abcdef";		    const char *prefix = 0;		    if (u != 0 && altfmt) {			if (base == 8)			    prefix = "0";			else if (base == 16)			    prefix = "0x";		    }		    do {			*p-- = digits[u % base];			u /= base;		    } while (u != 0);		    length -= (&buf[MAXBUF-1] - p);		    if (sign_char)			length--;		    if (prefix)			length -= strlen(prefix);		    if (padc == ' ' && !ladjust) {			/* blank padding goes before prefix */			while (--length >= 0)			    putc(' ', stream);		    }		    if (sign_char)			putc(sign_char, stream);		    if (prefix)			while (*prefix)			    putc(*prefix++, stream);		    if (padc == '0') {			/* zero padding goes after sign and prefix */			while (--length >= 0)			    putc('0', stream);		    }		    while (++p != &buf[MAXBUF])			putc(*p, stream);		    if (ladjust) {			while (--length >= 0)			    putc(' ', stream);		    }		    break;		}		case '%':		    putc('%', stream);		    break;		case '\0':		    fmt--;		    break;		default:		    putc(*fmt, stream);	    }	fmt++;	}}
964	/local/tlutelli/issta_data/temp/c/2005_temp/2005/964/e7762e05b0ac0cca1c095072d36a4d5c3ffb2b39/vprint.c/clean/vprint.c