/*========================================================================*\
 |  Datei: jpc.h                                      Datum: 22 Mai 1998  |
 *------------------------------------------------------------------------*
 |   Konstanten sowie globale Variablen und Funktionen zum JPC-Programm   |
 |                                                                        |
\*========================================================================*/

#include <stdio.h>
#include <exec/types.h>

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

/* Variablen aus "jpc.c": */
extern char win0[80];
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 UWORD 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 */
extern char separator;          /* normalerweise '|' */

char* writeconfig();            /* Fensterpositionen sichern */

/* ein Intuition-Trick, aus "snapshot.c": */
int snapshot();

/* Funktionen zur Entschlüsselung der Indexdateien, aus "select.c": */
void clr_select     ();
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 saveall( int full );
void browse ();

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;

/* Debug-Ausgaben */
extern FILE *dbugf;             /* s. "jpc.c" */
#define TRACE0( f )         if( dbugf ) { fprintf( dbugf, f ); fflush(dbugf); }
#define TRACE1( f, p1 )     if( dbugf ) { fprintf( dbugf, f, p1 ); fflush(dbugf); }
#define TRACE2( f, p1, p2 ) if( dbugf ) { fprintf( dbugf, f, p1, p2 ); fflush(dbugf); }
#define TRACE3( f, p1, p2, p3 ) if( dbugf ) { fprintf( dbugf, f, p1, p2, p3 ); fflush(dbugf); }

