示例#1
0
int vsnprintf(char *buf, int size, const char *fmt, va_list args){
	int num;
	char *str, *end, c,*s;
	int read;
	unsigned int spec=0;

	str = buf;
	end = buf + size;

	if (end < buf) {
		end = ((void *)-1);
		size = end - buf;
	}

	while (*fmt) {
		const char *old_fmt = fmt;

		read = format_decode(fmt, &spec);
		fmt += read;

		if((FORMAT_TYPE(spec))==FORMAT_TYPE_NONE){
			int copy = read;
			if (str < end) {
				if (copy > end - str)
					copy = end - str;
					memcpy(str, old_fmt, copy);
			}
			str += read;

		}else if(spec&FORMAT_FLAG_WIDTH){
			//do nothing
		}else if(FORMAT_TYPE(spec)==FORMAT_TYPE_CHAR){
			c = (unsigned char) va_arg(args, int);
			if (str < end)
				*str = c;
			++str;
		}else if(FORMAT_TYPE(spec)==FORMAT_TYPE_STR){
示例#2
0
    return ;
} /* wav_w64_analyze */

/*==============================================================================
*/

typedef struct
{   int			ID ;
    const char	*name ;
} WAV_FORMAT_DESC ;

#define STR(x)			#x
#define FORMAT_TYPE(x)	{ x, STR (x) }

static WAV_FORMAT_DESC wave_descs [] =
{   FORMAT_TYPE	(WAVE_FORMAT_PCM),
    FORMAT_TYPE (WAVE_FORMAT_MS_ADPCM),
    FORMAT_TYPE (WAVE_FORMAT_IEEE_FLOAT),
    FORMAT_TYPE (WAVE_FORMAT_VSELP),
    FORMAT_TYPE (WAVE_FORMAT_IBM_CVSD),
    FORMAT_TYPE (WAVE_FORMAT_ALAW),
    FORMAT_TYPE (WAVE_FORMAT_MULAW),
    FORMAT_TYPE (WAVE_FORMAT_OKI_ADPCM),
    FORMAT_TYPE (WAVE_FORMAT_IMA_ADPCM),
    FORMAT_TYPE (WAVE_FORMAT_MEDIASPACE_ADPCM),
    FORMAT_TYPE (WAVE_FORMAT_SIERRA_ADPCM),
    FORMAT_TYPE (WAVE_FORMAT_G723_ADPCM),
    FORMAT_TYPE (WAVE_FORMAT_DIGISTD),
    FORMAT_TYPE (WAVE_FORMAT_DIGIFIX),
    FORMAT_TYPE (WAVE_FORMAT_DIALOGIC_OKI_ADPCM),
    FORMAT_TYPE (WAVE_FORMAT_MEDIAVISION_ADPCM),