cdesktopenv/cde/include/Dt/Search.h

286 lines
9.4 KiB
C

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these libraries and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/* $TOG: Search.h /main/12 1998/04/03 17:10:35 mgreess $
*
* (c) Copyright 1996 Digital Equipment Corporation.
* (c) Copyright 1996 Hewlett-Packard Company.
* (c) Copyright 1996 International Business Machines Corp.
* (c) Copyright 1996 Sun Microsystems, Inc.
* (c) Copyright 1996 Novell, Inc.
* (c) Copyright 1996 FUJITSU LIMITED.
* (c) Copyright 1996 Hitachi.
*/
/*
* COMPONENT_NAME: austext
*
* FUNCTIONS: none
*
* ORIGINS: 27
*
*
* (C) COPYRIGHT International Business Machines Corp. 1994,1995
* All Rights Reserved
* Licensed Materials - Property of IBM
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/
#ifndef _Search_h
#define _Search_h
/********************** Search.h ***********************
* $TOG: Search.h /main/12 1998/04/03 17:10:35 mgreess $
* Jan 1994.
* Public header file for DtSearch/AusText API.
* Formerly named ausapi.h. Externals renamed
* from ausapi_... or aa_... to DtSearch conventions.
* Documentation in dtsearch.doc.
*
*/
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE 1
#endif
#include <time.h>
#include <stdio.h>
#include <string.h>
#if defined(__linux__)
# define __SVR4_I386_ABI_L1__
#endif
#include <limits.h>
#if defined(__linux__)
# undef __SVR4_I386_ABI_L1__
# ifndef WORD_BIT
# define WORD_BIT 32
# endif
# ifndef LONG_BIT
# define LONG_BIT 32
# endif
#endif
#define DtSrVERSION "0.6"
#define DtSrMAXHITS 20
#define DtSrMAX_KTNAME 13
#define DtSrMAX_DB_KEYSIZE 32
#define DtSrMAXWIDTH_HWORD 134
#define DtSrMAX_STEMCOUNT 8
/****************************************/
/* */
/* RETURN CODES */
/* */
/****************************************/
#define DtSrOK 0 /* normal, successful response */
#define DtSrPASSWD 1 /* failed communications authentication */
#define DtSrNOTAVAIL 2 /* no hits on search, no such rec, etc */
#define DtSrFAIL 3 /* misc unsuccessful engine returns */
#define DtSrREINIT 4 /* engine reinitialized, request canceled */
#define DtSrERROR 5 /* fatal caller (client) program error */
#define DtSrABORT 6 /* fatal engine failure, caller must abort */
#define DtSrCOMM 7 /* fatal communications failure */
/* In order to share databases among heterogenous machines,
* certain integer types must be defined that are invariably
* 2 and 4 bytes on all architectures.
* Note WORD_BIT == 32 does not guarantee short == 16.
*/
#if (WORD_BIT == 16)
typedef int DtSrINT16;
typedef unsigned int DtSrUINT16;
#elif (WORD_BIT == 32)
typedef short DtSrINT16;
typedef unsigned short DtSrUINT16;
#else
#error Unable to typedef DtSrINT16 and DtSrUINT16
#endif
#if (WORD_BIT == 32)
typedef int DtSrINT32;
typedef unsigned int DtSrUINT32;
#elif (LONG_BIT == 32)
typedef long DtSrINT32;
typedef unsigned long DtSrUINT32;
#else
#error Unable to typedef DtSrINT32 and DtSrUINT32
#endif
#ifndef DB_ADDR
typedef DtSrINT32 DB_ADDR; /* vista.h: must be 4 bytes */
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
typedef DtSrUINT32 DtSrObjdate;
/****************************************/
/* */
/* DtSrKeytype */
/* */
/****************************************/
typedef struct {
char is_selected; /* TRUE: user has selected this keytype */
char ktchar; /* first char of opera record key */
char name [DtSrMAX_KTNAME+1]; /* label string used in UI */
} DtSrKeytype;
/****************************************/
/* */
/* DtSrResult */
/* */
/****************************************/
/* DtSrResult ormerly DITTO. DtSrObj types formerly ORT_. */
typedef struct _DtSrResult {
struct _DtSrResult *link; /* ptr to next list node */
DtSrUINT32 flags; /* (reserved) */
DtSrINT32 objflags; /* flags from object record */
#define DtSrFlDELETE (1<<0) /* (reserved) */
#define DtSrFlOLDNOTES (1<<1) /* (reserved) */
#define DtSrFlNOTAVAIL (1<<2) /* object not retrievable from engine */
DtSrUINT32 objuflags; /* user flags from database rec */
DtSrINT32 objsize; /* in uncompressed bytes */
DtSrObjdate objdate; /* zero means object 'undated' */
DtSrINT16 objtype; /* from database record */
#define DtSrObjUNKNOWN 0 /* object type unknown or not applicable */
#define DtSrObjTEXT 1 /* generic, unformatted flat text */
#define DtSrObjBINARY 2 /* generic binary object */
#define DtSrObjSGML 3 /* generic SGML formatted document */
#define DtSrObjHTML 4 /* HTML formatted document */
#define DtSrObjPOSTSCR 6 /* Postscript document */
#define DtSrObjINTERLF 7 /* Interleaf document */
#define DtSrObjDTINFO 8 /* DtInfo document */
DtSrINT16 objcost; /* (reserved) */
int dbn; /* dbnamesv index */
DB_ADDR dba; /* data base addr within database */
DtSrINT16 language; /* language of the database */
#define DtSrLaENG 0 /* English, ASCII char set (default) */
#define DtSrLaENG2 1 /* English, ISO Latin-1 char set */
#define DtSrLaESP 2 /* Spanish, ISO Latin-1 char set */
#define DtSrLaFRA 3 /* French, ISO Latin-1 char set */
#define DtSrLaITA 4 /* Italian, ISO Latin-1 char set */
#define DtSrLaDEU 5 /* German, ISO Latin-1 char set */
#define DtSrLaJPN 6 /* Japanese, EUC, auto kanji compounds */
#define DtSrLaJPN2 7 /* Japanese, EUC, listed kanji compounds */
#define DtSrLaLAST 7 /* Last supported DtSrLa constant */
char reckey [DtSrMAX_DB_KEYSIZE]; /* object's db key */
int proximity; /* 'distance' of object from query */
char *abstractp; /* object's abstract from db*/
} DtSrResult;
/****************************************/
/* */
/* DtSrHitword */
/* */
/****************************************/
typedef struct {
long offset; /* word location in cleartext */
long length; /* length of word */
} DtSrHitword;
/************************************************/
/* */
/* Functions */
/* */
/************************************************/
extern void DtSearchAddMessage (char *msg);
extern int DtSearchHasMessages (void);
extern char *DtSearchGetMessages (void);
extern void DtSearchFreeMessages (void);
extern int DtSearchGetMaxResults (void);
extern void DtSearchSetMaxResults (int new_max_results);
extern char *DtSearchFormatObjdate (DtSrObjdate objdate);
extern void DtSearchExit (int return_code) __attribute__((noreturn));
extern void DtSearchAddUserExit (void (*user_exit)(int));
extern void DtSearchRemoveUserExit (void);
extern int DtSearchSortResults (DtSrResult **list, int sort_type);
#define DtSrSORT_PROX 1 /* sort on proximity */
#define DtSrSORT_DATE 2 /* sort on objdate */
extern int DtSearchMergeResults (DtSrResult **targ, DtSrResult **src);
extern int DtSearchFreeResults (DtSrResult **list);
extern DtSrObjdate
DtSearchValidDateString (char *date_string);
extern int DtSearchInit (
char *argv0,
char *userid,
long switches,
char *config_file,
FILE *err_file,
char ***dbnames,
int *dbcount);
/* Bit values valid for switches argument: */
#define DtSrInNOLOCALE 0x0001L /* do not exec setlocale() */
#define DtSrInSIGNAL 0x0002L /* register abort signal handlers */
#define DtSrInUSEROCF 0x0004L /* (reserved) */
#define DtSrInENAB_NOHUP 0x0008L /* enab nohup for backgnd progms */
#define DtSrInIDEBUG 0x0010L /* set initialization debugging */
#define DtSrInSDEBUG 0x0020L /* set search debugging */
#define DtSrInRDEBUG 0x0040L /* set retrieval debugging */
#define DtSrInCDEBUG 0x0080L /* set communications debugging */
#define DtSrInANY_DEBUG \
(DtSrInIDEBUG | DtSrInSDEBUG | DtSrInRDEBUG | DtSrInCDEBUG)
#define DtSrInRDWR 0x0100L /* open db files for read and write */
extern int DtSearchReinit (
char ***dbnames,
int *dbcount);
extern int DtSearchGetKeytypes (
char *dbname,
int *ktcount,
DtSrKeytype **keytypes);
extern int DtSearchQuery (
void *qry,
char *dbname,
int search_type,
char *date1,
char *date2,
DtSrResult **results,
long *resultscount,
char *stems,
int *stemcount);
extern int DtSearchRetrieve (
char *dbname,
DB_ADDR dba,
char **cleartext,
long *clearlen,
int *fzkeyi);
extern int DtSearchHighlight (
char *dbname,
char *cleartext,
DtSrHitword **hitwptr,
long *hitwcount,
int search_type,
char *stems,
int stemcount);
/********************** Search.h ***********************/
#endif /* _Search_h */