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

📄 inline.c

📁 harvest是一个下载html网页得机器人
💻 C
字号:
/*    $Id: inline.c,v 1.3 2003/11/09 11:49:49 oleg Exp $*/#include <stdio.h>#include <string.h>#include <ctype.h>#include <yaz/yaz-util.h>#include "inline.h"static void inline_destroy_subfield_recursive(inline_subfield *p);inline_field *inline_mk_field(void){    inline_field *p = (inline_field *) xmalloc(sizeof(*p));    if (p)    {	memset(p, 0, sizeof(*p));	p->name = (char *) xmalloc(SZ_FNAME+1);	*(p->name) = '\0';	p->ind1 = (char *) xmalloc(SZ_IND+1);	*(p->ind1) = '\0';	p->ind2 = (char *) xmalloc(SZ_IND+1);	*(p->ind2) = '\0';    }    return p;}void inline_destroy_field(inline_field *p){    if (p)    {	if (p->name) xfree(p->name);	if (p->ind1) xfree(p->ind1);	if (p->ind2) xfree(p->ind2);	if (p->list)	    inline_destroy_subfield_recursive(p->list);	xfree(p);    }}static inline_subfield *inline_mk_subfield(inline_subfield *parent){    inline_subfield *p = (inline_subfield *)xmalloc(sizeof(*p));        if (p)    {	memset(p, 0, sizeof(*p));	p->name = (char *) xmalloc(SZ_SFNAME+1);	*(p->name) = '\0';	p->parent = parent;    }    return p;}#if 0static void inline_destroy_subfield(inline_subfield *p){    if (p)    {	if (p->name) xfree(p->name);	if (p->data) xfree(p->data);	if (p->parent) p->parent->next = p->next;	xfree(p);    }}#endifstatic void inline_destroy_subfield_recursive(inline_subfield *p){    if (p)    {	inline_destroy_subfield_recursive(p->next);	if (p->name) xfree(p->name);	if (p->data) xfree(p->data);	if (p->parent)	    p->parent->next = 0;	xfree(p);    }}int inline_parse(inline_field *pif, const char *tag, const char *s){    inline_field *pf = pif;    char *p = (char *)s;        if (!pf)	return -1;	    if (pf->name[0] == '\0')    {	if ((sscanf(p, "%3s", pf->name)) != 1)	    return -2;	p += SZ_FNAME;	if (!memcmp(pf->name, "00", 2))	{	    pf->list = inline_mk_subfield(0);	    pf->list->data = xstrdup(p);	}	else	{	    if ((sscanf(p, "%c%c", pf->ind1, pf->ind2)) != 2)		return -3;	}    }    else    {	inline_subfield *psf = inline_mk_subfield(0);		sscanf(tag, "%1s", psf->name);	psf->data = xstrdup(p);		if (!pf->list)	{	    pf->list = psf;	}	else	{	    inline_subfield *last = pf->list;	    while (last->next)		last = last->next;	    last->next = psf;	}    }    return 0;}

⌨️ 快捷键说明

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