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

📄 sortspec.c

📁 harvest是一个下载html网页得机器人
💻 C
字号:
/* * Copyright (c) 1995-2001, Index Data. * See the file LICENSE for details. * * $Id: sortspec.c,v 1.4 2001/11/13 23:00:43 adam Exp $ */#include <stdio.h>#include <string.h>#include <stdlib.h>#include <yaz/proto.h>#include <yaz/oid.h>#include <yaz/sortspec.h>Z_SortKeySpecList *yaz_sort_spec (ODR out, const char *arg){    char sort_string_buf[32], sort_flags[32];    Z_SortKeySpecList *sksl = (Z_SortKeySpecList *)        odr_malloc (out, sizeof(*sksl));    int off;        sksl->num_specs = 0;    sksl->specs = (Z_SortKeySpec **)odr_malloc (out, sizeof(sksl->specs) * 20);        while ((sscanf (arg, "%31s %31s%n", sort_string_buf,		    sort_flags, &off)) == 2  && off > 1)    {        int i;        char *sort_string_sep;	char *sort_string = sort_string_buf;        Z_SortKeySpec *sks = (Z_SortKeySpec *)odr_malloc (out, sizeof(*sks));        Z_SortKey *sk = (Z_SortKey *)odr_malloc (out, sizeof(*sk));	        arg += off;        sksl->specs[sksl->num_specs++] = sks;        sks->sortElement = (Z_SortElement *)	    odr_malloc (out, sizeof(*sks->sortElement));        sks->sortElement->which = Z_SortElement_generic;        sks->sortElement->u.generic = sk;                if ((sort_string_sep = strchr (sort_string, '=')))        {	    int i = 0;            sk->which = Z_SortKey_sortAttributes;            sk->u.sortAttributes = (Z_SortAttributes *)		odr_malloc (out, sizeof(*sk->u.sortAttributes));            sk->u.sortAttributes->id = 		yaz_oidval_to_z3950oid(out, CLASS_ATTSET, VAL_BIB1);            sk->u.sortAttributes->list = (Z_AttributeList *)		odr_malloc (out, sizeof(*sk->u.sortAttributes->list));            sk->u.sortAttributes->list->attributes = (Z_AttributeElement **)		odr_malloc (out, 10 * 			    sizeof(*sk->u.sortAttributes->list->attributes));	    while (i < 10 && sort_string && sort_string_sep)	    {		Z_AttributeElement *el = (Z_AttributeElement *)		    odr_malloc (out, sizeof(*el));		sk->u.sortAttributes->list->attributes[i] = el;		el->attributeSet = 0;		el->attributeType = odr_intdup (out, atoi (sort_string));		el->which = Z_AttributeValue_numeric;		el->value.numeric =		    odr_intdup (out, atoi (sort_string_sep + 1));		i++;		sort_string = strchr(sort_string, ',');		if (sort_string)		{		    sort_string++;		    sort_string_sep = strchr (sort_string, '=');		}	    }            sk->u.sortAttributes->list->num_attributes = i;        }        else        {            sk->which = Z_SortKey_sortField;            sk->u.sortField = odr_strdup (out, sort_string);        }        sks->sortRelation = odr_intdup (out, Z_SortRelation_ascending);        sks->caseSensitivity = odr_intdup (out, Z_SortCase_caseSensitive);        sks->which = Z_SortKeySpec_null;        sks->u.null = odr_nullval ();	        for (i = 0; sort_flags[i]; i++)        {            switch (sort_flags[i])            {            case 'd':            case 'D':            case '>':                *sks->sortRelation = Z_SortRelation_descending;                break;            case 'a':            case 'A':            case '<':                *sks->sortRelation = Z_SortRelation_ascending;                break;            case 'i':            case 'I':                *sks->caseSensitivity = Z_SortCase_caseInsensitive;                break;            case 'S':            case 's':                *sks->caseSensitivity = Z_SortCase_caseSensitive;                break;            }        }    }    if (!sksl->num_specs)	return 0;    return sksl;}

⌨️ 快捷键说明

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