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

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

?? snprintf.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright Patrick Powell 1995 * This code is based on code written by Patrick Powell (papowell@astart.com) * It may be used for any purpose as long as this notice remains intact * on all source code distributions *//************************************************************** * Original: * Patrick Powell Tue Apr 11 09:48:21 PDT 1995 * A bombproof version of doprnt (dopr) included. * Sigh.  This sort of thing is always nasty do deal with.  Note that * the version here does not include floating point... * * snprintf() is used instead of sprintf() as it does limit checks * for string length.  This covers a nasty loophole. * * The other functions are there to prevent NULL pointers from * causing nast effects. * * More Recently: *  Brandon Long <blong@fiction.net> 9/15/96 for mutt 0.43 *  This was ugly.  It is still ugly.  I opted out of floating point *  numbers, but the formatter understands just about everything *  from the normal C string format, at least as far as I can tell from *  the Solaris 2.5 printf(3S) man page. * *  Brandon Long <blong@fiction.net> 10/22/97 for mutt 0.87.1 *    Ok, added some minimal floating point support, which means this *    probably requires libm on most operating systems.  Don't yet *    support the exponent (e,E) and sigfig (g,G).  Also, fmtint() *    was pretty badly broken, it just wasn't being exercised in ways *    which showed it, so that's been fixed.  Also, formated the code *    to mutt conventions, and removed dead code left over from the *    original.  Also, there is now a builtin-test, just compile with: *           gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm *    and run snprintf for results. *  *  Thomas Roessler <roessler@guug.de> 01/27/98 for mutt 0.89i *    The PGP code was using unsigned hexadecimal formats.  *    Unfortunately, unsigned formats simply didn't work. * *  Michael Elkins <me@cs.hmc.edu> 03/05/98 for mutt 0.90.8 *    The original code assumed that both snprintf() and vsnprintf() were *    missing.  Some systems only have snprintf() but not vsnprintf(), so *    the code is now broken down under HAVE_SNPRINTF and HAVE_VSNPRINTF. * *  Andrew Tridgell (tridge@samba.org) Oct 1998 *    fixed handling of %.0f *    added test for HAVE_LONG_DOUBLE * * tridge@samba.org, idra@samba.org, April 2001 *    got rid of fcvt code (twas buggy and made testing harder) *    added C99 semantics * * HT authors *    * ht_snprintf/ht_vsnprintf return number of characters actually *      written instead of the number of characters that would *      have been written. *    * added '%y' to allow object output using Object's toString() method. *    * added '%q[dioux]' for formatting qwords. *    * added '%b' for formatting in binary notation. **************************************************************/#include <cctype>#include <cstring>#include <cstdlib>#include <cstdio>#include <cstdarg>#include <sys/types.h>#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "io/types.h"#include "data.h"#ifdef HAVE_CONFIG_H#include "config.h"#endif#ifndef MIN#define MIN(a, b) ((a) < (b) ? (a) : (b))#endif#ifndef MAX#define MAX(a, b) ((a) > (b) ? (a) : (b))#endif#ifdef HAVE_LONG_DOUBLE#define LDOUBLE long double#else#define LDOUBLE double#endif#ifdef HAVE_LONG_LONG#define LLONG long long#else#define LLONG long#endifstatic size_t dopr(char *buffer, size_t maxlen, const char *format, 			    va_list args);static void fmtstr(char *buffer, size_t *currlen, size_t maxlen,				const char *value, int flags, int min, int max);static void fmtint(char *buffer, size_t *currlen, size_t maxlen,				long value, int base, int min, int max, int flags);static void fmtqword(char *buffer, size_t *currlen, size_t maxlen,				sint64 value, int base, int min, int max, int flags);static void fmtfp(char *buffer, size_t *currlen, size_t maxlen,			    LDOUBLE fvalue, int min, int max, int flags);static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c);/* * dopr(): poor man's version of doprintf *//* format read states */#define DP_S_DEFAULT 0#define DP_S_FLAGS   1#define DP_S_MIN     2#define DP_S_DOT     3#define DP_S_MAX     4#define DP_S_MOD     5#define DP_S_CONV    6#define DP_S_DONE    7/* format flags - Bits */#define DP_F_MINUS      (1 << 0)#define DP_F_PLUS       (1 << 1)#define DP_F_SPACE      (1 << 2)#define DP_F_NUM        (1 << 3)#define DP_F_ZERO       (1 << 4)#define DP_F_UP         (1 << 5)#define DP_F_UNSIGNED   (1 << 6)/* Conversion Flags */#define DP_C_SHORT   1#define DP_C_LONG    2#define DP_C_LDOUBLE 3#define DP_C_LLONG   4#define DP_C_QWORD   5#define char_to_int(p) ((p)- '0')#ifndef MAX#define MAX(p,q) (((p) >= (q)) ? (p) : (q))#endifstatic size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args){	char ch;	LLONG value;	LDOUBLE fvalue;	const char *strvalue;	int min;	int max;	int state;	int flags;	int cflags;	size_t currlen;	state = DP_S_DEFAULT;	currlen = flags = cflags = min = 0;	max = -1;	ch = *format++;	while (state != DP_S_DONE) {		if (ch == '\0') state = DP_S_DONE;		switch(state) {			case DP_S_DEFAULT:				if (ch == '%') {					state = DP_S_FLAGS;				} else {					dopr_outch(buffer, &currlen, maxlen, ch);				}				ch = *format++;				break;			case DP_S_FLAGS:				switch (ch) {					case '-':						flags |= DP_F_MINUS;						ch = *format++;						break;					case '+':						flags |= DP_F_PLUS;						ch = *format++;						break;					case ' ':						flags |= DP_F_SPACE;						ch = *format++;						break;					case '#':						flags |= DP_F_NUM;						ch = *format++;						break;					case '0':						flags |= DP_F_ZERO;						ch = *format++;						break;					default:						state = DP_S_MIN;						break;				}				break;			case DP_S_MIN:				if (isdigit((unsigned char)ch)) {					min = 10*min + char_to_int (ch);					ch = *format++;				} else if (ch == '*') {					min = va_arg (args, int);					ch = *format++;					state = DP_S_DOT;				} else {					state = DP_S_DOT;				}				break;			case DP_S_DOT:				if (ch == '.') {					state = DP_S_MAX;					ch = *format++;				} else {					state = DP_S_MOD;				}				break;			case DP_S_MAX:				if (isdigit((unsigned char)ch)) {					if (max < 0) max = 0;					max = 10*max + char_to_int (ch);					ch = *format++;				} else if (ch == '*') {					max = va_arg (args, int);					ch = *format++;					state = DP_S_MOD;				} else {					state = DP_S_MOD;				}				break;			case DP_S_MOD:				switch (ch) {					case 'h':						cflags = DP_C_SHORT;						ch = *format++;						break;					case 'l':						cflags = DP_C_LONG;						ch = *format++;						if (ch == 'l') {        /* It's a long long */							cflags = DP_C_LLONG;							ch = *format++;						}						break;					case 'L':						cflags = DP_C_LDOUBLE;						ch = *format++;						break;					case 'q':						cflags = DP_C_QWORD;						ch = *format++;						break;					default:					break;				}				state = DP_S_CONV;				break;			case DP_S_CONV:				switch (ch) {					case 'b':						flags |= DP_F_UNSIGNED;						if (cflags == DP_C_SHORT) {							value = va_arg (args, unsigned int);						} else if (cflags == DP_C_LONG) {							value = (long)va_arg (args, unsigned long int);						} else if (cflags == DP_C_LLONG) {							value = (LLONG)va_arg (args, unsigned LLONG);						} else if (cflags == DP_C_QWORD) {							sint64 q = va_arg (args, sint64);							fmtqword(buffer, &currlen, maxlen, q, 2, min, max, flags);							break;						} else {						   value = (long)va_arg (args, unsigned int);						}						fmtint (buffer, &currlen, maxlen, value, 2, min, max, flags);						break;					case 'd':					case 'i':						if (cflags == DP_C_SHORT) {							value = va_arg (args, int);						} else if (cflags == DP_C_LONG) {							value = va_arg (args, long int);						} else if (cflags == DP_C_LLONG) {							value = va_arg (args, LLONG);						} else if (cflags == DP_C_QWORD) {							sint64 q = va_arg (args, sint64);							fmtqword(buffer, &currlen, maxlen, q, 10, min, max, flags);							break;						} else {							value = va_arg (args, int);						}						fmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);						break;					case 'o':						flags |= DP_F_UNSIGNED;						if (cflags == DP_C_SHORT) {							value = va_arg (args, unsigned int);						} else if (cflags == DP_C_LONG) {							value = (long)va_arg (args, unsigned long int);						} else if (cflags == DP_C_LLONG) {							value = (long)va_arg (args, unsigned LLONG);						} else if (cflags == DP_C_QWORD) {							sint64 q = va_arg (args, sint64);							fmtqword(buffer, &currlen, maxlen, q, 8, min, max, flags);							break;						} else {							value = (long)va_arg (args, unsigned int);						}						fmtint (buffer, &currlen, maxlen, value, 8, min, max, flags);						break;					case 'u':						flags |= DP_F_UNSIGNED;						if (cflags == DP_C_SHORT) {							value = va_arg (args, unsigned int);						} else if (cflags == DP_C_LONG) {							value = (long)va_arg (args, unsigned long int);						} else if (cflags == DP_C_LLONG) {							value = (LLONG)va_arg (args, unsigned LLONG);						} else if (cflags == DP_C_QWORD) {							sint64 q = va_arg (args, sint64);							fmtqword(buffer, &currlen, maxlen, q, 10, min, max, flags);							break;						} else {							value = (long)va_arg (args, unsigned int);						}						fmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);						break;					case 'X':						flags |= DP_F_UP;					case 'x':						flags |= DP_F_UNSIGNED;						if (cflags == DP_C_SHORT) {							value = va_arg (args, unsigned int);						} else if (cflags == DP_C_LONG) {							value = (long)va_arg (args, unsigned long int);						} else if (cflags == DP_C_LLONG) {							value = (LLONG)va_arg (args, unsigned LLONG);						} else if (cflags == DP_C_QWORD) {							sint64 q = va_arg (args, sint64);							fmtqword(buffer, &currlen, maxlen, q, 16, min, max, flags);							break;						} else {							value = (long)va_arg (args, unsigned int);						}						fmtint (buffer, &currlen, maxlen, value, 16, min, max, flags);						break;					case 'f':						if (cflags == DP_C_LDOUBLE)							fvalue = va_arg (args, LDOUBLE);						else							fvalue = va_arg (args, double);						/* um, floating point? */						fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags);						break;					case 'E':						flags |= DP_F_UP;					case 'e':						if (cflags == DP_C_LDOUBLE)							fvalue = va_arg (args, LDOUBLE);						else							fvalue = va_arg (args, double);						break;					case 'G':						flags |= DP_F_UP;					case 'g':						if (cflags == DP_C_LDOUBLE)							fvalue = va_arg (args, LDOUBLE);						else							fvalue = va_arg (args, double);						break;					case 'c':						dopr_outch(buffer, &currlen, maxlen, va_arg (args, int));						break;					case 's':						strvalue = va_arg (args, char *);						if (!strvalue) strvalue = "(null)";						if (max == -1) {							max = strlen(strvalue);						}						if (min > 0 && max >= 0 && min > max) max = min;						fmtstr(buffer, &currlen, maxlen, strvalue, flags, min, max);						break;					case 'p':						strvalue = va_arg (args, char *);						fmtint (buffer, &currlen, maxlen, (long) strvalue, 16, min, max, flags);						break;					case 'n':						if (cflags == DP_C_SHORT) {							short int *num;							num = va_arg (args, short int *);							*num = currlen;						} else if (cflags == DP_C_LONG) {							long int *num;							num = va_arg (args, long int *);							*num = (long int)currlen;						} else if (cflags == DP_C_LLONG) {							LLONG *num;							num = va_arg (args, LLONG *);							*num = (LLONG)currlen;						} else {							int *num;							num = va_arg (args, int *);							*num = currlen;						}						break;					case '%':						dopr_outch(buffer, &currlen, maxlen, ch);						break;					case 'w':						/* not supported yet, treat as next char */						ch = *format++;						break;					case 'y': {						/* object */						Object *obj = va_arg (args, Object *);						if (obj) {							currlen += obj->toString(buffer+currlen, maxlen - currlen);						} else {							strvalue = "(null)";							if (max == -1) {								max = strlen(strvalue);							}							if (min > 0 && max >= 0 && min > max) max = min;							fmtstr (buffer, &currlen, maxlen, strvalue, flags, min, max);						}						break;					}					default:						/* Unknown, skip */						break;				}				ch = *format++;				state = DP_S_DEFAULT;				flags = cflags = min = 0;				max = -1;				break;			case DP_S_DONE:				break;			default:				/* hmm? */				break; /* some picky compilers need this */		}	}	if (maxlen != 0) {		if (currlen < maxlen - 1)			buffer[currlen] = '\0';		else if (maxlen > 0)			buffer[maxlen - 1] = '\0';	}	return currlen;}static void fmtstr(char *buffer, size_t *currlen, size_t maxlen,				const char *value, int flags, int min, int max){	int padlen, strln;     /* amount to pad */	int cnt = 0;#ifdef DEBUG_SNPRINTF	printf("fmtstr min=%d max=%d s=[%s]\n", min, max, value);#endif	for (strln = 0; value[strln]; ++strln); /* strlen */	padlen = min - strln;	if (padlen < 0)		padlen = 0;	if (flags & DP_F_MINUS)		padlen = -padlen; /* Left Justify */	while ((padlen > 0) && (cnt < max)) {		dopr_outch(buffer, currlen, maxlen, ' ');		--padlen;		++cnt;	}	while (*value && (cnt < max)) {		dopr_outch(buffer, currlen, maxlen, *value++);		++cnt;	}	while ((padlen < 0) && (cnt < max)) {		dopr_outch(buffer, currlen, maxlen, ' ');		++padlen;		++cnt;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜视频福利| 激情欧美日韩一区二区| 不卡的av电影| 亚洲男女毛片无遮挡| 91丨porny丨户外露出| 亚洲美女精品一区| 在线精品视频小说1| 亚洲一本大道在线| 7777精品久久久大香线蕉| 久久成人18免费观看| 久久亚洲精品小早川怜子| 懂色中文一区二区在线播放| 一区二区三区日韩| 777奇米成人网| 韩国v欧美v日本v亚洲v| 国产精品乱人伦中文| 色视频欧美一区二区三区| 视频一区欧美日韩| 久久一区二区视频| 91首页免费视频| 青青草91视频| 国产精品久久久久aaaa樱花| 欧美日韩日日夜夜| 国精产品一区一区三区mba桃花| 国产色产综合产在线视频| 99国产精品99久久久久久| 日韩专区欧美专区| 国产亚洲综合色| 91福利在线导航| 麻豆国产91在线播放| 日韩毛片一二三区| 日韩三级视频中文字幕| 91丨九色丨蝌蚪丨老版| 精品写真视频在线观看| 亚洲欧美综合色| 日韩免费观看高清完整版 | 欧美精品久久一区二区三区| 精品制服美女丁香| 亚洲精品乱码久久久久| 26uuu欧美| 欧美色图激情小说| 国产成人av电影免费在线观看| 亚洲国产一区二区视频| 久久亚洲一级片| 欧美日韩激情一区| av电影在线不卡| 国产精一区二区三区| 亚洲chinese男男1069| 国产精品久久久久久久久免费桃花 | 麻豆国产精品官网| 亚洲福利视频三区| 亚洲人成亚洲人成在线观看图片| 亚洲精品一区二区三区99| 欧美午夜一区二区| 成人ar影院免费观看视频| 久久99久久99| 蜜桃av一区二区| 亚洲gay无套男同| 亚洲欧美国产77777| 日本一区二区三区国色天香 | 久久精品国产99久久6| 亚洲一区二区视频| 亚洲欧美激情插| 中文字幕日本乱码精品影院| 26uuu国产日韩综合| 日韩视频在线一区二区| 91精品国产一区二区| 9191久久久久久久久久久| 91成人在线免费观看| 91蝌蚪porny| 一道本成人在线| 色www精品视频在线观看| av电影在线观看一区| 99久久精品国产导航| 成人动漫视频在线| 成人黄色777网| 成人动漫精品一区二区| jiyouzz国产精品久久| 成人毛片视频在线观看| 国产 日韩 欧美大片| 国产成人自拍网| 成人性生交大片免费看在线播放 | 午夜日韩在线观看| 五月婷婷综合激情| 美女久久久精品| 久久国产免费看| 精品一区二区久久久| 国内精品写真在线观看| 国产精品99久久久| 成人动漫中文字幕| 91福利视频网站| 制服丝袜在线91| 日韩精品一区二区三区视频| 久久久久九九视频| 综合久久久久久| 亚洲国产精品视频| 人人精品人人爱| 国产中文一区二区三区| 国产成人在线视频网站| 成人av电影在线| 欧美日韩三级一区二区| 欧美成人国产一区二区| 久久久久久免费| 亚洲私人黄色宅男| 亚洲午夜久久久久| 青青草成人在线观看| 国产成人超碰人人澡人人澡| 日本韩国一区二区三区视频| 欧美一区二区三区色| 久久久精品欧美丰满| 一区二区三区欧美视频| 美日韩黄色大片| 97精品视频在线观看自产线路二| 欧美日韩成人一区| 日本一区二区成人在线| 亚洲成人一区二区在线观看| 国产激情一区二区三区| 欧美在线高清视频| 久久婷婷国产综合国色天香| 亚洲黄网站在线观看| 久久爱www久久做| 欧美亚男人的天堂| 国产欧美一区二区精品仙草咪| 亚洲线精品一区二区三区八戒| 国产一区 二区| 欧美日韩国产欧美日美国产精品| 国产清纯白嫩初高生在线观看91 | 成人免费黄色在线| 欧美裸体bbwbbwbbw| 久久久久久久综合色一本| 一片黄亚洲嫩模| 国产99精品国产| 日韩西西人体444www| 亚洲精品视频在线| 成人综合在线观看| 日韩欧美国产一区在线观看| 亚洲综合丁香婷婷六月香| 国产大陆a不卡| 日韩精品在线看片z| 一卡二卡三卡日韩欧美| av在线一区二区| 久久久久久电影| 久久电影网电视剧免费观看| 欧美美女一区二区| 亚洲美女屁股眼交| 成人av在线影院| 国产亚洲自拍一区| 激情都市一区二区| 91精品国产乱码| 亚洲va欧美va人人爽| 在线观看精品一区| 中文字幕一区在线观看| 国产91露脸合集magnet| 2017欧美狠狠色| 精油按摩中文字幕久久| 91精品国产免费久久综合| 亚洲第一搞黄网站| 欧美私人免费视频| 亚洲综合网站在线观看| 色综合久久六月婷婷中文字幕| 国产精品三级久久久久三级| 国产福利不卡视频| 日本一二三不卡| 成人美女在线观看| 亚洲欧洲性图库| 91网站最新地址| 亚洲午夜国产一区99re久久| 欧美制服丝袜第一页| 午夜激情一区二区| 欧美日韩国产小视频| 日韩精品成人一区二区三区| 538prom精品视频线放| 免费观看在线色综合| 日韩无一区二区| 国产在线播放一区二区三区| 精品久久久久久久久久久久包黑料| 久久av中文字幕片| 欧美精品一区二区精品网| 国产精品一区二区久久不卡| 中文文精品字幕一区二区| 成人性生交大片免费看中文网站| 亚洲丝袜制服诱惑| 欧美日韩一区二区在线观看视频| 亚洲成a人片在线观看中文| 日韩一级片在线观看| 国产在线一区二区| 国产精品灌醉下药二区| 日本高清视频一区二区| 午夜视频在线观看一区| 欧美tickling挠脚心丨vk| 国产精品自产自拍| 亚洲欧美激情小说另类| 欧美一卡二卡在线| 国产成人在线视频网站| 一区二区三区四区不卡视频| 日韩一区二区电影| www.亚洲在线| 日本亚洲一区二区| 国产精品无人区| 欧美日韩久久一区二区|