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

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

?? snprintf.c

?? This directory contains source code for tcpdump, a tool for network monitoring and data acquisition
?? C
字號:
/*
 * Copyright (c) 1983, 1995, 1996 Eric P. Allman
 * Copyright (c) 1988, 1993
 *      The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *      This product includes software developed by the University of
 *      California, Berkeley and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#if 0
static char sccsid[] = "@(#)$Id: snprintf.c,v 1.2 1998/05/11 09:18:44 bero Exp $ excerpted from conf.c 8.333 (Berkeley) 1/21/97";
#endif

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <sys/socket.h>  /* __inline */

#define VA_LOCAL_DECL va_list ap;
#define VA_START(f)   va_start(ap, f)
#define VA_END        va_end(ap)

/*
 * **  SNPRINTF, VSNPRINT -- counted versions of printf
 * **
 * **   These versions have been grabbed off the net.  They have been
 * **   cleaned up to compile properly and support for .precision and
 * **   %lx has been added.
 */

/**************************************************************
 * 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.
 **************************************************************/

static void fmtstr (char *value, int ljust, int len, int zpad, int maxwidth);
static void fmtnum (long value, int base, int dosign, int ljust, int len, int zpad);
static void dostr  (char *, int);
static void dopr   (char *, const char *, va_list);

static char *output, *end;

int vsnprintf (char *str, size_t count, const char *fmt, va_list args)
{
  str[0] = 0;
  end = str + count - 1;
  dopr (str, fmt, args);
  if (count > 0)
     end[0] = 0;
  return strlen (str);
}

int snprintf (char *str, size_t count, const char *fmt, ...)
{
  int len;

  VA_LOCAL_DECL VA_START (fmt);

  len = vsnprintf (str, count, fmt, ap);
  VA_END;
  return (len);
}


static __inline void dopr_outch (int c)
{
  if (end == 0 || output < end)
     *output++ = c;
}

static void dostr (char *str, int cut)
{
  if (cut)
       while (*str && cut-- > 0) dopr_outch (*str++);
  else while (*str) dopr_outch (*str++);
}

/*
 * dopr(): poor man's version of doprintf
 */
static void dopr (char *buffer, const char *format, va_list args)
{
  int   ch;
  long  value;
  int   longflag = 0;
  int   pointflag = 0;
  int   maxwidth = 0;
  char *strvalue;
  int   ljust;
  int   len;
  int   zpad;

  output = buffer;
  while ((ch = *format++) != '\0')
  {
    switch (ch)
    {
      case '%':
           ljust = len = zpad = maxwidth = 0;
           longflag = pointflag = 0;
         nextch:
           ch = *format++;
           switch (ch)
           {
             case 0:
                  dostr ("**end of format**", 0);
                  return;
             case '-':
                  ljust = 1;
                  goto nextch;
             case '0':       /* set zero padding if len not set */
                  if (len == 0 && !pointflag)
                    zpad = '0';
             case '1':
             case '2':
             case '3':
             case '4':
             case '5':
             case '6':
             case '7':
             case '8':
             case '9':
                  if (pointflag)
                       maxwidth = maxwidth * 10 + ch - '0';
                  else len = len * 10 + ch - '0';
                  goto nextch;
             case '*':
                  if (pointflag)
                       maxwidth = va_arg (args, int);
                  else len = va_arg (args, int);
                  goto nextch;
             case '.':
                  pointflag = 1;
                  goto nextch;
             case 'l':
                  longflag = 1;
                  goto nextch;
             case 'u':
             case 'U':
                  if (longflag)
                       value = va_arg (args, long);
                  else value = va_arg (args, int);
                  fmtnum (value, 10, 0, ljust, len, zpad);
                  break;
             case 'o':
             case 'O':
                  if (longflag)
                       value = va_arg (args, long);
                  else value = va_arg (args, int);
                  fmtnum (value, 8, 0, ljust, len, zpad);
                  break;
             case 'd':
             case 'D':
                  if (longflag)
                       value = va_arg (args, long);
                  else value = va_arg (args, int);
                  fmtnum (value, 10, 1, ljust, len, zpad);
                  break;
             case 'x':
                  if (longflag)
                       value = va_arg (args, long);
                  else value = va_arg (args, int);
                  fmtnum (value, 16, 0, ljust, len, zpad);
                  break;
             case 'X':
                  if (longflag)
                       value = va_arg (args, long);
                  else value = va_arg (args, int);
                  fmtnum (value, -16, 0, ljust, len, zpad);
                  break;
             case 's':
                  strvalue = va_arg (args, char *);
                  if (maxwidth > 0 || !pointflag)
                  {
                    if (pointflag && len > maxwidth)
                      len = maxwidth;        /* Adjust padding */
                    fmtstr (strvalue, ljust, len, zpad, maxwidth);
                  }
                  break;
             case 'c':
                  ch = va_arg (args, int);
                  dopr_outch (ch);
                  break;
             case '%':
                  dopr_outch (ch);
                  continue;
             default:
                  dostr ("???????", 0);
           }
           break;
      default:
           dopr_outch (ch);
           break;
    }
  }
  *output = 0;
}

static void fmtstr (char *value, int ljust, int len, int zpad, int maxwidth)
{
  int padlen, strlen;                /* amount to pad */

  if (value == 0)
     value = "<NULL>";

  for (strlen = 0; value[strlen]; ++strlen) ;        /* strlen */
  if (strlen > maxwidth && maxwidth)
     strlen = maxwidth;
  padlen = len - strlen;
  if (padlen < 0)
     padlen = 0;
  if (ljust)
     padlen = -padlen;

  while (padlen > 0)
  {
    dopr_outch (' ');
    --padlen;
  }
  dostr (value, maxwidth);
  while (padlen < 0)
  {
    dopr_outch (' ');
    ++padlen;
  }
}

static void fmtnum (long value, int base, int dosign, int ljust, int len, int zpad)
{
  unsigned long uvalue;
  char convert[20];
  int  signvalue = 0;
  int  place = 0;
  int  padlen = 0;               /* amount to pad */
  int  caps = 0;

  /* DEBUGP(("value 0x%x, base %d, dosign %d, ljust %d, len %d, zpad %d\n",
   * value, base, dosign, ljust, len, zpad ));
   */
  uvalue = value;
  if (dosign)
  {
    if (value < 0)
    {
      signvalue = '-';
      uvalue = -value;
    }
  }
  if (base < 0)
  {
    caps = 1;
    base = -base;
  }
  do
  {
    convert[place++] = (caps ? "0123456789ABCDEF" :
                               "0123456789abcdef")[uvalue % (unsigned) base];
    uvalue = (uvalue / (unsigned) base);
  }
  while (uvalue);
  convert[place] = 0;
  padlen = len - place;
  if (padlen < 0)
     padlen = 0;

  if (ljust)
     padlen = -padlen;

  /* DEBUGP(( "str '%s', place %d, sign %c, padlen %d\n",
   * convert,place,signvalue,padlen));
   */
  if (zpad && padlen > 0)
  {
    if (signvalue)
    {
      dopr_outch (signvalue);
      --padlen;
      signvalue = 0;
    }
    while (padlen > 0)
    {
      dopr_outch (zpad);
      --padlen;
    }
  }
  while (padlen > 0)
  {
    dopr_outch (' ');
    --padlen;
  }
  if (signvalue)
     dopr_outch (signvalue);

  while (place > 0)
     dopr_outch (convert[--place]);

  while (padlen < 0)
  {
    dopr_outch (' ');
    ++padlen;
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费高清av| 韩国精品免费视频| 色婷婷精品大视频在线蜜桃视频| 美洲天堂一区二卡三卡四卡视频| 一区二区三区在线不卡| 亚洲精品乱码久久久久久| 亚洲午夜在线观看视频在线| 亚洲图片欧美色图| 国产主播一区二区| 偷偷要91色婷婷| 亚洲欧美影音先锋| 欧美电影影音先锋| 日本乱人伦一区| 白白色 亚洲乱淫| 亚洲乱码精品一二三四区日韩在线| av高清久久久| 欧美成人在线直播| 国产不卡免费视频| 日韩欧美国产一区二区三区| 亚洲精品va在线观看| 国产成人夜色高潮福利影视| 精品少妇一区二区三区视频免付费| 亚洲一区二区四区蜜桃| 97se亚洲国产综合在线| 国产精品久久综合| 成人做爰69片免费看网站| 久久综合网色—综合色88| 久久66热偷产精品| 精品国产一二三区| 精品一区二区三区免费观看| 精品奇米国产一区二区三区| 毛片av一区二区| 欧美不卡一区二区三区| 美女精品自拍一二三四| 91精品国产91热久久久做人人| 亚洲午夜久久久久久久久久久| 91福利在线播放| 一区二区激情小说| 欧美在线一区二区三区| 亚洲国产综合91精品麻豆| 欧美性生交片4| 日韩高清中文字幕一区| 日韩写真欧美这视频| 青娱乐精品视频在线| 国产精品萝li| 色婷婷综合中文久久一本| 一区二区国产视频| 欧美丰满美乳xxx高潮www| 免费看欧美美女黄的网站| 日韩视频免费直播| 国产成人在线看| 综合网在线视频| 91美女片黄在线观看| proumb性欧美在线观看| 波波电影院一区二区三区| 色猫猫国产区一区二在线视频| 成人av在线一区二区三区| 91精品视频网| 久久精品视频一区二区| 日韩美女精品在线| 天堂影院一区二区| 国内精品国产成人国产三级粉色 | 麻豆精品久久久| 久久国产麻豆精品| 99久久精品费精品国产一区二区| 日本韩国一区二区| 欧美一区二区成人| 亚洲欧洲www| 成人午夜视频免费看| k8久久久一区二区三区| 欧美美女黄视频| 51精品久久久久久久蜜臀| 在线视频亚洲一区| 亚洲一区二区三区激情| 国产欧美视频在线观看| 免费成人美女在线观看| 精品国产91九色蝌蚪| 色婷婷精品大在线视频 | 日韩精品亚洲一区二区三区免费| 精品盗摄一区二区三区| 欧美在线你懂的| 国产一区二区在线观看免费| 亚洲成人激情av| 国产成人免费9x9x人网站视频| 91精品国模一区二区三区| 亚洲另类色综合网站| 国产精品一品视频| 精品国精品自拍自在线| 美女任你摸久久| 久久久欧美精品sm网站| 欧美激情艳妇裸体舞| 久久99久久精品欧美| 国产精品女同一区二区三区| 久久国产综合精品| 精品一区免费av| 一区二区三区免费网站| 久久久www成人免费无遮挡大片| 欧洲在线/亚洲| 成人国产精品免费网站| 国产麻豆日韩欧美久久| 卡一卡二国产精品| 日本欧美加勒比视频| 亚洲高清免费一级二级三级| 综合激情成人伊人| 中国av一区二区三区| 国产欧美精品日韩区二区麻豆天美 | 午夜精品国产更新| 亚洲精品综合在线| 亚洲色图.com| 成人免费小视频| 亚洲图片激情小说| 樱花草国产18久久久久| 亚洲色图视频免费播放| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | caoporn国产一区二区| 成人aa视频在线观看| 成人高清免费在线播放| 成人午夜av电影| 99久久久久久| 91福利精品第一导航| 欧美三级日本三级少妇99| 欧美丝袜丝交足nylons| 91蜜桃在线免费视频| 蜜桃一区二区三区四区| 国产一级精品在线| 国产一区二区三区蝌蚪| 亚洲高清免费观看| 亚洲午夜影视影院在线观看| 国产精品女上位| 国产午夜精品理论片a级大结局| 白白色 亚洲乱淫| 不卡的av中国片| 国产一区二区免费在线| 另类人妖一区二区av| 成人不卡免费av| 一区二区三区高清不卡| 一区二区三区不卡在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 国产麻豆精品视频| av亚洲精华国产精华| 欧美午夜精品一区二区三区| 欧美人妖巨大在线| 久久免费美女视频| 亚洲男同性视频| 日本 国产 欧美色综合| 粉嫩一区二区三区性色av| 色婷婷久久久久swag精品| 日韩一区二区三区视频在线观看| 久久色成人在线| 亚洲欧美日韩国产成人精品影院 | 欧美亚洲综合网| 91精品国产综合久久久久久| 国产日韩三级在线| 亚洲午夜久久久久久久久久久| 蜜桃91丨九色丨蝌蚪91桃色| 99久久精品国产导航| 日韩一级黄色大片| 亚洲欧美在线另类| 精品亚洲免费视频| 在线观看免费成人| 国产午夜三级一区二区三| 亚洲国产精品久久人人爱| 国产精品一区专区| 欧美日韩一区久久| 综合分类小说区另类春色亚洲小说欧美 | 亚洲国产成人精品视频| 国产精品一区二区久久精品爱涩 | 国产成人av资源| 欧美日韩激情一区二区| 国产精品久久毛片a| 久久精品国产亚洲aⅴ| 色94色欧美sute亚洲13| 亚洲国产精品成人综合| 卡一卡二国产精品 | 亚洲免费在线观看视频| 久久国产夜色精品鲁鲁99| 色偷偷88欧美精品久久久| 亚洲欧洲精品一区二区三区 | 一区二区三区中文免费| 久久91精品国产91久久小草| 日韩欧美一二三| 日韩黄色片在线观看| 成人永久免费视频| 亚洲影院在线观看| 成人动漫在线一区| 国产视频一区在线播放| 麻豆91精品视频| 日韩免费电影网站| 天堂久久一区二区三区| 在线免费观看一区| 亚洲欧美激情小说另类| 99视频热这里只有精品免费| 国产婷婷一区二区| 国产传媒一区在线| 久久久国产精品不卡| 国产老女人精品毛片久久| 欧美精品一区二区三区久久久| 美女视频黄 久久| 欧美videos中文字幕| 久久精品99国产精品|