亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vsprintf.c

?? YL9200開發板的測試代碼,詳細請下載后細看
?? C
字號:
/*
 *  linux/lib/vsprintf.c
 *
 *  Copyright (C) 1991, 1992  Linus Torvalds
 */

/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
/*
 * Wirzenius wrote this portably, Torvalds fucked it up :-)
 */

#include <stdarg.h>
//#include <linux/types.h>
#include <string.h>
#include <ctype.h>

unsigned long simple_strtoul( const char* cp , char** endp , unsigned int base )
{
	unsigned long result = 0,value;

	if ( *cp == '0' )
	{
		cp++;
		if ( ( *cp == 'x' ) && isxdigit( cp[1] ) )
		{
			base = 16;
			cp++;
		}
		if ( !base )
		{
			base = 8;
		}
	}
	if ( !base )
	{
		base = 10;
	}
	while ( isxdigit( *cp ) &&
		( value = isdigit( *cp ) ? *cp - '0' : ( islower( *cp ) ? toupper( *cp ) : *cp ) - 'A' + 10 ) < base )
	{
		result = result * base + value;
		cp++;
	}
	if ( endp )
		*endp = ( char * ) cp;
	return result;
}

long simple_strtol( const char* cp , char** endp , unsigned int base )
{
	if ( *cp == '-' )
		return -simple_strtoul( cp + 1 , endp , base );
	return simple_strtoul( cp , endp , base );
}

/* we use this so that we can do without the ctype library */
#define is_digit(c)	((c) >= '0' && (c) <= '9')

static int skip_atoi( const char** s )
{
	int i = 0;

	while ( is_digit( **s ) )
		i = i * 10 + *( ( *s )++ ) - '0';
	return i;
}

#define ZEROPAD	1		/* pad with zero */
#define SIGN	2		/* unsigned/signed long */
#define PLUS	4		/* show plus */
#define SPACE	8		/* space if plus */
#define LEFT	16		/* left justified */
#define SPECIAL	32		/* 0x */
#define LARGE	64		/* use 'ABCDEF' instead of 'abcdef' */

#define do_div(n,base) ({ \
			int __res; \
			__res = ((unsigned long) n) % (unsigned) base; \
			n = ((unsigned long) n) / (unsigned) base; \
			__res; })

static char* number( char* str , long num , int base , int size , int precision , int type )
{
	char c, sign, tmp[66];
	const char* digits = "0123456789abcdefghijklmnopqrstuvwxyz";
	int i;

	if ( type & LARGE )
		digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	if ( type & LEFT )
		type &= ~ZEROPAD;
	if ( base <2 || base> 36 )
		return 0;
	c = ( type & ZEROPAD ) ? '0' : ' ';
	sign = 0;
	if ( type & SIGN )
	{
		if ( num < 0 )
		{
			sign = '-';
			num = -num;
			size--;
		}
		else if ( type & PLUS )
		{
			sign = '+';
			size--;
		}
		else if ( type & SPACE )
		{
			sign = ' ';
			size--;
		}
	}
	if ( type & SPECIAL )
	{
		if ( base == 16 )
			size -= 2;
		else if ( base == 8 )
			size--;
	}
	i = 0;
	if ( num == 0 )
		tmp[i++] = '0';
	else
		while ( num != 0 )
		{
			int __res;
			__res = ( ( unsigned long ) num ) % ( unsigned ) base;
			num = ( ( unsigned long ) num ) / ( unsigned ) base;
			tmp[i++] = digits[__res];
			//			tmp[i++] = digits[do_div(num,base)];
		}

	if ( i > precision )
		precision = i;
	size -= precision;
	if ( !( type & ( ZEROPAD + LEFT ) ) )
		while ( size-- > 0 )
			*str++ = ' ';
	if ( sign )
		*str++ = sign;
	if ( type & SPECIAL )
	{
		if ( base == 8 )
			*str++ = '0';
		else if ( base == 16 )
		{
			*str++ = '0';
			*str++ = digits[33];
		}
	}
	if ( !( type & LEFT ) )
		while ( size-- > 0 )
			*str++ = c;
	while ( i < precision-- )
		*str++ = '0';
	while ( i-- > 0 )
		*str++ = tmp[i];
	while ( size-- > 0 )
		*str++ = ' ';
	return str;
}

/* Forward decl. needed for IP address printing stuff... */
int sprintf( char* buf , const char* fmt , ... );

int vsprintf( char* buf , const char* fmt , va_list args )
{
	int len;
	unsigned long num;
	int i, base;
	char* str;
	const char* s;

	int flags;		/* flags to number() */

	int field_width;	/* width of output field */
	int precision;		/* min. # of digits for integers; max
						 number of chars for from string */
	int qualifier;		/* 'h', 'l', or 'L' for integer fields */

	for ( str = buf ; *fmt ; ++fmt )
	{
		if ( *fmt != '%' )
		{
			*str++ = *fmt;
			continue;
		}

		/* process flags */
		flags = 0;
		repeat:
		++fmt;		/* this also skips first '%' */
		switch ( *fmt )
		{
			case '-':
				flags |= LEFT; goto repeat;
			case '+':
				flags |= PLUS; goto repeat;
			case ' ':
				flags |= SPACE; goto repeat;
			case '#':
				flags |= SPECIAL; goto repeat;
			case '0':
				flags |= ZEROPAD; goto repeat;
		}

		/* get field width */
		field_width = -1;
		if ( is_digit( *fmt ) )
			field_width = skip_atoi( &fmt );
		else if ( *fmt == '*' )
		{
			++fmt;
			/* it's the next argument */
			field_width = va_arg( args , int );
			if ( field_width < 0 )
			{
				field_width = -field_width;
				flags |= LEFT;
			}
		}

		/* get the precision */
		precision = -1;
		if ( *fmt == '.' )
		{
			++fmt;
			if ( is_digit( *fmt ) )
				precision = skip_atoi( &fmt );
			else if ( *fmt == '*' )
			{
				++fmt;
				/* it's the next argument */
				precision = va_arg( args , int );
			}
			if ( precision < 0 )
				precision = 0;
		}

		/* get the conversion qualifier */
		qualifier = -1;
		if ( *fmt == 'h' || *fmt == 'l' || *fmt == 'L' )
		{
			qualifier = *fmt;
			++fmt;
		}

		/* default base */
		base = 10;

		switch ( *fmt )
		{
			case 'c':
				if ( !( flags & LEFT ) )
					while ( --field_width > 0 )
						*str++ = ' ';
				*str++ = ( unsigned char ) va_arg( args , int );
				while ( --field_width > 0 )
					*str++ = ' ';
				continue;

			case 's':
				s = va_arg( args , char * );
				if ( !s )
					s = "<NULL>";

				len = strnlen( s , precision );

				if ( !( flags & LEFT ) )
					while ( len < field_width-- )
						*str++ = ' ';
				for ( i = 0; i < len; ++i )
					*str++ = *s++;
				while ( len < field_width-- )
					*str++ = ' ';
				continue;

			case 'p':
				if ( field_width == -1 )
				{
					field_width = 2 * sizeof( void * );
					flags |= ZEROPAD;
				}
				str = number( str , ( unsigned long ) va_arg( args , void * ) , 16 , field_width , precision , flags );
				continue;


			case 'n':
				if ( qualifier == 'l' )
				{
					long* ip = va_arg( args , long* );
					*ip = ( str - buf );
				}
				else
				{
					int* ip = va_arg( args , int* );
					*ip = ( str - buf );
				}
				continue;

			case '%':
				*str++ = '%';
				continue;

				/* integer number formats - set up the flags and "break" */
			case 'o':
				base = 8;
				break;

			case 'X':
				flags |= LARGE;
			case 'x':
				base = 16;
				break;

			case 'd':
			case 'i':
				flags |= SIGN;
			case 'u':
				break;

			default:
				*str++ = '%';
				if ( *fmt )
					*str++ = *fmt;
				else
					--fmt;
				continue;
		}
		if ( qualifier == 'l' )
			num = va_arg( args , unsigned long );
		else if ( qualifier == 'h' )
		{
			num = ( unsigned short ) va_arg( args , int );
			if ( flags & SIGN )
				num = ( short ) num;
		}
		else if ( flags & SIGN )
			num = va_arg( args , int );
		else
			num = va_arg( args , unsigned int );
		str = number( str , num , base , field_width , precision , flags );
	}
	*str = '\0';
	return str - buf;
}

int sprintf( char* buf , const char* fmt , ... )
{
	va_list args;
	int i;

	va_start( args , fmt );
	i = vsprintf( buf , fmt , args );
	va_end( args );
	return i;
}

/*
void panic(const char *fmt, ...)
{
	va_list	args;
	va_start(args, fmt);
	printf(fmt);
	putc('\n');
	va_end(args);
#if defined (CONFIG_PANIC_HANG)
	hang();
#else
	udelay (100000);	// allow messages to go out
	do_reset (NULL, 0, 0, NULL);
#endif
}*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久综合| 性久久久久久久久久久久| 国产高清在线观看免费不卡| 欧美一级欧美三级| 奇米影视在线99精品| 日韩一级在线观看| 国产精品一卡二| 中文字幕一区免费在线观看| 91老师国产黑色丝袜在线| 一区二区日韩av| 欧美一级夜夜爽| 成人一级视频在线观看| 综合久久给合久久狠狠狠97色| 色伊人久久综合中文字幕| 偷拍日韩校园综合在线| 欧美一区二区久久久| 国产精品系列在线观看| 一区二区三区中文在线观看| 欧美视频一区二| 国产呦萝稀缺另类资源| 亚洲欧洲成人av每日更新| 欧美日韩综合色| 精品一二线国产| 自拍偷拍国产亚洲| 欧美肥胖老妇做爰| 成人性生交大片免费看在线播放 | 欧美系列日韩一区| 日本欧洲一区二区| 欧美国产欧美综合| 欧美日韩国产片| 国产成人综合亚洲91猫咪| 一区二区欧美精品| 久久精品在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 男女激情视频一区| 亚洲美女淫视频| 精品91自产拍在线观看一区| 91麻豆福利精品推荐| 精品在线播放午夜| 亚洲一区在线观看免费| 久久综合给合久久狠狠狠97色69| 色视频成人在线观看免| 国产精品996| 日韩中文字幕区一区有砖一区| 欧美韩国一区二区| 日韩三级伦理片妻子的秘密按摩| 91影视在线播放| 国产精品亚洲第一| 免费成人性网站| 依依成人综合视频| 中文字幕制服丝袜一区二区三区 | 韩国av一区二区| 亚洲午夜日本在线观看| 国产精品久久影院| 久久综合视频网| 欧美日韩成人综合在线一区二区| 99久久免费视频.com| 国产一区二区剧情av在线| 日韩精品乱码av一区二区| 亚洲精品一二三| 亚洲日本一区二区三区| 日本一区二区三区视频视频| 精品不卡在线视频| 日韩你懂的在线播放| 欧美精品丝袜久久久中文字幕| 一本一道久久a久久精品| 成a人片亚洲日本久久| 丁香天五香天堂综合| 国产精品一区一区| 国产激情一区二区三区四区| 精品一区二区久久| 国产一区二区三区免费| 国产综合色精品一区二区三区| 青青草91视频| 久久国产免费看| 国产在线播放一区三区四| 久久精品av麻豆的观看方式| 久久国产精品99久久久久久老狼| 人妖欧美一区二区| 免费欧美在线视频| 老司机午夜精品99久久| 蜜臀av一区二区在线观看| 日本中文字幕一区二区视频 | 9色porny自拍视频一区二区| 成人高清av在线| 成年人网站91| 在线观看网站黄不卡| 欧美色中文字幕| 欧美日韩国产美| 91精品国产福利在线观看| 欧美一级欧美一级在线播放| 精品美女在线观看| 国产日韩综合av| 亚洲日本青草视频在线怡红院| 樱桃国产成人精品视频| 亚洲成人综合在线| 久久精品72免费观看| 国产99久久久国产精品潘金网站| 99久久精品免费看国产免费软件| 91麻豆精品视频| 欧美日本精品一区二区三区| 日韩一区二区视频| 国产日韩欧美麻豆| 亚洲欧美另类久久久精品 | 亚洲女与黑人做爰| 亚洲成人精品一区| 狠狠色丁香久久婷婷综| av在线一区二区| 在线不卡一区二区| 国产亚洲一区二区三区四区| 亚洲另类春色校园小说| 奇米影视一区二区三区小说| 成人高清在线视频| 欧美精品aⅴ在线视频| 久久精品一区四区| 亚洲va欧美va国产va天堂影院| 国产资源精品在线观看| 色悠悠亚洲一区二区| 日韩欧美一级二级| 亚洲靠逼com| 久久99精品久久久久久动态图 | 欧美激情一区二区三区蜜桃视频| 亚洲日本在线看| 久久成人久久鬼色| 在线亚洲精品福利网址导航| 精品蜜桃在线看| 亚洲一区二区精品视频| 国产成人亚洲精品狼色在线| 欧美视频一区二区在线观看| 国产精品乱码一区二三区小蝌蚪| 偷拍一区二区三区四区| av不卡免费电影| 久久综合久久综合久久| 午夜精品在线看| 97成人超碰视| 久久精品欧美日韩精品| 人人精品人人爱| 欧美日韩一本到| 亚洲日本va午夜在线影院| 黑人巨大精品欧美黑白配亚洲| 欧美午夜不卡在线观看免费| 国产精品国产三级国产aⅴ中文 | 亚洲一区二区三区四区的| 国产精品中文欧美| 正在播放一区二区| 亚洲影院在线观看| 成人av电影在线播放| 国产欧美日产一区| 国产一区二区在线视频| 91精品国产一区二区三区 | 制服丝袜成人动漫| 亚洲制服丝袜一区| 色综合天天综合网国产成人综合天 | 九色综合狠狠综合久久| 欧美日韩亚洲综合| 一区二区三区四区激情| av男人天堂一区| 国产精品三级视频| 国产成+人+日韩+欧美+亚洲| 精品国产髙清在线看国产毛片| 日韩影院在线观看| 欧美乱妇23p| 视频在线在亚洲| 欧美日韩在线直播| 午夜视频在线观看一区二区三区 | 亚洲成av人综合在线观看| 色综合天天综合| 亚洲天堂成人网| 色系网站成人免费| 一区二区高清视频在线观看| 色综合一区二区| 亚洲精品水蜜桃| 欧日韩精品视频| 亚洲制服丝袜av| 欧美精品 日韩| 秋霞成人午夜伦在线观看| 日韩欧美区一区二| 激情久久五月天| 国产日韩欧美高清在线| 成人开心网精品视频| 亚洲三级理论片| 欧美日产国产精品| 秋霞午夜鲁丝一区二区老狼| 久久久久久久综合| 波多野洁衣一区| 夜夜嗨av一区二区三区| 88在线观看91蜜桃国自产| 美日韩一区二区| 国产女人水真多18毛片18精品视频 | 成人欧美一区二区三区1314| 91黄色在线观看| 日韩影院精彩在线| 26uuu精品一区二区| 成人91在线观看| 天天综合天天做天天综合| 欧美成人aa大片| 97久久精品人人爽人人爽蜜臀| 亚洲成人手机在线| 精品国产乱码久久| 91麻豆成人久久精品二区三区|