Ejemplo n.º 1
0
/**
   Executes the Perl "Execute" function in SCALAR context.
   TODO: This function seems to be obsolete. Check and clean it out.
         The functionName argument is never used.

   @param args arguments to pass to the Perl function in form of
          a NULL terminated list of C strings
   @param functionName (passed in but never used)

   @return a C2PERLResult_t result set structure
 */
int ExecuteFunctionScalar(char **args, const char *functionName)
{
  dSP ;
  int error;
  int n;
  
  if (!g_init)
    {
      printf ("Error: not connected to C2PERL\nPlease, do C2PERLConnect\n");
      return 0;
    }

  
  n = perl_call_argv("Execute", G_SCALAR  , args);

  SPAGAIN;

  error =  ( n ?  (POPi) : -1);

  return error;
}
Ejemplo n.º 2
0
int main(int argc, char * argv[])
{
	PerlInterpreter *my_perl;
	my_perl = perl_alloc();
	perl_construct( my_perl );

	char pzObjectAndPath[512];
	sprintf(pzObjectAndPath,"%s%s",(const char *)"C:\\Users\\Brian\\Desktop\\XMLFoundation\\Examples\\Perl\\","PerlTest.pl");
//	sprintf(pzObjectAndPath,"%s%s",(const char *)"/home/ubt/Desktop/XMLFoundation/Examples/Perl/","PerlTest.pl");
	char *pzPerlFileArg[] = { "", pzObjectAndPath };
	
	// parse the Perl Script
 	perl_parse(my_perl, 0, 2, pzPerlFileArg, (char **)NULL);

	char *args[] = { NULL };
	perl_call_argv("showtime", G_DISCARD | G_NOARGS, args);

    perl_destruct(my_perl);
    perl_free(my_perl);

	
	
	return 0;
}
Ejemplo n.º 3
0
static void perlfilter()
{
char *embedding[] = { "", WRAPPERPL };
char *args[] = { "", "0", NULL, NULL, NULL};
int exitstatus = 0;
int	sock;
PerlInterpreter *my_perl;
 
	if((my_perl = perl_alloc()) == NULL)
	{
		fprintf(stderr, "no memory!");
		exit(1);
	}
	perl_construct(my_perl);
 
	exitstatus = perl_parse(my_perl, xs_init, 2, embedding, NULL);
 
	if (exitstatus || (exitstatus=perl_run(my_perl)) != 0)
	{
		fprintf(stderr, "Cannot parse " WRAPPERPL "\n");
		exit(exitstatus);
	}

	while ((sock=lf_accept(listen_sock)) >= 0)
	{
	char	sockbuf[100];

		args[0]=filter;
		sprintf(sockbuf, "%d", sock);
		args[2]=sockbuf;

		{
		dSP ;
		ENTER ;
		SAVETMPS ;

		perl_call_argv("Embed::Persistent::eval_file",
			G_VOID | G_DISCARD | G_EVAL, args);

#ifdef	ERRSV
		if(SvTRUE(ERRSV))
#else
		if(SvTRUE(GvSV(errgv)))
#endif
		{
			clog_open_syslog("perlfilter");
			clog_msg_start_err();
			clog_msg_str("eval error: ");

#ifdef	ERRSV
			clog_msg_str(SvPV(ERRSV,PL_na));
#else
			clog_msg_str(SvPV(GvSV(errgv),na));
#endif
			clog_msg_send();
		}
		FREETMPS ;
		LEAVE ;
		}

		close(sock);	/* Just in case */
	}
#ifdef	perl_destruct_level
	perl_destruct_level=0;
#else
	PL_perl_destruct_level=0;
#endif
	perl_destruct(my_perl);
	perl_free(my_perl);
	exit(0);
}