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

📄 error.c

📁 在网络中,有时候会想检查自己电脑的端口的状态,这是端口扫描器的C语言源代码,
💻 C
字号:
 /*  * remark, error, panic - diagnostics handlers  *   * Feature: %m is expanded to the system errno text.  *   * Author: Wietse Venema.  */#include <stdio.h>#include <errno.h>#ifdef __STDC__#include <stdarg.h>#define VARARGS(func,type,arg) func(type arg, ...)#define VASTART(ap,type,name)  va_start(ap,name)#define VAEND(ap)              va_end(ap)#else#include <varargs.h>#define VARARGS(func,type,arg) func(va_alist) va_dcl#define VASTART(ap,type,name)  {type name; va_start(ap); name = va_arg(ap, type)#define VAEND(ap)              va_end(ap);}#endifchar   *progname = "unknown";extern int errno;extern char *strerror();extern char *strcpy();#include "lib.h"/* percentm - replace %m by error message associated with value in err */char   *percentm(buf, str, err)char   *buf;char   *str;int     err;{    char   *ip = str;    char   *op = buf;    while (*ip) {	switch (*ip) {	case '%':	    switch (ip[1]) {	    case '\0':				/* don't fall off end */		*op++ = *ip++;		break;	    case 'm':				/* replace %m */		strcpy(op, strerror(err));		op += strlen(op);		ip += 2;		break;	    default:				/* leave %<any> alone */		*op++ = *ip++, *op++ = *ip++;		break;	    }	default:	    *op++ = *ip++;	}    }    *op = 0;    return (buf);}/* error - print warning on stderr and terminate */void    VARARGS(error, char *, fmt){    va_list ap;    int     err = errno;    char    buf[BUFSIZ];    VASTART(ap, char *, fmt);    fprintf(stderr, "%s: ", progname);    vfprintf(stderr, percentm(buf, fmt, err), ap);    fprintf(stderr, "\n");    VAEND(ap);    exit(1);}/* remark - print warning on stderr and continue */void    VARARGS(remark, char *, fmt){    va_list ap;    int     err = errno;    char    buf[BUFSIZ];    VASTART(ap, char *, fmt);    fprintf(stderr, "%s: ", progname);    vfprintf(stderr, percentm(buf, fmt, err), ap);    fprintf(stderr, "\n");    VAEND(ap);}/* panic - print warning on stderr and dump core */void    VARARGS(panic, char *, fmt){    va_list ap;    int     err = errno;    char    buf[BUFSIZ];    VASTART(ap, char *, fmt);    fprintf(stderr, "%s: ", progname);    vfprintf(stderr, percentm(buf, fmt, err), ap);    fprintf(stderr, "\n");    VAEND(ap);    abort();}

⌨️ 快捷键说明

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