home *** CD-ROM | disk | FTP | other *** search
/ Peanuts NeXT Software Archives / Peanuts-2.iso / Developer / webobjects / extensions / win-nt / WOPerl-lite-10e7.exe / Examples / WOPerl / woperl / perlmain.c < prev   
Encoding:
C/C++ Source or Header  |  1996-08-09  |  2.5 KB  |  105 lines

  1. /* $Id: perlmain.c,v 1.1 1996/08/09 01:29:30 pedja Exp $
  2.  * "The Road goes ever on and on, down from the door where it began."
  3.  */
  4.  
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. #include "EXTERN.h"
  9. #include "perl.h"
  10.  
  11. #ifdef __cplusplus
  12. }
  13. #  define EXTERN_C extern "C"
  14. #else
  15. #  define EXTERN_C extern
  16. #endif
  17.  
  18. static void xs_init _((void));
  19. static PerlInterpreter *my_perl;
  20.  
  21. int
  22. #ifdef CAN_PROTOTYPE
  23. main(int argc, char **argv, char **env)
  24. #else
  25. main(argc, argv, env)
  26. int argc;
  27. char **argv;
  28. char **env;
  29. #endif
  30. {
  31.     int exitstatus;
  32.  
  33.     PERL_SYS_INIT(&argc,&argv);
  34.  
  35.     perl_init_i18nl14n(1);
  36.  
  37. #if !defined MULTIPLICITY
  38.     if (!do_undump)
  39. #endif
  40.     {
  41. #ifdef MULTIPLICITY
  42.     my_perl=calloc(1,sizeof(PerlInterpreter));
  43. #else
  44.     my_perl = perl_alloc();
  45. #endif
  46.     if (!my_perl)
  47.         exit(1);
  48.     perl_construct( my_perl );
  49.     }
  50.  
  51.     exitstatus = perl_parse( my_perl, xs_init, argc, argv, (char **) NULL );
  52.     if (exitstatus)
  53.     exit( exitstatus );
  54.  
  55.     exitstatus = perl_run( my_perl );
  56.  
  57.     perl_destruct( my_perl );
  58.     perl_free( my_perl );
  59.  
  60.     exit( exitstatus );
  61. }
  62.  
  63. /* Register any extra external extensions */
  64.  
  65. /* Do not delete this line--writemain depends on it */
  66. EXTERN_C void boot_DynaLoader _((CV* cv));
  67. EXTERN_C void boot_ObjPerl _((CV* cv));
  68. EXTERN_C void boot_WOPerl _((CV* cv));
  69.  
  70. EXTERN_C void boot_Fcntl _((CV* cv));
  71. EXTERN_C void boot_FileHandle _((CV* cv));
  72. EXTERN_C void boot_NDBM_File _((CV* cv));
  73. EXTERN_C void boot_ODBM_File _((CV* cv));
  74. EXTERN_C void boot_POSIX _((CV* cv));
  75. EXTERN_C void boot_SDBM_File _((CV* cv));
  76. EXTERN_C void boot_Safe _((CV* cv));
  77. EXTERN_C void boot_Socket _((CV* cv));
  78.  
  79. static void
  80. xs_init()
  81. {
  82.     char *file = __FILE__;
  83.     {
  84.         newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
  85.  
  86.     sv_setpv(perl_get_sv("ObjPerl::loaded",TRUE),"statically");
  87.     sv_setpv(perl_get_sv("ObjPerl::foundation_loaded",TRUE),"statically");
  88.         newXS("ObjPerl::bootstrap", boot_ObjPerl, file);
  89.     sv_setpv(perl_get_sv("WOPerl::WebObjects_loaded",TRUE),"statically");
  90.         newXS("WOPerl::bootstrap", boot_WOPerl, file);
  91. #ifdef STATIC_LINK_ALL
  92.         newXS("Fcntl::bootstrap", boot_Fcntl, file);
  93.         newXS("FileHandle::bootstrap", boot_FileHandle, file);
  94.         newXS("NDBM_File::bootstrap", boot_NDBM_File, file);
  95.         newXS("ODBM_File::bootstrap", boot_ODBM_File, file);
  96. #  ifndef NeXT
  97.         newXS("POSIX::bootstrap", boot_POSIX, file);
  98. #  endif
  99.         newXS("SDBM_File::bootstrap", boot_SDBM_File, file);
  100.         newXS("Safe::bootstrap", boot_Safe, file);
  101.         newXS("Socket::bootstrap", boot_Socket, file);
  102. #endif
  103.     }
  104. }
  105.