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

📄 hterror.c

📁 firtext搜索引擎源码
💻 C
字号:
/*								      HTError.c**	ERROR REPORT MODULE****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTError.c,v 2.46 1999/02/22 22:10:11 frystyk Exp $****	This is the implementaion of an error message reporting system that **	reports errors occured either in a stream module (structured streams**	inclusive) or in a protocol module. A list of errors are put into the**	a list which can be bound to a request object or a stream**** History:**  	05 May 94	Written by Henrik Frystyk, frystyk@w3.org**	   Nov 95	Made list as basic data structure*//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "HTInet.h"#include "HTError.h"					 /* Implemented here */struct _HTError {    HTErrorElement 	element;        /* Index number into HTError */    HTSeverity 		severity; 	/* A la VMS */    BOOL               	ignore;         /* YES if msg should not go to user */    void *  		par;          	/* Explanation, e.g. filename  */    int 		length;   	/* For copying by generic routine */    char *       	where;          /* Which function */};PRIVATE HTErrorShow HTShowMask = HT_ERR_SHOW_DEFAULT;/* ------------------------------------------------------------------------- *//*	HTError_add**	-----------**	Add an error message to the error list. `par' and `where'**	might be set to NULL. If par is a string, it is sufficient to let**	length be unspecified, i.e., 0. If only a part of the string is**	wanted then specify a length inferior to strlen((char *) par).**	The string is '\0' terminated automaticly.**	NOTE: See also HTError_addSystem for system errors**	Return YES if OK, else NO*/PUBLIC BOOL HTError_add (HTList * 	list,			 HTSeverity	severity,			 BOOL		ignore,			 int		element,			 void *		par,			 unsigned int	length,			 char *		where){    HTError *newError;    if (!list) return NO;    if ((newError = (HTError *) HT_CALLOC(1, sizeof(HTError))) == NULL)        HT_OUTOFMEM("HTError_add");    newError->element = (HTErrorElement) element;    newError->severity = severity;    newError->ignore = ignore;    if (par) {	if (!length) length = (int) strlen((char *) par);	if ((newError->par = HT_MALLOC(length+1)) == NULL)	    HT_OUTOFMEM("HTErrorError");	memcpy(newError->par, par, length);	*(((char *) newError->par)+length) = '\0';	newError->length = length;    }    newError->where = where;    HTTRACE(CORE_TRACE, "Error....... Add %3d\tSeverity: %d\tParameter: `%s\'\tWhere: `%s\'\n" _	    element _	    newError->severity _	    newError->par ? (char *) newError->par : "Unspecified" _	    newError->where ? newError->where : "Unspecified");    return HTList_addObject(list, (void *) newError);}/*	HTError_addSystem**	-----------------**	Add a system error message to the error list. syscall**	is the name of the system call, e.g. "close". The message put to the**	list is that corresponds to the error number passed. **	Returns YES if OK, else NO**	See also HTError_add.*/PUBLIC BOOL HTError_addSystem (HTList *		list,			       HTSeverity	severity,			       int		errornumber,			       BOOL		ignore,			       char *		syscall){    BOOL status = NO;    if (list) {	char * errsysmsg = HTErrnoString(errornumber);	status = HTError_add(list, severity, ignore, HTERR_SYSTEM,			     errsysmsg, errsysmsg ? (int) strlen(errsysmsg) : 0,			     syscall ? syscall : "unknown");	HT_FREE(errsysmsg);    }    return status;}/*	HTError_deleteAll**	-----------------**	Remove all errors from the list*/PUBLIC BOOL HTError_deleteAll (HTList * list){    if (list) {	HTList *cur = list;	HTError *pres;	while ((pres = (HTError *) HTList_nextObject(cur))) {	    HT_FREE(pres->par);	    HT_FREE(pres);	}	HTList_delete(list);	return YES;    }    return NO;}/*	HTError_deleteLast**	------------------**	Deletes the last error entry added to the list**	Return YES if OK, else NO*/PUBLIC BOOL HTError_deleteLast (HTList * list){    if (list) {	HTError * old = (HTError *) HTList_removeLastObject(list);	if (old) {	    HTTRACE(CORE_TRACE, "Error....... Delete %p\n" _ old);	    HT_FREE(old->par);	    HT_FREE(old);	    return YES;	}    }    return NO;}/*	HTError_ignoreLast**	------------------**	Turns on the `ignore' flag for the most recent error entered the**	error list. Returns YES if OK else NO*/PUBLIC BOOL HTError_ignoreLast (HTList * list){    if (list) {	HTError * last = (HTError *) HTList_lastObject(list);	if (last) {	    HTTRACE(CORE_TRACE, "Error....... Ignore %p\n" _ last);	    last->ignore = YES;	    return YES;	}    }    return NO;}/*	HTError_setIgnore**	-----------------*/PUBLIC BOOL HTError_setIgnore (HTError * info){    if (info) {	info->ignore = YES;	return YES;    }    return NO;}/***	Get show preferences*/PUBLIC HTErrorShow HTError_show (void){    return HTShowMask;}PUBLIC BOOL HTError_setShow (HTErrorShow mask){    HTShowMask = mask;    return YES;}/***	Should we show this error entry?*/PUBLIC BOOL HTError_doShow (HTError *info){    return (info && ((HTShowMask & info->severity) &&		     (!info->ignore || HTShowMask & HT_ERR_SHOW_IGNORE)));}/***	Various Fields in the HTError structure*/PUBLIC HTSeverity HTError_severity (HTError *info){    return info ? info->severity : ERR_UNKNOWN;}/***	Any error more serious than this?*/PUBLIC BOOL HTError_hasSeverity (HTList * list, HTSeverity severity){    if (list) {	HTList * cur = list;	HTError * pres;	while ((pres = (HTError *) HTList_nextObject(cur))) {	    if (pres->severity < severity) {		HTTRACE(CORE_TRACE, "Severity.... Found a severe error\n");		return YES;	    }	}    }    return NO;}PUBLIC int HTError_index (HTError * info){    return info ? info->element : HTERR_INTERNAL;}PUBLIC void * HTError_parameter (HTError * info, int * length){    if (info) {	*length = info->length;	return info->par;    }    return NULL;}PUBLIC const char * HTError_location (HTError * info){    return info ? info->where : NULL;}

⌨️ 快捷键说明

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