X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Findex.h;h=fa3226de6ed474a20a59824019d50b403a8a6a8f;hb=49f49aa27c8d63cea66dfb5a9e06e5735c835509;hp=ccb2714f006b3222ec197166745264ab50b6400f;hpb=583fe2d2582ab4078527c152b232ddf359336e91;p=idzebra-moved-to-github.git diff --git a/index/index.h b/index/index.h index ccb2714..fa3226d 100644 --- a/index/index.h +++ b/index/index.h @@ -1,4 +1,4 @@ -/* $Id: index.h,v 1.86 2002-08-28 19:52:29 adam Exp $ +/* $Id: index.h,v 1.90 2002-10-23 14:28:20 adam Exp $ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Index Data Aps @@ -34,6 +34,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #if HAVE_SYS_TIMES_H #include #endif +#include #include #include @@ -42,7 +43,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include #define ISAM_DEFAULT "c" -#include +#include #include #include "recindex.h" #include "zebraapi.h" @@ -92,7 +93,8 @@ void dirs_add (struct dirs_info *p, const char *src, int sysno, time_t mtime); void dirs_del (struct dirs_info *p, const char *src); void dirs_free (struct dirs_info **pp); -struct dir_entry *dir_open (const char *rep, const char *base); +struct dir_entry *dir_open (const char *rep, const char *base, + int follow_links); void dir_sort (struct dir_entry *e); void dir_free (struct dir_entry **e_p); @@ -170,16 +172,22 @@ int key_SU_encode (int ch, char *out); // extern Res common_resource; +#define ENCODE_BUFLEN 768 struct encode_info { - int sysno; + int sysno; /* previously written values for delta-compress */ int seqno; int cmd; - char buf[768]; + int prevsys; /* buffer for skipping insert/delete pairs */ + int prevseq; + int prevcmd; + int keylen; /* tells if we have an unwritten key in buf, and how long*/ + char buf[ENCODE_BUFLEN]; }; void encode_key_init (struct encode_info *i); char *encode_key_int (int d, char *bp); void encode_key_write (char *k, struct encode_info *i, FILE *outf); +void encode_key_flush (struct encode_info *i, FILE *outf); typedef struct { char *term; @@ -206,6 +214,13 @@ struct recKeys { int prevSeqNo; }; +#if 1 +struct sortKeys { + int buf_used; + int buf_max; + char *buf; +}; +#else struct sortKey { char *string; int length; @@ -213,6 +228,7 @@ struct sortKey { int attrUse; struct sortKey *next; }; +#endif struct zebra_register { char *name; @@ -241,11 +257,12 @@ struct zebra_register { int stop_flag; int active; /* 0=shutdown, 1=enabled and inactive, 2=activated */ - - struct recKeys keys; +#if 1 + struct sortKeys sortKeys; +#else struct sortKey *sortKeys; - +#endif char **key_buf; size_t ptr_top; size_t ptr_i; @@ -424,7 +441,7 @@ void zebra_record_int_end (void *fh, off_t offset); void extract_flushRecordKeys (ZebraHandle zh, SYSNO sysno, int cmd, struct recKeys *reckeys); void extract_flushSortKeys (ZebraHandle zh, SYSNO sysno, - int cmd, struct sortKey **skp); + int cmd, struct sortKeys *skp); void extract_schema_add (struct recExtractCtrl *p, Odr_oid *oid); void extract_token_add (RecWord *p); int explain_extract (void *handle, Record rec, data1_node *n); @@ -435,6 +452,8 @@ int fileExtract (ZebraHandle zh, SYSNO *sysno, const char *fname, int zebra_begin_read (ZebraHandle zh); void zebra_end_read (ZebraHandle zh); +int zebra_file_stat (const char *file_name, struct stat *buf, + int follow_links); YAZ_END_CDECL