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

📄 asn1p_class.c

📁 RSA加密/解密算法源码 asn1c-0.9.12
💻 C
字号:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <errno.h>#include <assert.h>#include "asn1parser.h"asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_new() {	asn1p_wsyntx_chunk_t *wc;	wc = calloc(1, sizeof(*wc));	return wc;}voidasn1p_wsyntx_chunk_free(asn1p_wsyntx_chunk_t *wc) {	if(wc) {		if(wc->ref)			asn1p_ref_free(wc->ref);		if(wc->buf)			free(wc->buf);		free(wc);	}}asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_clone(asn1p_wsyntx_chunk_t *wc) {	asn1p_wsyntx_chunk_t *nc;	nc = asn1p_wsyntx_chunk_new();	if(nc) {		if(wc->buf) {			nc->buf = malloc(wc->len + 1);			if(nc->buf) {				nc->len = wc->len;				memcpy(nc->buf, wc->buf, wc->len);				nc->buf[nc->len] = '\0';			}		}		if(wc->ref) {			nc->ref = asn1p_ref_clone(wc->ref);		}		if(!nc->ref && !nc->buf) {			asn1p_wsyntx_chunk_free(nc);			return NULL;		}	}	return nc;}asn1p_wsyntx_t *asn1p_wsyntx_new() {	asn1p_wsyntx_t *wx;	wx = calloc(1, sizeof(*wx));	if(wx) {		TQ_INIT(&(wx->chunks));	}	return wx;}voidasn1p_wsyntx_free(asn1p_wsyntx_t *wx) {	if(wx) {		asn1p_wsyntx_chunk_t *wc;		while((wc = TQ_REMOVE(&(wx->chunks), next)))			asn1p_wsyntx_chunk_free(wc);		free(wx);	}}asn1p_wsyntx_t *asn1p_wsyntx_clone(asn1p_wsyntx_t *wx) {	asn1p_wsyntx_t *nw;	nw = asn1p_wsyntx_new();	if(nw) {		asn1p_wsyntx_chunk_t *wc;		asn1p_wsyntx_chunk_t *nc;		TQ_FOR(wc, &(wx->chunks), next) {			nc = asn1p_wsyntx_chunk_clone(wc);			if(nc) {				TQ_ADD(&(nw->chunks), nc, next);			} else {				asn1p_wsyntx_free(nw);				return NULL;			}		}	}	return nw;}asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_fromref(asn1p_ref_t *ref, int do_copy) {	asn1p_wsyntx_chunk_t *wc;	if(do_copy) {		static asn1p_wsyntx_chunk_t tmp;		tmp.ref = ref;		wc = asn1p_wsyntx_chunk_clone(&tmp);	} else {		wc = asn1p_wsyntx_chunk_new();		if(wc) wc->ref = ref;	}	return wc;}asn1p_wsyntx_chunk_t *asn1p_wsyntx_chunk_frombuf(char *buf, int len, int do_copy) {	asn1p_wsyntx_chunk_t *wc;	if(do_copy) {		static asn1p_wsyntx_chunk_t tmp;		tmp.buf = buf;		tmp.len = len;		wc = asn1p_wsyntx_chunk_clone(&tmp);	} else {		wc = asn1p_wsyntx_chunk_new();		if(wc) {			wc->buf = buf;			wc->len = len;		}	}	return wc;}

⌨️ 快捷键说明

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