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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vsprintf.c

?? LINUX1.0源代碼,代碼條理清晰
?? C
字號:
/*
 *  linux/kernel/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 <linux/string.h>
#include <linux/ctype.h>

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

	if (!base) {
		base = 10;
		if (*cp == '0') {
			base = 8;
			cp++;
			if ((*cp == 'x') && isxdigit(cp[1])) {
				cp++;
				base = 16;
			}
		}
	}
	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;
}

/* 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 SMALL	64		/* use 'abcdef' instead of 'ABCDEF' */

#define do_div(n,base) ({ \
int __res; \
__asm__("divl %4":"=a" (n),"=d" (__res):"0" (n),"1" (0),"r" (base)); \
__res; })

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

	if (type&SMALL) digits="0123456789abcdefghijklmnopqrstuvwxyz";
	if (type&LEFT) type &= ~ZEROPAD;
	if (base<2 || base>36)
		return 0;
	c = (type & ZEROPAD) ? '0' : ' ' ;
	if (type&SIGN && num<0) {
		sign='-';
		num = -num;
	} else
		sign=(type&PLUS) ? '+' : ((type&SPACE) ? ' ' : 0);
	if (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)
		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;
}

int vsprintf(char *buf, const char *fmt, va_list args)
{
	int len;
	int i;
	char * str;
	char *s;
	int *ip;

	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 == '*') {
			/* 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 == '*') {
				/* 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;
		}

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

		case 's':
			s = va_arg(args, char *);
			if (!s)
				s = "<NULL>";
			len = strlen(s);
			if (precision < 0)
				precision = len;
			else if (len > precision)
				len = precision;

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

		case 'o':
			str = number(str, va_arg(args, unsigned long), 8,
				field_width, precision, flags);
			break;

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

		case 'x':
			flags |= SMALL;
		case 'X':
			str = number(str, va_arg(args, unsigned long), 16,
				field_width, precision, flags);
			break;

		case 'd':
		case 'i':
			flags |= SIGN;
		case 'u':
			str = number(str, va_arg(args, unsigned long), 10,
				field_width, precision, flags);
			break;

		case 'n':
			ip = va_arg(args, int *);
			*ip = (str - buf);
			break;

		default:
			if (*fmt != '%')
				*str++ = '%';
			if (*fmt)
				*str++ = *fmt;
			else
				--fmt;
			break;
		}
	}
	*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;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人91porn| 99国产精品久久久久久久久久久| 激情亚洲综合在线| 97se亚洲国产综合在线| 欧美一区二区三区视频在线 | 成人性生交大合| 制服丝袜中文字幕亚洲| ●精品国产综合乱码久久久久| 美女一区二区三区| 欧美日韩中文国产| 亚洲欧美精品午睡沙发| 成人国产精品免费观看视频| 日韩精品在线网站| 视频一区二区三区入口| 欧洲人成人精品| 中文字幕一区二区三区四区不卡 | 麻豆中文一区二区| 欧美三级乱人伦电影| 亚洲欧美另类综合偷拍| 高清shemale亚洲人妖| 欧美变态tickle挠乳网站| 亚洲国产一二三| 91黄色小视频| 一区二区三区四区高清精品免费观看| 风间由美一区二区三区在线观看| 精品国产伦一区二区三区观看方式 | 欧美一区欧美二区| 日韩福利视频导航| 日韩欧美中文字幕公布| 日韩福利电影在线观看| 在线不卡中文字幕| 日韩高清在线不卡| 日韩一区国产二区欧美三区| 日本成人中文字幕| 日韩欧美国产高清| 国产一区二区三区黄视频| 亚洲精品一区在线观看| 韩国视频一区二区| 国产三区在线成人av| 国产在线视视频有精品| 久久精品免视看| 不卡的av在线播放| 亚洲女同女同女同女同女同69| 一本到高清视频免费精品| 亚洲欧美激情一区二区| 欧美日韩国产免费一区二区 | 国产成人av在线影院| 亚洲国产精品精华液2区45| 国产成人精品一区二| 国产精品欧美极品| 91免费观看在线| 午夜视频在线观看一区二区三区| 欧美三级乱人伦电影| 精油按摩中文字幕久久| 国产欧美日韩在线| 日本精品一级二级| 日本va欧美va精品| 久久久久久久国产精品影院| 色综合色综合色综合色综合色综合 | 亚洲国产精品成人综合 | 亚洲mv大片欧洲mv大片精品| 51午夜精品国产| 韩国欧美国产1区| 樱花影视一区二区| 日韩你懂的在线播放| 成人黄色网址在线观看| 丝袜亚洲另类欧美综合| 久久精品欧美日韩| 欧美日韩视频一区二区| 国产乱对白刺激视频不卡| 亚洲另类一区二区| 精品国产三级a在线观看| 成人av资源下载| 爽爽淫人综合网网站| 国产精品乱码久久久久久| 欧美日韩大陆在线| 成人午夜免费视频| 五月天一区二区三区| 欧美激情艳妇裸体舞| 91麻豆精品国产自产在线观看一区| 国产精品综合一区二区| 亚洲国产精品影院| 国产精品色在线观看| 日韩一区二区三| 欧美性大战xxxxx久久久| 国产成人啪免费观看软件| 亚洲高清免费在线| 日韩美女啊v在线免费观看| 欧美成人精品福利| 欧美日韩中文国产| 91污在线观看| 国产不卡在线播放| 狠狠色狠狠色综合| 午夜精品久久一牛影视| 亚洲伦在线观看| 国产精品视频免费| 久久人人97超碰com| 91精品国产高清一区二区三区 | 国产一区二区三区在线看麻豆| 亚洲成人一区在线| 亚洲一区二区四区蜜桃| 国产精品国产三级国产三级人妇 | 一区二区三区四区在线| 国产精品少妇自拍| 国产三区在线成人av| 久久久青草青青国产亚洲免观| 欧美一区二区精美| 91精品国产高清一区二区三区蜜臀| 欧美午夜寂寞影院| 在线观看欧美日本| 在线观看国产91| 91久久一区二区| 91女厕偷拍女厕偷拍高清| av网站一区二区三区| 成人不卡免费av| 成人av电影在线网| 91影院在线观看| 欧洲av在线精品| 欧美日韩国产美女| 日韩一级完整毛片| 精品乱人伦小说| 久久久久久久久免费| 国产欧美一区二区精品秋霞影院 | 久久综合资源网| 久久奇米777| 国产精品婷婷午夜在线观看| 国产精品久久久久7777按摩| 亚洲欧美影音先锋| 亚洲精品免费在线| 亚洲第一久久影院| 捆绑调教一区二区三区| 经典三级视频一区| 风间由美一区二区av101| eeuss影院一区二区三区| 欧洲激情一区二区| 欧美成人高清电影在线| 久久久三级国产网站| 亚洲色欲色欲www| 性久久久久久久久久久久| 久久精品72免费观看| 波多野结衣一区二区三区| 欧美自拍偷拍午夜视频| 日韩欧美亚洲一区二区| 国产欧美一区二区在线| 亚洲一区二区欧美| 国内精品久久久久影院薰衣草| 成人a区在线观看| 69堂成人精品免费视频| 欧美极品xxx| 石原莉奈在线亚洲二区| 国产精品69毛片高清亚洲| 91麻豆福利精品推荐| 精品日韩一区二区三区免费视频| 国产精品久久久久久久久免费相片| 亚洲国产精品久久久久婷婷884 | 中文字幕乱码久久午夜不卡| 亚洲伦理在线精品| 精品制服美女丁香| 色久综合一二码| 久久综合久久综合九色| 一区二区三区欧美视频| 国产一区欧美日韩| 欧美日韩精品一二三区| 日本一区二区视频在线| 美女在线观看视频一区二区| 色老汉av一区二区三区| 国产精品天天看| 久久99久久久欧美国产| 欧美人体做爰大胆视频| 中文字幕制服丝袜一区二区三区| 麻豆91精品91久久久的内涵| 日本丰满少妇一区二区三区| 国产欧美日韩精品在线| 日本大胆欧美人术艺术动态| 色哟哟亚洲精品| 日本一区二区免费在线 | 欧美大片一区二区三区| 亚洲自拍偷拍av| 91免费精品国自产拍在线不卡 | 欧美mv和日韩mv国产网站| 亚洲一二三区不卡| 色婷婷综合久久| 国产精品久久久久影视| 国产精品一区二区男女羞羞无遮挡| 91精选在线观看| 亚洲成人手机在线| 欧美亚洲综合久久| 亚洲精品一卡二卡| 91麻豆成人久久精品二区三区| 中文字幕乱码亚洲精品一区| 国产剧情av麻豆香蕉精品| 日韩欧美一级特黄在线播放| 日本麻豆一区二区三区视频| 欧美美女一区二区三区| 亚洲午夜精品一区二区三区他趣| 一本一本大道香蕉久在线精品 | 欧美日韩高清一区二区三区| 一区二区视频在线看| 色天天综合久久久久综合片| 日韩一区日韩二区|