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

📄 asn1fix_internal.h

📁 ASN.1解析解码工具,可以解析各种ASN.1格式的文件,并对相应的BER文件解码
💻 H
字号:
#ifndef	_ASN1FIX_INTERNAL_H_#define	_ASN1FIX_INTERNAL_H_#ifdef	HAVE_CONFIG_H	#include <asn1parser/config.h>#endif/* * System headers required in various modules. */#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <string.h>#include <ctype.h>		/* isupper() */#include <errno.h>#include <assert.h>#ifdef	HAVE_UNISTD_H#include <unistd.h>#endif#include <asn1parser/asn1parser.h>		/* Our lovely ASN.1 parser module */#include "asn1fix.h"#ifdef	WIN32#define	EX_NOINPUT	66#define	EX_DATAERR	65#define	snprintf	_snprintf#define	strcasecmp	stricmp#endif#ifndef	ETOOMANYREFS#define	ETOOMANYREFS	144#endif/* * A definition of a function that will log error messages. */typedef void (*error_logger_f)(int _is_fatal, const char *fmt, ...);/* * Universal argument. */typedef struct arg_s {	asn1p_t         *asn;	asn1p_module_t  *mod;	asn1p_expr_t    *expr;	error_logger_f   eh;	error_logger_f   debug;	void            *key;           /* The next level key */	enum asn1f_flags flags;} arg_t;/* * Functions performing normalization of various types. */#include "asn1fix_misc.h"		/* Support functions */#include "asn1fix_value.h"		/* Value processing */#include "asn1fix_cstring.h"		/* Fix cstring values */#include "asn1fix_compat.h"		/* Data compatibility */#include "asn1fix_constr.h"		/* Constructed types */#include "asn1fix_class.h"		/* CLASS support */#include "asn1fix_cws.h"		/* CLASS WITH SYNTAX support */#include "asn1fix_param.h"		/* Parameterization */#include "asn1fix_retrieve.h"		/* Data retrieval */#include "asn1fix_enum.h"		/* Process ENUMERATED */#include "asn1fix_integer.h"		/* Process INTEGER */#include "asn1fix_bitstring.h"		/* Process BIT STRING */#include "asn1fix_dereft.h"		/* Dereference types */#include "asn1fix_derefv.h"		/* Dereference values */#include "asn1fix_tags.h"		/* Tags-related stuff */#include "asn1fix_constraint.h"		/* Constraint manipulation */#include "asn1fix_crange.h"		/* Constraint groking, exportable */#include "asn1fix_export.h"		/* Exported functions *//* * Merge the return value of the called function with the already * partially computed return value of the current function. */#define	RET2RVAL(ret,rv) do {					\		int __ret = ret;				\		switch(__ret) {					\		case  0: break;					\		case  1: if(rv) break;				\		case -1: rv = __ret; break;			\		default:					\			assert(__ret >= -1 && __ret <= 1);	\			rv = -1;				\		}						\	} while(0)/* * Temporary substitute module for the purposes of evaluating expression. */#define	WITH_MODULE(tmp_mod, expr)	do {			\		void *_saved_mod = arg->mod;			\		arg->mod = tmp_mod;				\		do { expr; } while(0);				\		arg->mod = _saved_mod;				\	} while(0)#ifdef __GNUC__

#define	LOG(code, fmt, args...) do {				\		int _save_errno = errno;			\		if(code < 0) {					\			if(arg->debug)				\				arg->debug(code,		\				"%s: " fmt " in %s (%s:%d)",	\				__func__, ##args,		\				arg->mod->source_file_name,	\				__FILE__, __LINE__);		\		} else if(arg->eh) {				\			arg->eh(code, fmt " in %s", ##args,	\				arg->mod->source_file_name);	\		}						\		errno = _save_errno;				\	} while(0)#define	DEBUG(fmt, args...)	LOG(-1, fmt, ##args)#define	FATAL(fmt, args...)	LOG( 1, fmt, ##args)#define	WARNING(fmt, args...)	LOG( 0, fmt, ##args)#else /*__GNUC__*/#define LOG			arg->debug#define	DEBUG		#define	FATAL		asn1p_error_logger#define	WARNING		asn1p_error_loggerint asn1p_error_logger(const char *fmt,...);#endif /*__GNUC__*//* * Define the symbol corresponding to the name of the current function. */#if __STDC_VERSION__ < 199901#if !(__GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3)#define __func__	(char *)0	/* Name of the current function */#endif	/* GNUC *//* __func__ is supposed to be defined */#endif#endif	/* _ASN1FIX_INTERNAL_H_ */

⌨️ 快捷键说明

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