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

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

?? printbuf.c

?? JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。它基于JavaScript(Standard ECMA-262
?? C
字號:
/*
 * $Id: printbuf.c,v 1.5 2006/01/26 02:16:28 mclark Exp $
 *
 * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
 * Michael Clark <michael@metaparadigm.com>
 *
 * This library is free software; you can redistribute it and/or modify
 * it under the terms of the MIT license. See COPYING for details.
 *
 */

#include "config.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#if HAVE_STDARG_H
# include <stdarg.h>
#else /* !HAVE_STDARG_H */
# error Not enough var arg support!
#endif /* HAVE_STDARG_H */

#include "bits.h"
#include "debug.h"
#include "printbuf.h"

struct printbuf* printbuf_new()
{
  struct printbuf *p;

  if(!(p = calloc(1, sizeof(struct printbuf)))) return NULL;
  p->size = 32;
  p->bpos = 0;
  if(!(p->buf = malloc(p->size))) {
    free(p);
    return NULL;
  }
  return p;
}


int printbuf_memappend(struct printbuf *p, char *buf, int size)
{
  char *t;
  if(p->size - p->bpos <= size) {
    int new_size = max(p->size * 2, p->bpos + size + 8);
#ifdef PRINTBUF_DEBUG
    mc_debug("printbuf_memappend: realloc "
	     "bpos=%d wrsize=%d old_size=%d new_size=%d\n",
	     p->bpos, size, p->size, new_size);
#endif /* PRINTBUF_DEBUG */
    if(!(t = realloc(p->buf, new_size))) return -1;
    p->size = new_size;
    p->buf = t;
  }
  memcpy(p->buf + p->bpos, buf, size);
  p->bpos += size;
  p->buf[p->bpos]= '\0';
  return size;
}

#if !HAVE_VSNPRINTF && defined(WIN32)
# define vsnprintf _vsnprintf
#elif !HAVE_VSNPRINTF /* !HAVE_VSNPRINTF */
# error Need vsnprintf!
#endif /* !HAVE_VSNPRINTF && defined(WIN32) */

#if !HAVE_VASPRINTF
/* CAW: compliant version of vasprintf */
static int vasprintf(char **buf, const char *fmt, va_list ap)
{
#if !defined(WIN32) || defined(_WIN32_WCE)
	static char _T_emptybuffer = '\0';
#endif /* !defined(WIN32) || defined(_WIN32_WCE) */
	int chars;
	char *b;

	if(!buf) { return -1; }

#if defined(WIN32) && !defined(_WIN32_WCE)
	chars = _vscprintf(fmt, ap)+1;
#else /* defined(WIN32) && !defined(_WIN32_WCE) */
	/* CAW: RAWR! We have to hope to god here that vsnprintf doesn't overwrite
	   our buffer like on some 64bit sun systems.... but hey, its time to move on */
	chars = vsnprintf(&_T_emptybuffer, 0, fmt, ap)+1;
	if(chars < 0) { chars *= -1; } /* CAW: old glibc versions have this problem */
#endif /* defined(WIN32) && !defined(_WIN32_WCE) */

	b = (char*)malloc(sizeof(char)*chars);
	if(!b) { return -1; }

	if((chars = vsprintf(b, fmt, ap)) < 0)
	{
		free(b);
	} else {
		*buf = b;
	}

	return chars;
}
#endif /* !HAVE_VASPRINTF */

int sprintbuf(struct printbuf *p, const char *msg, ...)
{
  va_list ap;
  char *t;
  int size;
  char buf[128];

  /* user stack buffer first */
  va_start(ap, msg);
  size = vsnprintf(buf, 128, msg, ap);
  va_end(ap);
  /* if string is greater than stack buffer, then use dynamic string
     with vasprintf.  Note: some implementation of vsnprintf return -1
     if output is truncated whereas some return the number of bytes that
     would have been writen - this code handles both cases. */
  if(size == -1 || size > 127) {
    int ret;
    va_start(ap, msg);
    if((size = vasprintf(&t, msg, ap)) == -1) return -1;
    va_end(ap);
    ret = printbuf_memappend(p, t, size);
    free(t);
    return ret;
  } else {
    return printbuf_memappend(p, buf, size);
  }
}

void printbuf_reset(struct printbuf *p)
{
  p->buf[0] = '\0';
  p->bpos = 0;
}

void printbuf_free(struct printbuf *p)
{
  if(p) {
    free(p->buf);
    free(p);
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜av在线| 免费在线观看视频一区| 欧美日韩和欧美的一区二区| 九九**精品视频免费播放| 国产精品电影一区二区| 日韩午夜在线影院| 一本到三区不卡视频| 久久狠狠亚洲综合| 日韩精品亚洲一区二区三区免费| 久久综合中文字幕| 91精品国产综合久久香蕉麻豆| 99久精品国产| 国产99久久久久| 精品一区二区三区av| 午夜精品久久一牛影视| 亚洲精品国产a| 国产精品久久综合| 亚洲国产精品成人综合色在线婷婷| 色综合久久久久综合99| 蜜臀久久99精品久久久久宅男 | 亚洲另类在线一区| 久久新电视剧免费观看| 4438x亚洲最大成人网| 欧美亚洲高清一区| 在线亚洲一区二区| av不卡一区二区三区| 黄色日韩网站视频| 蜜桃久久久久久| 日韩av中文字幕一区二区| 性做久久久久久久免费看| 亚洲一区二区四区蜜桃| 亚洲精品福利视频网站| 亚洲视频综合在线| 亚洲视频在线观看三级| 国产精品久久网站| 亚洲人成精品久久久久| 国产精品成人一区二区三区夜夜夜| 国产亚洲欧美一区在线观看| 2021国产精品久久精品| 久久伊99综合婷婷久久伊| 精品国产麻豆免费人成网站| 日韩欧美不卡一区| 精品99一区二区三区| 久久亚区不卡日本| 日本一区二区视频在线观看| 国产精品视频九色porn| 中文在线一区二区| 亚洲精品视频一区二区| 亚洲一区视频在线| 日韩av午夜在线观看| 久久99在线观看| 丰满亚洲少妇av| 91美女蜜桃在线| 91超碰这里只有精品国产| 欧美成人激情免费网| 久久综合色综合88| 国产精品动漫网站| 亚洲韩国一区二区三区| 日韩av一区二| 高清久久久久久| 91九色最新地址| 欧美一区二区三区喷汁尤物| 精品福利av导航| 中文字幕在线免费不卡| 亚洲va欧美va人人爽| 蜜臀av性久久久久蜜臀aⅴ | 99re成人在线| 欧美人妖巨大在线| 久久久久久亚洲综合影院红桃| 国产精品污污网站在线观看| 亚洲综合小说图片| 国内精品视频一区二区三区八戒| 欧美高清hd18日本| 久久久国产一区二区三区四区小说| 中文字幕国产一区| 亚洲6080在线| 国产伦精品一区二区三区在线观看| 成人aaaa免费全部观看| 欧美日韩精品是欧美日韩精品| 久久亚区不卡日本| 亚洲国产视频一区| 国产成人高清视频| 欧美久久久久免费| 国产色婷婷亚洲99精品小说| 亚洲一区二区三区四区在线免费观看 | 91麻豆精品国产91久久久资源速度 | 欧美电视剧免费全集观看| 欧美视频中文字幕| 亚洲国产精品成人综合| 午夜伊人狠狠久久| 高清国产午夜精品久久久久久| 91论坛在线播放| 久久久久久电影| 午夜精品久久久| 91丝袜美腿高跟国产极品老师 | 国产欧美日韩视频一区二区| 亚洲综合在线视频| 欧美午夜寂寞影院| 久久这里只有精品6| 尤物av一区二区| 91捆绑美女网站| 国产精品一区二区91| 麻豆国产欧美日韩综合精品二区 | 精品久久人人做人人爱| 欧美激情在线看| 91视视频在线观看入口直接观看www | 亚洲午夜精品在线| 久久激情综合网| 欧美中文字幕一区二区三区| 久久久久9999亚洲精品| 美女视频黄久久| 欧美剧情电影在线观看完整版免费励志电影 | 日韩精品电影在线| 91成人免费电影| 亚洲情趣在线观看| 成人成人成人在线视频| 欧美精品一区二区三| 日韩 欧美一区二区三区| 日本高清无吗v一区| 亚洲免费观看高清完整版在线观看熊| 国产精品一级黄| 久久噜噜亚洲综合| 国产精品1024| 久久久噜噜噜久噜久久综合| 黑人巨大精品欧美黑白配亚洲| 91精品婷婷国产综合久久性色| 亚洲成人777| 欧美视频精品在线观看| 亚洲综合在线视频| 欧美在线制服丝袜| 亚洲一二三四在线| 欧美日韩一区成人| 亚洲图片自拍偷拍| 欧美日韩国产美女| 日韩精品91亚洲二区在线观看| 欧美日韩视频一区二区| 午夜私人影院久久久久| 欧美日韩国产美| 日韩av二区在线播放| 日韩精品影音先锋| 国产原创一区二区| 国产三级欧美三级日产三级99| 国产精品18久久久久久久久 | 日本美女视频一区二区| 91精品国产福利在线观看| 久久黄色级2电影| 26uuu久久综合| 国产69精品久久久久毛片 | 亚洲成av人片| 91精品国产欧美一区二区| 久久国产精品一区二区| 国产亚洲综合色| 色综合天天综合在线视频| 亚洲第一电影网| 精品国内片67194| 粉嫩一区二区三区性色av| 中文字幕一区在线观看| 色狠狠一区二区| 麻豆一区二区三| 中文字幕的久久| 欧美日韩精品一区二区| 国内偷窥港台综合视频在线播放| 欧美国产一区二区在线观看| 色婷婷综合久久久中文字幕| 日韩av高清在线观看| 国内精品国产成人| 亚洲欧洲另类国产综合| 91精品国产乱| 成人一区二区在线观看| 亚洲国产成人高清精品| 欧美大片日本大片免费观看| 99久久国产综合精品女不卡| 无码av免费一区二区三区试看 | 成人免费的视频| 天天爽夜夜爽夜夜爽精品视频| 精品免费视频.| 91黄色激情网站| 国产精品主播直播| 亚洲与欧洲av电影| 26uuu国产在线精品一区二区| 色久综合一二码| 欧美日本韩国一区二区三区视频| 午夜精品爽啪视频| 亚洲精品国产a| 国产亚洲精品福利| 在线观看网站黄不卡| 一区二区在线看| 精品一区中文字幕| 欧美日本在线一区| 亚洲成a人片综合在线| 国产亚洲婷婷免费| 91精品久久久久久久久99蜜臂| 天堂精品中文字幕在线| 久久综合久久99| 国产高清久久久久| 国产亚洲制服色| 粉嫩绯色av一区二区在线观看| 欧美怡红院视频| 精品91自产拍在线观看一区| 久久福利视频一区二区|