JAVAMAIN.C 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /* javamain.c: Copyright (C) Codemist Ltd., 1996. */
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stdarg.h>
  5. #include <ctype.h>
  6. #include <setjmp.h>
  7. #include "machine.h"
  8. #include "tags.h"
  9. #undef IGNORE
  10. #include "cslerror.h"
  11. #include "externs.h"
  12. #include "read.h"
  13. #include "stream.h"
  14. #include "arith.h"
  15. #include "entries.h"
  16. #include "javahost.h"
  17. #include "javaglb.h"
  18. /* #include "javatype.h" */
  19. #include <winsock.h>
  20. int debugging;
  21. void jdebug(char *fmt, ...)
  22. { va_list ap;
  23. char buffer[256];
  24. va_start(ap, fmt);
  25. vsprintf(buffer, fmt, ap);
  26. va_end(ap);
  27. err_printf("CJ-debug: %s\n", buffer);
  28. }
  29. jmp_buf java_exit;
  30. void jsyserr(char *fmt, ...)
  31. { va_list ap;
  32. char buffer[256];
  33. va_start(ap, fmt);
  34. vsprintf(buffer, fmt, ap);
  35. va_end(ap);
  36. err_printf("\nFatal Codemist-Java error: %s\n", buffer);
  37. longjmp(java_exit, 1);
  38. }
  39. void *jmalloc(unsigned32 n)
  40. { void *p;
  41. if (n == 0) return 0;
  42. p = malloc(n);
  43. if (p == 0) jsyserr("out of memory");
  44. return p;
  45. }
  46. static void dbg_set(char *p)
  47. { for (;;) switch (*p++)
  48. {
  49. case 0: return;
  50. case 'c': if (isdigit(*p)) debugging |= 1 << (*p-'0');
  51. break;
  52. }
  53. }
  54. int JAVAmain(int argc, char *argv[])
  55. { ClassFile *p = 0;
  56. int seen = 0;
  57. int i;
  58. debugging = 0;
  59. for (i = 1; i<argc; i++)
  60. { char *a = argv[i];
  61. if (a[0] == '-') switch (a[1])
  62. {
  63. case 'q': dbg_set(&a[2]); break;
  64. default: err_printf("Unknown option %s\n", a); break;
  65. }
  66. else
  67. { p = rdClassFile(a), seen++;
  68. }
  69. }
  70. if (!setjmp(java_exit))
  71. { if (!seen) err_printf("usage: %s [-<opt>] file.java\n", argv[0]);
  72. else if (p) javaint(p);
  73. }
  74. return 0;
  75. }
  76. void process_java_file(FILE *f)
  77. {
  78. ClassFile *p;
  79. p = rdClassFILE1(f, "<from Lisp>");
  80. if (p && !setjmp(java_exit)) javaint(p);
  81. err_printf("exiting from Java sub-system\n");
  82. }
  83. Lisp_Object MS_CDECL java0(Lisp_Object env, int nargs, ...)
  84. {
  85. Lisp_Object nil = C_nil;
  86. return onevalue(nil);
  87. }
  88. Lisp_Object MS_CDECL java1(Lisp_Object env, Lisp_Object a)
  89. {
  90. Lisp_Object nil = C_nil;
  91. return onevalue(nil);
  92. }
  93. Lisp_Object MS_CDECL java2(Lisp_Object env, Lisp_Object a, Lisp_Object b)
  94. {
  95. Lisp_Object nil = C_nil;
  96. return onevalue(nil);
  97. }
  98. Lisp_Object MS_CDECL java3(Lisp_Object env, int nargs, ...)
  99. {
  100. Lisp_Object nil = C_nil;
  101. return onevalue(nil);
  102. }
  103. Lisp_Object MS_CDECL javan(Lisp_Object env, int nargs, ...)
  104. {
  105. Lisp_Object nil = C_nil;
  106. return onevalue(nil);
  107. }
  108. /* end of javamain.c */
  109.