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

📄 tstisamb.c

📁 harvest是一个下载html网页得机器人
💻 C
字号:
/* $Id: tstisamb.c,v 1.1 2003/06/23 15:36:11 adam Exp $   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003   Index Data ApsThis file is part of the Zebra server.Zebra is free software; you can redistribute it and/or modify it underthe terms of the GNU General Public License as published by the FreeSoftware Foundation; either version 2, or (at your option) any laterversion.Zebra is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public Licensefor more details.You should have received a copy of the GNU General Public Licensealong with Zebra; see the file LICENSE.zebra.  If not, write to theFree Software Foundation, 59 Temple Place - Suite 330, Boston, MA02111-1307, USA.*/#include <string.h>#include <yaz/xmalloc.h>#include <yaz/log.h>#include <isamb.h>#include <assert.h>int compare_item(const void *a, const void *b){    int ia, ib;    memcpy(&ia, a, sizeof(int));    memcpy(&ib, b, sizeof(int));    return ia - ib;}void *code_start(int mode){    return 0;}void code_item(int mode, void *p, char **dst, char **src){    memcpy (*dst, *src, sizeof(int));    (*dst) += sizeof(int);    (*src) += sizeof(int);}void code_reset(void *p){}void code_stop(int mode, void *p){}struct read_info {    int no;    int max;};int code_read(void *vp, char **dst, int *insertMode){    struct read_info *ri = (struct read_info *)vp;    int x;    if (ri->no > ri->max)	exit(3);    if (ri->no == ri->max)	return 0;    x = ri->no;    memcpy (*dst, &x, sizeof(int));    (*dst)+=sizeof(int);    (ri->no)++;    *insertMode = 1;    return 1;}void tst_insert(ISAMB isb, int n){    ISAMC_I isamc_i;    ISAMC_P isamc_p;    struct read_info ri;    ISAMB_PP pp;    char key_buf[10];    /* insert a number of entries */    ri.no = 0;    ri.max = n;    isamc_i.clientData = &ri;    isamc_i.read_item = code_read;        isamc_p = isamb_merge (isb, 0 /* new list */ , &isamc_i);    /* read the entries */    pp = isamb_pp_open (isb, isamc_p);        ri.no = 0;    while(isamb_pp_read (pp, key_buf))    {	int x;	memcpy (&x, key_buf, sizeof(int));	if (x != ri.no)	{	    yaz_log(LOG_DEBUG, "isamb_pp_read. Got %d (expected %d)",		    x, ri.no);	    exit(3);	}	ri.no++;    }    if (ri.no != ri.max)    {	yaz_log(LOG_DEBUG, "ri.max != ri.max (%d != %d)", ri.no, ri.max);	exit(3);    }    isamb_pp_close(pp);    isamb_unlink(isb, isamc_p);}int main(int argc, char **argv){    BFiles bfs;    ISAMB isb;    ISAMC_M method;    if (argc == 2)	yaz_log_init_level(LOG_ALL);	    /* setup method (attributes) */    method.compare_item = compare_item;    method.code_start = code_start;    method.code_item = code_item;    method.code_reset = code_reset;    method.code_stop = code_stop;    /* create block system */    bfs = bfs_create(0, 0);    if (!bfs)    {	yaz_log(LOG_DEBUG, "bfs_create failed");	exit(1);    }    /* create isam handle */    isb = isamb_open (bfs, "isamb", 1, &method, 0);    if (!isb)    {	yaz_log(LOG_DEBUG, "isamb_open failed");	exit(2);    }    tst_insert(isb, 1);    tst_insert(isb, 2);    tst_insert(isb, 20);    tst_insert(isb, 100);    tst_insert(isb, 500);    tst_insert(isb, 10000);        /* close isam handle */    isamb_close(isb);    /* exit block system */    bfs_destroy(bfs);    exit(0);    return 0;}

⌨️ 快捷键说明

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