#define _POSIX_SOURCE 1

#include <varargs.h>
#include <stdio.h>
#include <sybfront.h>
#include <sybdb.h>
#include "sybdbex.h"
#include "people.h"

extern FILE *logFileFp;

void debugPrint(int va_alist);

int err_handler(dbproc, severity, dberr, oserr, dberrstr, oserrstr)
DBPROCESS       *dbproc;
int             severity;
int             dberr;
int             oserr;
char            *dberrstr;
char            *oserrstr;
{
 if ((dbproc == NULL) || (DBDEAD(dbproc)))
  return(INT_EXIT);
 else
 {
  fprintf (ERR_CH, "DB-Library error:\n\t%s\n", dberrstr);

  if (oserr != DBNOERR)
   fprintf (ERR_CH, "Operating-system error:\n\t%s\n", oserrstr);

  return(INT_CANCEL);
 }
}

int msg_handler(dbproc, msgno, msgstate, severity, msgtext,
                srvname, procname, line)

DBPROCESS       *dbproc;
DBINT           msgno;
int             msgstate;
int             severity;
char            *msgtext;
char            *srvname;
char            *procname;
DBUSMALLINT     line;

{
  if (severity > 1)
  {
    fprintf (ERR_CH, "Msg %ld, Level %d, State %d\n",
      msgno, severity, msgstate);
    if (strlen(srvname) > 0)
      fprintf (ERR_CH, "Server '%s', ", srvname);
    if (strlen(procname) > 0)
      fprintf (ERR_CH, "Procedure '%s', ", procname);
    if (line > 0)
      fprintf (ERR_CH, "Line %d", line);
    fprintf (ERR_CH, "\n\t%s\n", msgtext);
  }
  return(0);
}

void debugPrint(va_alist)
va_dcl
{
  va_list arg_ptr;
  FILE *debugFp;
  
#ifdef onlineDebug
  debugFp=stdout;
#else
  debugFp=logFileFp;
#endif

  va_start(arg_ptr);
  vfprintf(debugFp, va_arg(arg_ptr, char*), arg_ptr);
  fflush(debugFp);
  va_end(arg_ptr);
}
