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

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

?? netutil.c

?? 基于44b0的arpscan程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
}

/* Return a pointer to the first char after any whitespace or punctuation */
char *skippunct(char *str)
{
    while (isspace(*str) || ispunct(*str))
        str++;
    str++;///////////
    return(str);
}

/* Check whether a sequence value lies within two others, return 0 if not */
int in_limits(LWORD val, LWORD lo, LWORD hi)
{
    long lodiff, hidiff;

    lodiff = val - lo;
    hidiff = hi - val;
    return(lodiff>=0 && hidiff>=0);
}

/* Return total length of data in buffer */
WORD buff_dlen(CBUFF *bp)
{
    return((WORD)((bp->in - bp->out) & (bp->len - 1)));
}
/* Return length of untried (i.e. unsent) data in buffer */
WORD buff_untriedlen(CBUFF *bp)
{
    return((WORD)((bp->in - bp->trial) & (bp->len - 1)));
}
/* Return length of trial data in buffer (i.e. data sent but unacked) */
WORD buff_trylen(CBUFF *bp)
{
    return((WORD)((bp->trial - bp->out) & (bp->len - 1)));
}
/* Return length of free space in buffer */
WORD buff_freelen(CBUFF *bp)
{
    return(bp->len ? bp->len - 1 - buff_dlen(bp) : 0);
}

/* Set all the buffer pointers to a starting value */
void buff_setall(CBUFF *bp, LWORD start)
{
    bp->out = bp->in = bp->trial = start;
}

/* Rewind the trial pointer by the given byte count, return actual count */
WORD buff_retry(CBUFF *bp, WORD len)
{
    len = minw(len, buff_trylen(bp));
    bp->trial -= len;
    return(len);
}

/* Pre-load data into buffer, i.e. copy into the given buffer location
** Check that existing data isn't overwritten, return byte count if OK.
** If data pointer is null, do check but don't transfer data */
WORD buff_preload(CBUFF *bp, LWORD oset, BYTE *data, WORD len)
{
    WORD in, n=0, n1, n2, free;
    long inoff;

    inoff = oset - bp->in;                  /* Offset of data from I/P ptr */
    in = (WORD)oset & (bp->len-1);          /* Mask I/P ptr to buffer area */
    free = buff_freelen(bp);                /* Free space in buffer */
    if (inoff>=0 && inoff<(free))           /* If start is in free space.. */
    {
        n = minw(len, free);                /* Get max allowable length */
        n1 = minw(n, (WORD)(bp->len - in)); /* Length up to end of buff */
        n2 = n - n1;                        /* Length from start of buff */
        if (n1 && data)                     /* If anything to copy.. */
            memcpy(&bp->data[in], data, n1);/* ..copy up to end of buffer.. */
        if (n2 && data)                     /* ..and maybe also.. */
            memcpy(bp->data, &data[n1], n2);/* ..copy into start of buffer */
    }
    return(n);
}

/* Load data into buffer, return byte count that could be accepted
** If data pointer is null, adjust pointers but don't transfer data */
WORD buff_in(CBUFF *bp, BYTE *data, WORD len)
{
    WORD in, n, n1, n2;

    in = (WORD)bp->in & (bp->len-1);        /* Mask I/P ptr to buffer area */
    n = minw(len, buff_freelen(bp));        /* Get max allowable length */
    n1 = minw(n, (WORD)(bp->len - in));     /* Length up to end of buff */
    n2 = n - n1;                            /* Length from start of buff */
    if (n1 && data)                         /* If anything to copy.. */
        memcpy(&bp->data[in], data, n1);    /* ..copy up to end of buffer.. */
    if (n2 && data)                         /* ..and maybe also.. */
        memcpy(bp->data, &data[n1], n2);    /* ..copy into start of buffer */
    bp->in += n;                            /* Bump I/P pointer */
    return(n);
}

/* Load string into buffer, return num of chars that could be accepted */
WORD buff_instr(CBUFF *bp, char *str)
{
    return(buff_in(bp, (BYTE *)str, (WORD)strlen(str)));
}

/* Load file into buffer, return byte count */
WORD buff_infile(CBUFF *bp, FILE *fp, WORD len)
{
    WORD in, n, n1, n2=0;
    int count=0;

    in = (WORD)bp->in & (bp->len-1);        /* Mask I/P ptr to buffer area */
    n = minw(len, buff_freelen(bp));        /* Get max allowable length */
    n1 = minw(n, (WORD)(bp->len - in));     /* Length up to end of buff */
    if (n1)                                 /* If anything to read.. */
    {                                       /* ..get 1st block from file */
        count = fread(&bp->data[in], 1, n1, fp);
        n2 = len<n1 ? 0 : n-n1;             /* Check for end of file */
    }
    if (n2)                                 /* Maybe also get 2nd block */
        count += fread(bp->data, 1, n2, fp);
    bp->in += count;                        /* Bump I/P pointer */
    return((WORD)count);
}

/* Remove trial data from buffer, return byte count.
** If data pointer is null, adjust pointers but don't transfer data */
WORD buff_try(CBUFF *bp, BYTE *data, WORD maxlen)
{
    WORD trial, n, n1, n2;

    trial = (WORD)bp->trial & (bp->len-1);  /* Mask trial ptr to buffer area */
    n = minw(maxlen, buff_untriedlen(bp));  /* Get max allowable length */
    n1 = minw(n, (WORD)(bp->len - trial));  /* Length up to end of buff */
    n2 = n - n1;                            /* Length from start of buff */
    if (n1 && data)                         /* If anything to copy.. */
        memcpy(data, &bp->data[trial], n1); /* ..copy up to end of buffer.. */
    if (n2 && data)                         /* ..and maybe also.. */
        memcpy(&data[n1], bp->data, n2);    /* ..copy from start of buffer */
    bp->trial += n;                         /* Bump trial pointer */
    return(n);
}

/* Remove data from buffer, return byte count
** If data pointer is null, adjust pointers but don't transfer data */
WORD buff_out(CBUFF *bp, BYTE *data, WORD maxlen)
{
    WORD out, n, n1, n2;

    out = (WORD)bp->out & (bp->len-1);      /* Mask O/P ptr to buffer area */
    n = minw(maxlen, buff_dlen(bp));        /* Get max allowable length */
    n1 = minw(n, (WORD)(bp->len - out));    /* Length up to end of buff */
    n2 = n - n1;                            /* Length from start of buff */
    if (n1 && data)                         /* If anything to copy.. */
        memcpy(data, &bp->data[out], n1);   /* ..copy up to end of buffer.. */
    if (n2 && data)                         /* ..and maybe also.. */
        memcpy(&data[n1], bp->data, n2);    /* ..copy from start of buffer */
    bp->out += n;                           /* Bump O/P pointer */
    if (buff_untriedlen(bp) > buff_dlen(bp))/* ..and maybe trial pointer */
        bp->trial = bp->out;
    return(n);
}
/* Return length of null-delimited string in buffer, 0 if no null terminator */
WORD buff_strlen(CBUFF *bp)
{
    return(buff_chrlen(bp, 0));
}
/* Return length of string in buffer given delimiter char, 0 if no match */
WORD buff_chrlen(CBUFF *bp, char c)
{
    WORD out, n, n1, n2;
    BYTE *p, *q=0;

    out = (WORD)bp->out & (bp->len-1);      /* Mask O/P ptr to buffer area */
    n = buff_dlen(bp);                      /* Get max length */
    n1 = minw(n, (WORD)(bp->len - out));    /* Length up to end of buff */
    n2 = n - n1;                            /* Length from start of buff */
    if (n1)                                 /* Check up to end of buffer */
        q = memchr(p=&bp->data[out], c, n1);
    if (!q && n2)
        q = memchr(p=bp->data, c, n2);      /* ..check data at buffer start */
    else
        n1 = 0;
    return(q ? (WORD)(q - p) + n1 : 0);
}

/* Do TCP-style checksum. Improved algorithm is from RFC 1071 */
WORD csum(void *dp, WORD count)
{
    register LWORD total=0L;
    register WORD n, *p, carries;
    
    n = count / 2;
    p = (WORD *)dp;
    
    while (n--)
        total += *p++;
    if (count & 1)
        total += *(BYTE *)p;
    while ((carries=(WORD)(total>>16))!=0)
        total = (total & 0xffffL) + carries;
    return((WORD)total);
}

/* Safe versions of the min() & max() macros for use on re-entrant code
** Ensures that any function arguments aren't called twice */
WORD minw(WORD a, WORD b)
{
    return(a<b ? a : b);
}
WORD maxw(WORD a, WORD b)
{
    return(a>b ? a : b);
}
int mini(int a, int b)
{
    return(a<b ? a : b);
}
int maxi(int a, int b)
{
    return(a>b ? a : b);
}

/* Return byte-swapped word */
WORD swapw(WORD w)
{
    return(((w<<8)&0xff00) | ((w>>8)&0x00ff));
}
/* Return byte-swapped longword */
LWORD swapl(LWORD lw)
{
    return(((lw<<24)&0xff000000L) | ((lw<<8 )&0x00ff0000L) |
           ((lw>>8 )&0x0000ff00L) | ((lw>>24)&0x000000ffL));
}

/* Check for timeout on a given tick counter, return non-zero if true */
int timeout(WORD *timep, int sec)
{

    WORD tim, diff;
    int tout=0;

    tim = (WORD)time(0);
    diff = tim - *timep;
    if (sec==0 || diff>=sec)
    {
        *timep = tim;
        tout = 1;
    }
    return(tout);
}

/* Check for timeout on a given tick counter, return non-zero if true */
/*int mstimeout(LWORD *timep, int msec)
{

    LWORD tim;
    long diff;
    int tout=0;

    tim = mstime();
    diff = tim - *timep;
    if (msec==0 || diff>=msec)
    {
        *timep = tim;
        tout = 1;
    }
    return(tout);
}*/

//#ifndef WIN32
/* Return approximate millisecond count (DOS only) */
//LWORD mstime(void)
//{
//    return(biostime(0, 0) * 55L);   /* Should be 54.945! */
//}
//#endif

/* Crude delay in case delay() isn't in the C library
** Derives timing from I/O cycles accessing the interrupt controller
** Slow CPUs (sub-100MHz) will be significantly slower than the given time */
/*void msdelay(WORD millisec)
{
    int n;

    while (millisec--)
    {
        for (n=0; n<1500; n++)
            inp(0x61);
    }
}*/

/* Print a hex dump of a buffer */
void hexdump(BYTE *buff, WORD len)
{
    BYTE c, str[17];
    WORD j, n=0;
    while (n < len)                /* For each line of 16 bytes... */
    {
        Uart_Printf("  %04x:", n);
        for (j=0; j<16; j++)                /* For each byte of 16... */
        {
            Uart_Printf("%c", j==8 ? '-':' ');   /* Put '-' after 8 bytes */
            if (n++ >= len)                 /* If no bytes left... */
            {
                Uart_Printf("  ");               /* Fill out space */
                str[j] = 0;
            }
            else                            /* If bytes left... */
            {
                Uart_Printf("%02x", c = *buff++);/* Print byte value */
                str[j] = c>=' '&&c<='~' ? c : '.';
            }                               /* Save char if valid */
        }
        str[j] = 0;                        /* Print char string */
        Uart_Printf("  %s\n", str);
    }
}

/* Directory 'findfirst' for both DOS and Win32; returns string, or null */
/*char *find_first(char *path)
{
#if WIN32
    if (dir_handle != -1L)
        _findclose(dir_handle);
    return((dir_handle=_findfirst(path, &dir_block))!=-1L ? dir_block.name : 0);
#else
    return(findfirst(path, &dir_block, 0)==0 ? dir_block.ff_name : 0);
#endif
}*/

/* Directory 'findnext' for both DOS and Win32; returns string, or null */
/*char *find_next(void)
{
#if WIN32
    char *s=0;
    if (_findnext(dir_handle, &dir_block)==0)
        s = dir_block.name;
    else
    {
        _findclose(dir_handle);
        dir_handle = -1L;
    }
    return(s);
#else
    return(findnext(&dir_block)==0 ? dir_block.ff_name : 0);
#endif
}*/

/* Return the length of a file that has been found */
/*long find_filesize(void)
{
#if WIN32
    return(dir_block.size);
#else
    return(dir_block.ff_fsize);
#endif
}*/
/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性大战xxxxx久久久| 国精产品一区一区三区mba桃花 | 美女视频网站黄色亚洲| jlzzjlzz亚洲日本少妇| 精品欧美乱码久久久久久| 自拍偷拍亚洲综合| 成a人片国产精品| 国产女同互慰高潮91漫画| 精品一区二区三区的国产在线播放| 色综合天天做天天爱| 亚洲欧美日韩系列| 99re在线视频这里只有精品| 国产精品护士白丝一区av| 国产成人亚洲精品狼色在线| 亚洲精品一区二区三区99| 日韩一区精品字幕| 欧美乱熟臀69xxxxxx| 视频一区二区不卡| 2023国产精品自拍| 粉嫩久久99精品久久久久久夜| 欧美国产精品中文字幕| 成人高清伦理免费影院在线观看| 日本一二三四高清不卡| 色悠悠亚洲一区二区| 日本视频一区二区三区| 成人av在线资源网| 国产欧美日韩亚州综合| 91女神在线视频| 性做久久久久久| 久久综合999| 日韩视频一区二区| 极品瑜伽女神91| 一区二区三区在线视频免费观看| 欧美日韩三级在线| 丁香五精品蜜臀久久久久99网站| 一区二区三区中文字幕精品精品 | 图片区小说区区亚洲影院| 日韩欧美久久久| 欧美色老头old∨ideo| 国产乱码精品一区二区三区忘忧草| 亚洲天堂免费看| 久久久久久免费| 欧美一区二视频| 色婷婷av一区二区| 大尺度一区二区| 国产在线精品免费| 久久国产欧美日韩精品| 亚洲午夜视频在线| 亚洲一区二区在线免费看| 国产欧美一区二区精品忘忧草| 91精品国产综合久久精品性色| 91啪九色porn原创视频在线观看| 国产乱人伦偷精品视频不卡| 麻豆免费精品视频| 丝袜美腿亚洲一区| 视频在线观看91| 日本成人在线网站| 日韩高清不卡一区二区| 琪琪久久久久日韩精品| 日本网站在线观看一区二区三区 | 国产suv精品一区二区6| 亚洲欧美日韩在线不卡| 精品国产乱码久久久久久夜甘婷婷 | 亚洲国产精品v| 日韩午夜激情视频| 日韩久久久精品| 一本色道亚洲精品aⅴ| 一本色道久久加勒比精品| jiyouzz国产精品久久| 国产成人免费av在线| 不卡的av在线| 99国产精品久| 色国产综合视频| 色婷婷亚洲综合| 欧美写真视频网站| 91黄色激情网站| 精品国产网站在线观看| 国产亚洲精品aa午夜观看| 精品久久久久久久久久久久包黑料| 日韩欧美亚洲一区二区| 久久这里只有精品视频网| 日本一区二区三区视频视频| 中文字幕色av一区二区三区| 亚洲动漫第一页| 国产成人在线看| 欧美色手机在线观看| 91麻豆精品国产自产在线| 久久婷婷一区二区三区| 亚洲欧洲国产日本综合| 亚洲成人一区在线| 国产成人鲁色资源国产91色综| 色婷婷精品大在线视频| 国产三级精品三级在线专区| 夜夜操天天操亚洲| 成人短视频下载| 777精品伊人久久久久大香线蕉| 欧美高清在线一区| 国产亚洲精品aa| 国产精品你懂的在线欣赏| 日本欧美在线观看| 在线看日本不卡| 国产精品成人免费精品自在线观看| 亚洲成人综合网站| 99精品热视频| 国产夜色精品一区二区av| 婷婷六月综合网| 欧美日韩综合色| 无码av中文一区二区三区桃花岛| 成年人午夜久久久| 亚洲国产精品二十页| 国产一区亚洲一区| 精品国产免费人成在线观看| 亚洲18女电影在线观看| 色偷偷88欧美精品久久久| 1区2区3区欧美| 97久久超碰国产精品电影| 中文字幕中文字幕一区二区| 成人手机电影网| 国产精品久久毛片av大全日韩| 国产69精品久久久久毛片| 国产午夜精品美女毛片视频| 成人午夜电影久久影院| 久久影院视频免费| 99久免费精品视频在线观看| 成人欧美一区二区三区1314| av在线不卡免费看| 亚洲尤物视频在线| 欧美一级高清片| 国产成人综合在线播放| 久久久久久影视| 欧美视频一区二| 国产精品一线二线三线| 中文字幕亚洲一区二区va在线| 色噜噜狠狠一区二区三区果冻| 视频一区视频二区中文字幕| 久久久高清一区二区三区| 风间由美性色一区二区三区| 亚洲曰韩产成在线| 欧美国产欧美综合| 欧美疯狂性受xxxxx喷水图片| 久久99最新地址| 自拍偷在线精品自拍偷无码专区| 欧美日韩免费在线视频| 樱桃视频在线观看一区| 国产精品亚洲午夜一区二区三区 | 欧美日韩国产123区| 国产成人精品免费在线| 午夜精品福利视频网站| 17c精品麻豆一区二区免费| 91精品国产麻豆| 91国偷自产一区二区三区观看| 国产精品主播直播| 激情小说欧美图片| 美女视频黄频大全不卡视频在线播放| 亚洲色图欧洲色图婷婷| 欧美激情艳妇裸体舞| 久久综合九色综合欧美98| 欧美一区二区免费视频| 欧美色窝79yyyycom| 精品视频在线免费观看| 色香蕉久久蜜桃| 色婷婷国产精品综合在线观看| 成人免费av在线| 成人精品国产一区二区4080| av电影天堂一区二区在线观看| 国产**成人网毛片九色| 成人h动漫精品| 色综合久久久久| 欧美日韩国产高清一区二区三区 | 激情六月婷婷综合| 国产做a爰片久久毛片| 国产自产v一区二区三区c| 激情综合色播五月| 国产高清不卡二三区| 高清视频一区二区| 欧美一a一片一级一片| 欧美精品一二三四| 51精品国自产在线| 日韩色在线观看| 亚洲免费观看高清完整版在线观看 | 亚洲午夜羞羞片| 麻豆精品国产91久久久久久| 激情五月婷婷综合| 色先锋久久av资源部| 精品免费视频一区二区| 国产精品欧美一区喷水| 亚洲男人都懂的| 免费人成网站在线观看欧美高清| 韩国av一区二区三区在线观看| 色综合av在线| 久久久久久久综合日本| 亚洲一区二区三区爽爽爽爽爽| 美国三级日本三级久久99| av电影天堂一区二区在线| 91精品国产欧美一区二区18| 国产精品国产三级国产普通话三级 | 精品免费视频一区二区| 午夜精品福利久久久| 色综合中文综合网| 美腿丝袜在线亚洲一区 |