#ifndef LGRIND_H
#define LGRIND_H

#ifndef vms
#  include <sys/types.h>
#  include <sys/stat.h>
#  include <time.h>
#else
#  include <types.h>
#  include <stat.h>
#endif

#define TRUE  1
#define FALSE 0

#define STANDARD 0
#define ALTERNATE 1

#define NOTCODE 0		/* the three states of @incode@ */
#define INITCODE 1
#define OTHERCODE 2

#define PNAMELEN 80		/* length of a function/procedure name */
#define PSMAX 20		/* size of procedure name stacking */

#define BUFFERSIZE	4096

#ifndef vms
#  define OKEXIT	0
#  define BADEXIT	1
#  ifndef DEFSFILE
#    define DEFSFILE	"/usr/lib/lgrindefs"
#  endif
#else
#  define OKEXIT	1
#  define BADEXIT	0
#  define DEFSFILE	"TEX$INPUTS:lgrindefs.src"
#endif

#include "regexp.h"

#ifndef TRUE
#define TRUE	1
#endif

#ifndef FALSE
#define FALSE	0
#endif

extern unsigned char *l_id;

void    Internal_Help(void);
void	readfile(FILE *fp);
void	setlang(void);
void	putScp(unsigned char *os);
void	putKcp(unsigned char *start, unsigned char *end, boolean nix);
void	putVcp(unsigned char *start, unsigned char *end);
int	width(register unsigned char *s, register unsigned char *os);
void	putstr(register unsigned char *cp);
void	outchar(int c);
void	parsechartab(void);
void	parsepreamble(unsigned char *destination);
boolean	isprocNorm(unsigned char *s);
boolean	isprocC(unsigned char *s);
int	getid(unsigned char *s);
int	getredirection(int argc, char *argv[]);
void	setpreambles(void);
void	printpreamble(unsigned char *string);

#endif
