/*************************************************************************\
  jpc.h:
     Konstanten sowie globale Variablen und Funktionen zum JPC-Programm
\*************************************************************************/

#define DBMAX 5
#define MAXBLKSIZE 2048
#define MAXINDEX 20
#define MAXFNAMES 20
#define MAXTARGET 10
#define BUFFERS 2       /* wieviele 2048er-Blöcke auf einmal lesen? */

/* Variablen aus "jpc.c": */
extern FILE *dbugf;
extern char *dbpath[DBMAX];             /* Verzeichnisnamen, "JPCPOP" etc. */
extern char dbcode[DBMAX][20];          /* Namen der Init-Dateien, "DB_1" etc. */
extern char indpath[MAXINDEX+1][20];    /* Verzeichnisname, z. B. "KOMPO" */
extern char indname[MAXINDEX+1][20];    /* z. B. "Komponist" */
extern int indcode[MAXINDEX+1];         /* interne Kennummern, z. B. 46 */
extern char indshort[MAXINDEX+1];       /* Kennbuchstaben, z. B. 'K' */
extern int indexes;
extern char fnamebuf[MAXFNAMES][20];    /* z. B. "Interpret" */
extern char *fieldname[256];            /* verweist auf Einträge in fnamebuf[] */
extern UBYTE ibm_decode[256],sort[256]; /* Zeichentabellen */
extern int thisdb;              /* welche der drei Datenbanken? */
extern long int reccnt;         /* Größe der Datenbank */
extern char *selected;          /* ein Flag pro Datensatz */
extern long int selcnt;         /* Summe über selected[] */
extern int targets;
extern char target[MAXTARGET][80];      /* Suchwörter */
extern int blksize;     /* i. a. 2048 */
extern int recnumsize;  /* 2 oder 3 Bytes */
extern int linelen;     /* Format der Kurztext-Dateien */

/* Funktionen zur Entschlüsselung der Indexdateien, aus "select.c": */
void clr_select(void);
void eval_select(int mode);
void hand_auslese(int exakt);
void hunt(int index, char *key0, char *key1);

/* Klartextausgaben aus der Hauptdatenbank, aus "output.c": */
#define PLAIN     0
#define BOLD      1
#define HILITE    2
#define ITALIC    3
#define UNDERLINE 4
#define INVERSE   7

void long_entry(long recnum, FILE *f, int tagstyle, int hitstyle);
void short_entry(long recnum, FILE *f, int truncate);
void saveone(long rec, int full);
void saveall(int full);
void browse(void);

extern char out1[80], out2[80];        /* Namen der Ergebnisdateien */
extern char win1[80], win2[80], win3[80];       /* drei RAW:-Fenster */

/* allgemeine Datei- und Stringoperationen, aus "util.c": */
void intercept(int class);
ULONG getlong(FILE *f);
ULONG getbytes(FILE *f, int anz);
UWORD getword(FILE *f);
int match(UBYTE s1[], UBYTE s2[], int noabbrev);
void civilize(char s[], int numeric);

extern int ctrl_c;

