⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc.c

📁 pfil src. solaris, freebsd
💻 C
字号:
/* * Copyright (C) 2003 by Darren Reed. * * See the IPFILTER.LICENCE file for details on licencing. */#ifndef __hpux#pragma ident "@(#)$Id: misc.c,v 1.12 2003/11/29 07:11:03 darrenr Exp $"#elsestruct uio;#endif#include <sys/systm.h>#include <sys/types.h>#include <sys/stream.h>#include "compat.h"#ifdef	__hpux# define	BCOPY(a,b,c)	bcopy((caddr_t)a, (caddr_t)b, c)#endif#ifdef	sun# define	BCOPY(a,b,c)	bcopy((char *)a, (char *)b, c)#endifvoid mb_copydata(min, off, len, buf)mblk_t *min;size_t off, len;char *buf;{	u_char *s, *bp = (u_char *)buf;	size_t mlen, olen, clen;	mblk_t *m;	for (m = min; (m != NULL) && (len > 0); m = m->b_cont) {		if (MTYPE(m) != M_DATA)			continue;		s = m->b_rptr;		mlen = m->b_wptr - s;		olen = MIN(off, mlen);		if ((olen == mlen) || (olen < off)) {			off -= olen;			continue;		} else if (olen) {			off -= olen;			s += olen;			mlen -= olen;		}		clen = MIN(mlen, len);		BCOPY(s, bp, clen);		len -= clen;		bp += clen;	}}void mb_copyback(min, off, len, buf)mblk_t *min;size_t off, len;char *buf;{	u_char *s, *bp = (u_char *)buf;	size_t mlen, olen, clen;	mblk_t *m, *mp;	for (m = min, mp = NULL; (m != NULL) && (len > 0); m = m->b_cont) {		mp = m;		if (MTYPE(m) != M_DATA)			continue;		s = m->b_rptr;		mlen = m->b_wptr - s;		olen = MIN(off, mlen);		if ((olen == mlen) || (olen < off)) {			off -= olen;			continue;		} else if (olen) {			off -= olen;			s += olen;			mlen -= olen;		}		clen = MIN(mlen, len);		BCOPY(bp, s, clen);		len -= clen;		bp += clen;	}	if ((m == NULL) && (mp != NULL)) {		if (len > 0) {			mlen = mp->b_datap->db_lim - mp->b_wptr;			if (mlen > 0) {				if (mlen > len)					mlen = len;				bcopy((char *)bp, (char *)mp->b_wptr, mlen);				bp += mlen;				len -= mlen;				mp->b_wptr += mlen;#ifdef  STRUIO_IP# if SOLARIS2 < 10				mp->b_datap->db_struiolim = mp->b_wptr;# endif				mp->b_datap->db_struioflag &= ~STRUIO_IP;#endif			}		}		if (len > 0) {			m = allocb(len, BPRI_MED);			if (m != NULL) {				bcopy((char *)bp, (char *)m->b_wptr, len);				m->b_band = mp->b_band;				m->b_wptr += len;				linkb(mp, m);			}		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -