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

📄 util.c

📁 网卡驱动相关实例 这是和网卡NT KMD驱动程序有关的一些资料和例子。主要是以下三方面内容: 3.1 article 一些有用的文档 3.2 Canberra 网络诊听工具Ethern
💻 C
字号:
/* * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 *	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: (1) source code distributions * retain the above copyright notice and this paragraph in its entirety, (2) * distributions including binary code include the above copyright notice and * this paragraph in its entirety in the documentation or other materials * provided with the distribution, and (3) all advertising materials mentioning * features or use of this software display the following acknowledgement: * ``This product includes software developed by the University of California, * Lawrence Berkeley Laboratory and its contributors.'' 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */#ifndef lintstatic const char rcsid[] =    "@(#) $Header: util.c,v 1.58 97/05/09 14:52:17 leres Exp $ (LBL)";#endif#include <sys/types.h>#ifndef WIN32
#include <sys/time.h>#include <sys/file.h>#else
#include <winsock.h>
#endif
#include <sys/stat.h>
#include <ctype.h>#include <errno.h>#ifdef HAVE_FCNTL_H#include <fcntl.h>#endif#ifdef HAVE_MALLOC_H#include <malloc.h>#endif#include <pcap.h>#include <stdio.h>
#if __STDC__#include <stdarg.h>#else#include <varargs.h>#endif#include <stdlib.h>#include <string.h>#ifdef TIME_WITH_SYS_TIME#include <time.h>#endif#include <unistd.h>#include "interface.h"/* * Print out a filename (or other ascii string). * If ep is NULL, assume no truncation check is needed. * Return true if truncated. */#ifdef WIN32
#define isascii(a) __isascii(a)
#define toascii(a) __toascii(a)
#endif

intfn_print(register const u_char *s, register const u_char *ep){	register int ret;	register u_char c;	ret = 1;			/* assume truncated */	while (ep == NULL || s < ep) {		c = *s++;		if (c == '\0') {			ret = 0;			break;		}		if (!isascii(c)) {			c = toascii(c);			putchar('M');			putchar('-');		}		if (!isprint(c)) {			c ^= 0x40;	/* DEL to ?, others to alpha */			putchar('^');		}		putchar(c);	}	return(ret);}/* * Print out a counted filename (or other ascii string). * If ep is NULL, assume no truncation check is needed. * Return true if truncated. */intfn_printn(register const u_char *s, register u_int n,	  register const u_char *ep){	register int ret;	register u_char c;	ret = 1;			/* assume truncated */	while (ep == NULL || s < ep) {		if (n-- <= 0) {			ret = 0;			break;		}		c = *s++;		if (!isascii(c)) {			c = toascii(c);			putchar('M');			putchar('-');		}		if (!isprint(c)) {			c ^= 0x40;	/* DEL to ?, others to alpha */			putchar('^');		}		putchar(c);	}	return(ret);}/* * Print the timestamp */#ifdef WIN32
#define u_int32_t unsigned int
#endif

voidts_print(register const struct timeval *tvp){	register int s;	DWORD dwVersion;
	DWORD dwWindowsMajorVersion;

	dwVersion=GetVersion();		//get the OS version
	dwWindowsMajorVersion =  (DWORD)(LOBYTE(LOWORD(dwVersion)));

	if (tflag > 0) {		/* Default */#ifndef WIN32
		s = (tvp->tv_sec + thiszone) % 86400;#else
		if (dwVersion >= 0x80000000 && dwWindowsMajorVersion >= 4)			// Windows '95
		 s = (tvp->tv_sec) % 86400;
		else
		 s = (tvp->tv_sec + thiszone) % 86400;
#endif
		(void)printf("%02d:%02d:%02d.%06u ",		    s / 3600, (s % 3600) / 60, s % 60, (u_int32_t)tvp->tv_usec);	} else if (tflag < 0) {
		/* Unix timeval style */		(void)printf("%u.%06u ",		    (u_int32_t)tvp->tv_sec, (u_int32_t)tvp->tv_usec);	}}/* * Convert a token value to a string; use "fmt" if not found. */const char *tok2str(register const struct tok *lp, register const char *fmt,	register int v){	static char buf[128];	while (lp->s != NULL) {		if (lp->v == v)			return (lp->s);		++lp;	}	if (fmt == NULL)		fmt = "#%d";	(void)sprintf(buf, fmt, v);	return (buf);}/* VARARGS */__dead void#if __STDC__error(const char *fmt, ...)#elseerror(fmt, va_alist)	const char *fmt;	va_dcl#endif{	va_list ap;	(void)fprintf(stderr, "%s: ", program_name);#if __STDC__	va_start(ap, fmt);#else	va_start(ap);#endif	(void)vfprintf(stderr, fmt, ap);	va_end(ap);	if (*fmt) {		fmt += strlen(fmt);		if (fmt[-1] != '\n')			(void)fputc('\n', stderr);	}	exit(1);	/* NOTREACHED */}/* VARARGS */void#if __STDC__warning(const char *fmt, ...)#elsewarning(fmt, va_alist)	const char *fmt;	va_dcl#endif{	va_list ap;	(void)fprintf(stderr, "%s: WARNING: ", program_name);#if __STDC__	va_start(ap, fmt);#else	va_start(ap);#endif	(void)vfprintf(stderr, fmt, ap);	va_end(ap);	if (*fmt) {		fmt += strlen(fmt);		if (fmt[-1] != '\n')			(void)fputc('\n', stderr);	}}/* * Copy arg vector into a new buffer, concatenating arguments with spaces. */char *copy_argv(register char **argv){	register char **p;	register u_int len = 0;	char *buf;	char *src, *dst;	p = argv;	if (*p == 0)		return 0;	while (*p)		len += strlen(*p++) + 1;	buf = (char *)malloc(len);	if (buf == NULL)		error("copy_argv: malloc");	p = argv;	dst = buf;	while ((src = *p++) != NULL) {		while ((*dst++ = *src++) != '\0')			;		dst[-1] = ' ';	}	dst[-1] = '\0';	return buf;}
#ifdef WIN32
#include <io.h>
#include <fcntl.h>
#define stat _stat
#define open _open
#define fstat _fstat
#define read _read
#define O_RDONLY _O_RDONLY
#endif
char *read_infile(char *fname){	register int fd, cc;	register char *cp;	struct stat buf;	fd = open(fname, O_RDONLY);	if (fd < 0)		error("can't open %s: %s", fname, pcap_strerror(errno));	if (fstat(fd, &buf) < 0)		error("can't stat %s: %s", fname, pcap_strerror(errno));	cp = malloc((u_int)buf.st_size + 1);	cc = read(fd, cp, (int)buf.st_size);	if (cc < 0)		error("read %s: %s", fname, pcap_strerror(errno));	if (cc != buf.st_size)		error("short read %s (%d != %d)", fname, cc, (int)buf.st_size);	cp[(int)buf.st_size] = '\0';	return (cp);}

⌨️ 快捷键说明

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