ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/plugins/cfperl/cfperl.xs
(Generate patch)

Comparing deliantra/server/plugins/cfperl/cfperl.xs (file contents):
Revision 1.43 by root, Fri Mar 31 19:47:55 2006 UTC vs.
Revision 1.44 by root, Fri Mar 31 20:21:53 2006 UTC

65typedef struct 65typedef struct
66{ 66{
67 object* who; 67 object* who;
68 object* activator; 68 object* activator;
69 object* third; 69 object* third;
70 object* event;
70 mapstruct* map; 71 mapstruct* map;
71 char message[1024]; 72 char message[1024];
72 int fix; // seems to be python-only, and should not be part of the API 73 int fix; // seems to be python-only, and should not be part of the API
73 int event_code; 74 int event_code;
74 char extension[1024]; // name field, should invoke specific perl extension 75 char extension[1024]; // name field, should invoke specific perl extension
310 HV *hv = newHV (); 311 HV *hv = newHV ();
311#define hv_context(type,addr,expr) hv_store (hv, #expr, sizeof (#expr) - 1, newSVcfapi (type, addr context->expr), 0) 312#define hv_context(type,addr,expr) hv_store (hv, #expr, sizeof (#expr) - 1, newSVcfapi (type, addr context->expr), 0)
312 hv_context (CFAPI_POBJECT, ,who); 313 hv_context (CFAPI_POBJECT, ,who);
313 hv_context (CFAPI_POBJECT, ,activator); 314 hv_context (CFAPI_POBJECT, ,activator);
314 hv_context (CFAPI_POBJECT, ,third); 315 hv_context (CFAPI_POBJECT, ,third);
316 hv_context (CFAPI_POBJECT, ,event);
315 hv_context (CFAPI_PMAP, ,map); 317 hv_context (CFAPI_PMAP, ,map);
316 hv_context (CFAPI_STRING , ,message); 318 hv_context (CFAPI_STRING , ,message);
317 hv_context (CFAPI_INT ,&,fix); 319 hv_context (CFAPI_INT ,&,fix);
318 hv_context (CFAPI_INT ,&,event_code); 320 hv_context (CFAPI_INT ,&,event_code);
319 hv_context (CFAPI_STRING , ,options); 321 hv_context (CFAPI_STRING , ,options);
617{ 619{
618 static int rv = 0; 620 static int rv = 0;
619 va_list args; 621 va_list args;
620 char *buf; 622 char *buf;
621 CFPContext context; 623 CFPContext context;
622 object *eob;
623 624
624 if (!perl) 625 if (!perl)
625 return; 626 return;
626 627
627 memset (&context, 0, sizeof (context)); 628 memset (&context, 0, sizeof (context));
638 strncpy (context.message, buf, sizeof (context.message)); 639 strncpy (context.message, buf, sizeof (context.message));
639 640
640 context.fix = va_arg (args, int); 641 context.fix = va_arg (args, int);
641 strncpy (context.extension, va_arg (args, char *), sizeof (context.extension)); 642 strncpy (context.extension, va_arg (args, char *), sizeof (context.extension));
642 strncpy (context.options, va_arg (args, char *), sizeof (context.options)); 643 strncpy (context.options, va_arg (args, char *), sizeof (context.options));
643 eob = va_arg (args, object *); 644 context.event = va_arg (args, object *);
645 va_end (args);
646
644 context.returnvalue = 0; 647 context.returnvalue = 0;
645 va_end (args);
646 648
647 inject_event ("cf::inject_event", &context); 649 inject_event ("cf::inject_event", &context);
648 650
649 rv = context.returnvalue; 651 rv = context.returnvalue;
650 return &rv; 652 return &rv;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines