/* debug.c */

#include "main.h"


#if DEBUG

static FILE *f = NULL;


void debug_file (char *filename)
{
    if (f)
        fclose (f);
    if (filename)
        f = fopen (filename, "w");
}


int dprintf (char *format, ...)
{
    int ret = 0;
    va_list list;
    Bool doit = TRUE;
    va_start (list, format);
    if (!f)
        doit = _swix (HostFS_HostVdu, 0) == NULL;
    if (doit)
        ret = vfprintf(f ? f : stdout, format, list);
    if (!f)
        _swix (HostFS_TubeVdu, 0);
    va_end(list);
    if (f)
        fflush(f);
    return ret;
}


void display (char *format, ...)

  /* like printf, but displays the result in a wimp "error" box */

{
    char s[256];
    va_list ap;
    error e;

    va_start (ap, format);
    vsprintf (s, format, ap);
    va_end (ap);

    e.errnum = 0;
    strcpy (e.errmess, s);

    _swi ( Wimp_ReportError, I0|I1|I2,
              (int)&e,
              1+16,          /* just an OK button, omit "Error from" */
              "Debug" );

    return;
}


#endif
