/* javamain.c: Copyright (C) Codemist Ltd., 1996. */
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <ctype.h>
#include <setjmp.h>
#include "machine.h"
#include "tags.h"
#undef IGNORE
#include "cslerror.h"
#include "externs.h"
#include "read.h"
#include "stream.h"
#include "arith.h"
#include "entries.h"
#include "javahost.h"
#include "javaglb.h"
/* #include "javatype.h" */
#include <winsock.h>
int debugging;
void jdebug(char *fmt, ...)
{ va_list ap;
char buffer[256];
va_start(ap, fmt);
vsprintf(buffer, fmt, ap);
va_end(ap);
err_printf("CJ-debug: %s\n", buffer);
}
jmp_buf java_exit;
void jsyserr(char *fmt, ...)
{ va_list ap;
char buffer[256];
va_start(ap, fmt);
vsprintf(buffer, fmt, ap);
va_end(ap);
err_printf("\nFatal Codemist-Java error: %s\n", buffer);
longjmp(java_exit, 1);
}
void *jmalloc(unsigned32 n)
{ void *p;
if (n == 0) return 0;
p = malloc(n);
if (p == 0) jsyserr("out of memory");
return p;
}
static void dbg_set(char *p)
{ for (;;) switch (*p++)
{
case 0: return;
case 'c': if (isdigit(*p)) debugging |= 1 << (*p-'0');
break;
}
}
int JAVAmain(int argc, char *argv[])
{ ClassFile *p = 0;
int seen = 0;
int i;
debugging = 0;
for (i = 1; i<argc; i++)
{ char *a = argv[i];
if (a[0] == '-') switch (a[1])
{
case 'q': dbg_set(&a[2]); break;
default: err_printf("Unknown option %s\n", a); break;
}
else
{ p = rdClassFile(a), seen++;
}
}
if (!setjmp(java_exit))
{ if (!seen) err_printf("usage: %s [-<opt>] file.java\n", argv[0]);
else if (p) javaint(p);
}
return 0;
}
void process_java_file(FILE *f)
{
ClassFile *p;
p = rdClassFILE1(f, "<from Lisp>");
if (p && !setjmp(java_exit)) javaint(p);
err_printf("exiting from Java sub-system\n");
}
Lisp_Object MS_CDECL java0(Lisp_Object env, int nargs, ...)
{
Lisp_Object nil = C_nil;
return onevalue(nil);
}
Lisp_Object MS_CDECL java1(Lisp_Object env, Lisp_Object a)
{
Lisp_Object nil = C_nil;
return onevalue(nil);
}
Lisp_Object MS_CDECL java2(Lisp_Object env, Lisp_Object a, Lisp_Object b)
{
Lisp_Object nil = C_nil;
return onevalue(nil);
}
Lisp_Object MS_CDECL java3(Lisp_Object env, int nargs, ...)
{
Lisp_Object nil = C_nil;
return onevalue(nil);
}
Lisp_Object MS_CDECL javan(Lisp_Object env, int nargs, ...)
{
Lisp_Object nil = C_nil;
return onevalue(nil);
}
/* end of javamain.c */