summaryrefslogtreecommitdiff
path: root/os2/perlrexx.c
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>2001-12-18 21:45:41 -0500
committerJarkko Hietaniemi <jhi@iki.fi>2001-12-19 15:04:03 +0000
commitdfcfdb64cf0cdaf3745a1082d9b4a94480414c62 (patch)
treedfc2125707e6a7bfbab5dcff74d64102e2c0509d /os2/perlrexx.c
parent505f3f16d6d7a74e8cf7e8f3a785787b06f153f9 (diff)
downloadperl-dfcfdb64cf0cdaf3745a1082d9b4a94480414c62.tar.gz
OS/2 build
Message-ID: <20011219024541.A29803@math.ohio-state.edu> (skipped the t/TEST change) p4raw-id: //depot/perl@13805
Diffstat (limited to 'os2/perlrexx.c')
-rw-r--r--os2/perlrexx.c231
1 files changed, 0 insertions, 231 deletions
diff --git a/os2/perlrexx.c b/os2/perlrexx.c
index 5706b18969..fbeb493e95 100644
--- a/os2/perlrexx.c
+++ b/os2/perlrexx.c
@@ -320,234 +320,3 @@ PERLDROPALLEXIT(PCSZ name, LONG rargc, const RXSTRING *rargv, PCSZ queuename, PR
retstr->strlength = 0;
return 0;
}
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSMODULEMGR
-#define INCL_DOSMISC
-#define INCL_DOSEXCEPTIONS
-#define INCL_DOSERRORS
-#define INCL_REXXSAA
-#include <os2.h>
-
-/*
- * "The Road goes ever on and on, down from the door where it began."
- */
-
-#ifdef OEMVS
-#ifdef MYMALLOC
-/* sbrk is limited to first heap segement so make it big */
-#pragma runopts(HEAP(8M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON))
-#else
-#pragma runopts(HEAP(2M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON))
-#endif
-#endif
-
-
-#include "EXTERN.h"
-#include "perl.h"
-
-static void xs_init (pTHX);
-static PerlInterpreter *my_perl;
-
-#if defined (__MINT__) || defined (atarist)
-/* The Atari operating system doesn't have a dynamic stack. The
- stack size is determined from this value. */
-long _stksize = 64 * 1024;
-#endif
-
-/* Register any extra external extensions */
-
-/* Do not delete this line--writemain depends on it */
-EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
-
-static void
-xs_init(pTHX)
-{
- char *file = __FILE__;
- dXSUB_SYS;
- newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
-}
-
-int perlos2_is_inited;
-
-static void
-init_perlos2(void)
-{
-/* static char *env[1] = {NULL}; */
-
- Perl_OS2_init3(0, 0, 0);
-}
-
-static int
-init_perl(int doparse)
-{
- int exitstatus;
- char *argv[3] = {"perl_in_REXX", "-e", ""};
-
- if (!perlos2_is_inited) {
- perlos2_is_inited = 1;
- init_perlos2();
- }
- if (my_perl)
- return 1;
- if (!PL_do_undump) {
- my_perl = perl_alloc();
- if (!my_perl)
- return 0;
- perl_construct(my_perl);
- PL_perl_destruct_level = 1;
- }
- if (!doparse)
- return 1;
- exitstatus = perl_parse(my_perl, xs_init, 3, argv, (char **)NULL);
- return !exitstatus;
-}
-
-/* The REXX-callable entrypoints ... */
-
-ULONG PERL (PCSZ name, LONG rargc, const RXSTRING *rargv,
- PCSZ queuename, PRXSTRING retstr)
-{
- int exitstatus;
- char buf[256];
- char *argv[3] = {"perl_from_REXX", "-e", buf};
- ULONG ret;
-
- if (rargc != 1) {
- sprintf(retstr->strptr, "one argument expected, got %ld", rargc);
- retstr->strlength = strlen (retstr->strptr);
- return 1;
- }
- if (rargv[0].strlength >= sizeof(buf)) {
- sprintf(retstr->strptr,
- "length of the argument %ld exceeds the maximum %ld",
- rargv[0].strlength, (long)sizeof(buf) - 1);
- retstr->strlength = strlen (retstr->strptr);
- return 1;
- }
-
- if (!init_perl(0))
- return 1;
-
- memcpy(buf, rargv[0].strptr, rargv[0].strlength);
- buf[rargv[0].strlength] = 0;
-
- exitstatus = perl_parse(my_perl, xs_init, 3, argv, (char **)NULL);
- if (!exitstatus) {
- exitstatus = perl_run(my_perl);
- }
-
- perl_destruct(my_perl);
- perl_free(my_perl);
- my_perl = 0;
-
- if (exitstatus)
- ret = 1;
- else {
- ret = 0;
- sprintf(retstr->strptr, "%s", "ok");
- retstr->strlength = strlen (retstr->strptr);
- }
- PERL_SYS_TERM1(0);
- return ret;
-}
-
-ULONG PERLEXIT (PCSZ name, LONG rargc, const RXSTRING *rargv,
- PCSZ queuename, PRXSTRING retstr)
-{
- if (rargc != 0) {
- sprintf(retstr->strptr, "no arguments expected, got %ld", rargc);
- retstr->strlength = strlen (retstr->strptr);
- return 1;
- }
- PERL_SYS_TERM1(0);
- return 0;
-}
-
-ULONG PERLTERM (PCSZ name, LONG rargc, const RXSTRING *rargv,
- PCSZ queuename, PRXSTRING retstr)
-{
- if (rargc != 0) {
- sprintf(retstr->strptr, "no arguments expected, got %ld", rargc);
- retstr->strlength = strlen (retstr->strptr);
- return 1;
- }
- if (!my_perl) {
- sprintf(retstr->strptr, "no perl interpreter present");
- retstr->strlength = strlen (retstr->strptr);
- return 1;
- }
- perl_destruct(my_perl);
- perl_free(my_perl);
- my_perl = 0;
-
- sprintf(retstr->strptr, "%s", "ok");
- retstr->strlength = strlen (retstr->strptr);
- return 0;
-}
-
-
-ULONG PERLINIT (PCSZ name, LONG rargc, const RXSTRING *rargv,
- PCSZ queuename, PRXSTRING retstr)
-{
- if (rargc != 0) {
- sprintf(retstr->strptr, "no argument expected, got %ld", rargc);
- retstr->strlength = strlen (retstr->strptr);
- return 1;
- }
- if (!init_perl(1))
- return 1;
-
- sprintf(retstr->strptr, "%s", "ok");
- retstr->strlength = strlen (retstr->strptr);
- return 0;
-}
-
-ULONG PERLEVAL (PCSZ name, LONG rargc, const RXSTRING *rargv,
- PCSZ queuename, PRXSTRING retstr)
-{
- SV *res, *in;
- STRLEN len;
- char *str;
-
- if (rargc != 1) {
- sprintf(retstr->strptr, "one argument expected, got %ld", rargc);
- retstr->strlength = strlen (retstr->strptr);
- return 1;
- }
-
- if (!init_perl(1))
- return 1;
-
- {
- dSP;
- int ret;
-
- ENTER;
- SAVETMPS;
-
- PUSHMARK(SP);
- in = sv_2mortal(newSVpvn(rargv[0].strptr, rargv[0].strlength));
- eval_sv(in, G_SCALAR);
- SPAGAIN;
- res = POPs;
- PUTBACK;
-
- ret = 0;
- if (SvTRUE(ERRSV) || !SvOK(res))
- ret = 1;
- str = SvPV(res, len);
- if (len <= 256 /* Default buffer is 256-char long */
- || !DosAllocMem((PPVOID)&retstr->strptr, len,
- PAG_READ|PAG_WRITE|PAG_COMMIT)) {
- memcpy(retstr->strptr, str, len);
- retstr->strlength = len;
- } else
- ret = 1;
-
- FREETMPS;
- LEAVE;
-
- return ret;
- }
-}