Quoting Daniel Veillard ([EMAIL PROTECTED]): > On Fri, Feb 18, 2005 at 03:18:26PM -0500, Mike Heins wrote: > > Quoting Daniel Veillard ([EMAIL PROTECTED]): > > > On Fri, Feb 18, 2005 at 01:05:25PM -0500, Mike Heins wrote: > > > > Since gamin has replaced sgi_fam as the file alteration module > > > > shipped with Fedora Core, I have a bit of a problem. I have software > > > > based on SGI::FAM, the Perl module that works with sgi_fam. I tried > > > > compiling against libgamin, but no go. > > > > > > Not informative... what went wrong ? > > [snip] > > gcc -c -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING > > -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE > > -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m32 -march=i386 > > -mtune=pentium4 -DVERSION=\"1.002\" -DXS_VERSION=\"1.002\" -fPIC > > "-I/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE" FAM.c
> > FAM.xs: In function `famerror': > > FAM.xs:123: warning: return discards qualifiers from pointer target type > > FAM.c: In function `XS_FAMEventPtr_code': > > FAM.c:813: error: storage size of 'RETVAL' isn't known > > make: *** [FAM.o] Error 1 > > what is that type ? I do NOT have SGI::FAM ! You need to make a minimal > amount of analysis to give me back informations about this. I am not competent to make that analysis, as my knowledge of C is minimal. > What version of fam is required ? It has worked with the sgi_fam shipped with Fedora Core 1 & 2, which are 2.6.8 and 2.6.10. > The error part of fam were not defined completely at > the point we decided to drop their code and recode the tool. It is part of the XS code that melds the library to Perl. I have attached the XS code, as well as the FAM.c that is generated as a result of that. Since I am not a C hacker, the things I tried (casting a few types) only changed the error. > > > > > > > > It looks like the problems are mostly struct declarations, but I am > > > > not enough of a C hacker to sort them out. > > > > > > I'm not gonna work on SGI::FAM or other application level code. > > > > > > Differences between gamin and FAM are listed there > > > http://www.gnome.org/~veillard/gamin/differences.html > > > I reused the same structure declarations as in fam.h from SGI, the public > > > header is basically the same. > > > > > > > If I can't get this fixed, then I will look at compiling and using > > sgi_fam instead. I *was* looking forward to the improvments in gaming > > (i.e. with luck not dying a horrible death at 1024 events) but I can > > live with sgi_fam. > > with dnotify since you need to open a descriptor for any monitored dir > you're stuck. When kernels will support inotify replacement, then gamin > will support it and the limitation should go away... I guess that means if I increase the amount of available descriptors, the limit will rise -- and I think that is settable in /proc. -- Nature, to be commanded, must be obeyed. -- Francis Bacon Content-Description: FAM.xs #ifdef __cplusplus extern "C" { #endif #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #ifdef __cplusplus } #endif #include <fam.h> #include <string.h> #include <errno.h> static int constant(name) char *name; { errno = 0; switch (*name) { case 'A': break; case 'B': break; case 'C': break; case 'D': break; case 'E': break; case 'F': if (strEQ(name, "FAM_DEBUG_OFF")) #ifdef FAM_DEBUG_OFF return FAM_DEBUG_OFF; #else goto not_there; #endif if (strEQ(name, "FAM_DEBUG_ON")) #ifdef FAM_DEBUG_ON return FAM_DEBUG_ON; #else goto not_there; #endif if (strEQ(name, "FAM_DEBUG_VERBOSE")) #ifdef FAM_DEBUG_VERBOSE return FAM_DEBUG_VERBOSE; #else goto not_there; #endif /* enum FAMCodes--added by hand */ if (strEQ(name, "FAMChanged")) { return FAMChanged; } else if (strEQ(name, "FAMDeleted")) { return FAMDeleted; } else if (strEQ(name, "FAMStartExecuting")) { return FAMStartExecuting; } else if (strEQ(name, "FAMStopExecuting")) { return FAMStopExecuting; } else if (strEQ(name, "FAMCreated")) { return FAMCreated; } else if (strEQ(name, "FAMMoved")) { return FAMMoved; } else if (strEQ(name, "FAMAcknowledge")) { return FAMAcknowledge; } else if (strEQ(name, "FAMExists")) { return FAMExists; } else if (strEQ(name, "FAMEndExist")) { return FAMEndExist; } break; case 'G': break; case 'H': break; case 'I': break; case 'J': break; case 'K': break; case 'L': break; case 'M': break; case 'N': break; case 'O': break; case 'P': break; case 'Q': break; case 'R': break; case 'S': break; case 'T': break; case 'U': break; case 'V': break; case 'W': break; case 'X': break; case 'Y': break; case 'Z': break; case '_': break; } errno = EINVAL; return 0; not_there: errno = ENOENT; return 0; } static char *famerror() { return FAMErrno ? FamErrlist[FAMErrno] : ""; } static void famwarn(code, what) int code; char *what; { if (code==-1) warn("SGI::FAM: %s: %s", what, FAMErrno ? FamErrlist[FAMErrno] : errno ? strerror(errno) : "(unidentified)"); } MODULE = SGI::FAM PACKAGE = SGI::FAM PROTOTYPES: ENABLE int constant(name) char * name char * famerror() MODULE = SGI::FAM PACKAGE = FAMConnectionPtr PREFIX = FAM PROTOTYPES: ENABLE # int # FAMOpen(fc) # FAMConnection * fc int FAMOpen2(fc, appName) FAMConnection * fc char * appName int FAMClose(fc) FAMConnection * fc # int # FAMMonitorDirectory(fc, filename, fr, userData) # FAMConnection * fc # char * filename # FAMRequest * fr # void * userData # # int # FAMMonitorFile(fc, filename, fr, userData) # FAMConnection * fc # char * filename # FAMRequest * fr # void * userData int FAMMonitorCollection(fc, filename, fr, userData, depth, mask) FAMConnection * fc char * filename FAMRequest * fr void * userData int depth char * mask int FAMMonitorDirectory2(fc, filename, fr) FAMConnection * fc char * filename FAMRequest * fr int FAMMonitorFile2(fc, filename, fr) FAMConnection * fc char * filename FAMRequest * fr int FAMSuspendMonitor(fc, fr) FAMConnection * fc FAMRequest * fr int FAMResumeMonitor(fc, fr) FAMConnection * fc FAMRequest * fr int FAMCancelMonitor(fc, fr) FAMConnection * fc FAMRequest * fr int FAMNextEvent(fc, fe) FAMConnection * fc FAMEvent * fe int FAMPending(fc) FAMConnection * fc int FAMDebugLevel(fc, debugLevel) FAMConnection * fc int debugLevel MODULE = SGI::FAM PACKAGE = FAMConnectionPtr PREFIX = fc_ PROTOTYPES: ENABLE void fc_DESTROY(fc) FAMConnection * fc CODE: # warn("Freeing FAMConnection %p\n", (void *)fc); famwarn(FAMClose(fc), "Closing connection"); Safefree(fc); FAMConnection * fc_new(class) char * class CODE: New(0, RETVAL, 1, FAMConnection); # warn("Created FAMConnection %p\n", (void *)RETVAL); OUTPUT: RETVAL int fc_fd(fc) FAMConnection * fc CODE: RETVAL=FAMCONNECTION_GETFD(fc); OUTPUT: RETVAL MODULE = SGI::FAM PACKAGE = FAMRequestPtr PREFIX = fr_ PROTOTYPES: ENABLE void fr_DESTROY(fr) FAMRequest * fr CODE: # warn("Freeing FAMRequest %p\n", (void *)fr); Safefree(fr); FAMRequest * fr_new(class) char * class CODE: New(0, RETVAL, 1, FAMRequest); # warn("Created FAMRequest %p\n", (void *)RETVAL); OUTPUT: RETVAL int fr_reqnum(fr) FAMRequest * fr CODE: RETVAL=FAMREQUEST_GETREQNUM(fr); OUTPUT: RETVAL void fr_setreqnum(fr, new) FAMRequest * fr int new CODE: FAMREQUEST_GETREQNUM(fr)=new; MODULE = SGI::FAM PACKAGE = FAMEventPtr PREFIX = fe_ PROTOTYPES: ENABLE void fe_DESTROY(fe) FAMEvent * fe CODE: # warn("Freeing FAMEvent %p\n", (void *)fe); Safefree(fe); FAMEvent * fe_new(class) char * class CODE: New(0, RETVAL, 1, FAMEvent); # warn("Created FAMEvent %p\n", (void *)RETVAL); OUTPUT: RETVAL # /* # Properly, these next two should inc. the REFCNT of ST(0), once I # figure out how to do something like that, and return the original # object. Until then, we do not want gratuitous freeing. # */ FAMConnection * fe_fc(fe) FAMEvent * fe CODE: New(0, RETVAL, 1, FAMConnection); *RETVAL=*(fe->fc); OUTPUT: RETVAL FAMRequest * fe_fr(fe) FAMEvent * fe CODE: New(0, RETVAL, 1, FAMRequest); *RETVAL=fe->fr; OUTPUT: RETVAL char * fe_hostname(fe) FAMEvent * fe CODE: RETVAL=fe->hostname; OUTPUT: RETVAL char * fe_filename(fe) FAMEvent * fe CODE: RETVAL=fe->filename; OUTPUT: RETVAL enum FAMCodes fe_code(fe) FAMEvent * fe CODE: RETVAL=fe->code; OUTPUT: RETVAL Content-Description: Generated FAM.c /* * This file was generated automatically by xsubpp version 1.9508 from the * contents of FAM.xs. Do not edit this file, edit FAM.xs instead. * * ANY CHANGES MADE HERE WILL BE LOST! * */ #line 1 "FAM.xs" #ifdef __cplusplus extern "C" { #endif #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #ifdef __cplusplus } #endif #include <fam.h> #include <string.h> #include <errno.h> static int constant(name) char *name; { errno = 0; switch (*name) { case 'A': break; case 'B': break; case 'C': break; case 'D': break; case 'E': break; case 'F': if (strEQ(name, "FAM_DEBUG_OFF")) #ifdef FAM_DEBUG_OFF return FAM_DEBUG_OFF; #else goto not_there; #endif if (strEQ(name, "FAM_DEBUG_ON")) #ifdef FAM_DEBUG_ON return FAM_DEBUG_ON; #else goto not_there; #endif if (strEQ(name, "FAM_DEBUG_VERBOSE")) #ifdef FAM_DEBUG_VERBOSE return FAM_DEBUG_VERBOSE; #else goto not_there; #endif /* enum FAMCodes--added by hand */ if (strEQ(name, "FAMChanged")) { return FAMChanged; } else if (strEQ(name, "FAMDeleted")) { return FAMDeleted; } else if (strEQ(name, "FAMStartExecuting")) { return FAMStartExecuting; } else if (strEQ(name, "FAMStopExecuting")) { return FAMStopExecuting; } else if (strEQ(name, "FAMCreated")) { return FAMCreated; } else if (strEQ(name, "FAMMoved")) { return FAMMoved; } else if (strEQ(name, "FAMAcknowledge")) { return FAMAcknowledge; } else if (strEQ(name, "FAMExists")) { return FAMExists; } else if (strEQ(name, "FAMEndExist")) { return FAMEndExist; } break; case 'G': break; case 'H': break; case 'I': break; case 'J': break; case 'K': break; case 'L': break; case 'M': break; case 'N': break; case 'O': break; case 'P': break; case 'Q': break; case 'R': break; case 'S': break; case 'T': break; case 'U': break; case 'V': break; case 'W': break; case 'X': break; case 'Y': break; case 'Z': break; case '_': break; } errno = EINVAL; return 0; not_there: errno = ENOENT; return 0; } static char *famerror() { return FAMErrno ? FamErrlist[FAMErrno] : ""; } static void famwarn(code, what) int code; char *what; { if (code==-1) warn("SGI::FAM: %s: %s", what, FAMErrno ? FamErrlist[FAMErrno] : errno ? strerror(errno) : "(unidentified)"); } #line 148 "FAM.c" XS(XS_SGI__FAM_constant); /* prototype to pass -Wmissing-prototypes */ XS(XS_SGI__FAM_constant) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: SGI::FAM::constant(name)"); { char * name = (char *)SvPV_nolen(ST(0)); int RETVAL; dXSTARG; RETVAL = constant(name); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_SGI__FAM_famerror); /* prototype to pass -Wmissing-prototypes */ XS(XS_SGI__FAM_famerror) { dXSARGS; if (items != 0) Perl_croak(aTHX_ "Usage: SGI::FAM::famerror()"); { char * RETVAL; dXSTARG; RETVAL = famerror(); sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; } XSRETURN(1); } XS(XS_FAMConnectionPtr_Open2); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_Open2) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::Open2(fc, appName)"); { FAMConnection * fc; char * appName = (char *)SvPV_nolen(ST(1)); int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); RETVAL = FAMOpen2(fc, appName); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_Close); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_Close) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::Close(fc)"); { FAMConnection * fc; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); RETVAL = FAMClose(fc); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_MonitorCollection); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_MonitorCollection) { dXSARGS; if (items != 6) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::MonitorCollection(fc, filename, fr, userData, depth, mask)"); { FAMConnection * fc; char * filename = (char *)SvPV_nolen(ST(1)); FAMRequest * fr; void * userData = INT2PTR(void *,SvIV(ST(3))); int depth = (int)SvIV(ST(4)); char * mask = (char *)SvPV_nolen(ST(5)); int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); if (sv_derived_from(ST(2), "FAMRequestPtr")) { IV tmp = SvIV((SV*)SvRV(ST(2))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not of type FAMRequestPtr"); RETVAL = FAMMonitorCollection(fc, filename, fr, userData, depth, mask); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_MonitorDirectory2); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_MonitorDirectory2) { dXSARGS; if (items != 3) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::MonitorDirectory2(fc, filename, fr)"); { FAMConnection * fc; char * filename = (char *)SvPV_nolen(ST(1)); FAMRequest * fr; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); if (sv_derived_from(ST(2), "FAMRequestPtr")) { IV tmp = SvIV((SV*)SvRV(ST(2))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not of type FAMRequestPtr"); RETVAL = FAMMonitorDirectory2(fc, filename, fr); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_MonitorFile2); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_MonitorFile2) { dXSARGS; if (items != 3) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::MonitorFile2(fc, filename, fr)"); { FAMConnection * fc; char * filename = (char *)SvPV_nolen(ST(1)); FAMRequest * fr; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); if (sv_derived_from(ST(2), "FAMRequestPtr")) { IV tmp = SvIV((SV*)SvRV(ST(2))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not of type FAMRequestPtr"); RETVAL = FAMMonitorFile2(fc, filename, fr); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_SuspendMonitor); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_SuspendMonitor) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::SuspendMonitor(fc, fr)"); { FAMConnection * fc; FAMRequest * fr; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); if (sv_derived_from(ST(1), "FAMRequestPtr")) { IV tmp = SvIV((SV*)SvRV(ST(1))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not of type FAMRequestPtr"); RETVAL = FAMSuspendMonitor(fc, fr); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_ResumeMonitor); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_ResumeMonitor) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::ResumeMonitor(fc, fr)"); { FAMConnection * fc; FAMRequest * fr; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); if (sv_derived_from(ST(1), "FAMRequestPtr")) { IV tmp = SvIV((SV*)SvRV(ST(1))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not of type FAMRequestPtr"); RETVAL = FAMResumeMonitor(fc, fr); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_CancelMonitor); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_CancelMonitor) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::CancelMonitor(fc, fr)"); { FAMConnection * fc; FAMRequest * fr; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); if (sv_derived_from(ST(1), "FAMRequestPtr")) { IV tmp = SvIV((SV*)SvRV(ST(1))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not of type FAMRequestPtr"); RETVAL = FAMCancelMonitor(fc, fr); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_NextEvent); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_NextEvent) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::NextEvent(fc, fe)"); { FAMConnection * fc; FAMEvent * fe; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); if (sv_derived_from(ST(1), "FAMEventPtr")) { IV tmp = SvIV((SV*)SvRV(ST(1))); fe = INT2PTR(FAMEvent *,tmp); } else Perl_croak(aTHX_ "fe is not of type FAMEventPtr"); RETVAL = FAMNextEvent(fc, fe); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_Pending); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_Pending) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::Pending(fc)"); { FAMConnection * fc; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); RETVAL = FAMPending(fc); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_DebugLevel); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_DebugLevel) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::DebugLevel(fc, debugLevel)"); { FAMConnection * fc; int debugLevel = (int)SvIV(ST(1)); int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); RETVAL = FAMDebugLevel(fc, debugLevel); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_DESTROY); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_DESTROY) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::DESTROY(fc)"); { FAMConnection * fc; if (SvROK(ST(0))) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not a reference"); #line 241 "FAM.xs" famwarn(FAMClose(fc), "Closing connection"); Safefree(fc); #line 528 "FAM.c" } XSRETURN_EMPTY; } XS(XS_FAMConnectionPtr_new); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_new) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::new(class)"); { char * class = (char *)SvPV_nolen(ST(0)); FAMConnection * RETVAL; #line 248 "FAM.xs" New(0, RETVAL, 1, FAMConnection); #line 544 "FAM.c" ST(0) = sv_newmortal(); sv_setref_pv(ST(0), "FAMConnectionPtr", (void*)RETVAL); } XSRETURN(1); } XS(XS_FAMConnectionPtr_fd); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMConnectionPtr_fd) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMConnectionPtr::fd(fc)"); { FAMConnection * fc; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMConnectionPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fc = INT2PTR(FAMConnection *,tmp); } else Perl_croak(aTHX_ "fc is not of type FAMConnectionPtr"); #line 257 "FAM.xs" RETVAL=FAMCONNECTION_GETFD(fc); #line 570 "FAM.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMRequestPtr_DESTROY); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMRequestPtr_DESTROY) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMRequestPtr::DESTROY(fr)"); { FAMRequest * fr; if (SvROK(ST(0))) { IV tmp = SvIV((SV*)SvRV(ST(0))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not a reference"); #line 271 "FAM.xs" Safefree(fr); #line 593 "FAM.c" } XSRETURN_EMPTY; } XS(XS_FAMRequestPtr_new); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMRequestPtr_new) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMRequestPtr::new(class)"); { char * class = (char *)SvPV_nolen(ST(0)); FAMRequest * RETVAL; #line 277 "FAM.xs" New(0, RETVAL, 1, FAMRequest); #line 609 "FAM.c" ST(0) = sv_newmortal(); sv_setref_pv(ST(0), "FAMRequestPtr", (void*)RETVAL); } XSRETURN(1); } XS(XS_FAMRequestPtr_reqnum); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMRequestPtr_reqnum) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMRequestPtr::reqnum(fr)"); { FAMRequest * fr; int RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMRequestPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not of type FAMRequestPtr"); #line 286 "FAM.xs" RETVAL=FAMREQUEST_GETREQNUM(fr); #line 635 "FAM.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_FAMRequestPtr_setreqnum); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMRequestPtr_setreqnum) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: FAMRequestPtr::setreqnum(fr, new)"); { FAMRequest * fr; int new = (int)SvIV(ST(1)); if (sv_derived_from(ST(0), "FAMRequestPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fr = INT2PTR(FAMRequest *,tmp); } else Perl_croak(aTHX_ "fr is not of type FAMRequestPtr"); #line 295 "FAM.xs" FAMREQUEST_GETREQNUM(fr)=new; #line 659 "FAM.c" } XSRETURN_EMPTY; } XS(XS_FAMEventPtr_DESTROY); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMEventPtr_DESTROY) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMEventPtr::DESTROY(fe)"); { FAMEvent * fe; if (SvROK(ST(0))) { IV tmp = SvIV((SV*)SvRV(ST(0))); fe = INT2PTR(FAMEvent *,tmp); } else Perl_croak(aTHX_ "fe is not a reference"); #line 307 "FAM.xs" Safefree(fe); #line 681 "FAM.c" } XSRETURN_EMPTY; } XS(XS_FAMEventPtr_new); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMEventPtr_new) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMEventPtr::new(class)"); { char * class = (char *)SvPV_nolen(ST(0)); FAMEvent * RETVAL; #line 313 "FAM.xs" New(0, RETVAL, 1, FAMEvent); #line 697 "FAM.c" ST(0) = sv_newmortal(); sv_setref_pv(ST(0), "FAMEventPtr", (void*)RETVAL); } XSRETURN(1); } XS(XS_FAMEventPtr_fc); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMEventPtr_fc) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMEventPtr::fc(fe)"); { FAMEvent * fe; FAMConnection * RETVAL; if (sv_derived_from(ST(0), "FAMEventPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fe = INT2PTR(FAMEvent *,tmp); } else Perl_croak(aTHX_ "fe is not of type FAMEventPtr"); #line 328 "FAM.xs" New(0, RETVAL, 1, FAMConnection); *RETVAL=*(fe->fc); #line 723 "FAM.c" ST(0) = sv_newmortal(); sv_setref_pv(ST(0), "FAMConnectionPtr", (void*)RETVAL); } XSRETURN(1); } XS(XS_FAMEventPtr_fr); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMEventPtr_fr) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMEventPtr::fr(fe)"); { FAMEvent * fe; FAMRequest * RETVAL; if (sv_derived_from(ST(0), "FAMEventPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fe = INT2PTR(FAMEvent *,tmp); } else Perl_croak(aTHX_ "fe is not of type FAMEventPtr"); #line 337 "FAM.xs" New(0, RETVAL, 1, FAMRequest); *RETVAL=fe->fr; #line 749 "FAM.c" ST(0) = sv_newmortal(); sv_setref_pv(ST(0), "FAMRequestPtr", (void*)RETVAL); } XSRETURN(1); } XS(XS_FAMEventPtr_hostname); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMEventPtr_hostname) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMEventPtr::hostname(fe)"); { FAMEvent * fe; char * RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMEventPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fe = INT2PTR(FAMEvent *,tmp); } else Perl_croak(aTHX_ "fe is not of type FAMEventPtr"); #line 346 "FAM.xs" RETVAL=fe->hostname; #line 775 "FAM.c" sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; } XSRETURN(1); } XS(XS_FAMEventPtr_filename); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMEventPtr_filename) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMEventPtr::filename(fe)"); { FAMEvent * fe; char * RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMEventPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fe = INT2PTR(FAMEvent *,tmp); } else Perl_croak(aTHX_ "fe is not of type FAMEventPtr"); #line 354 "FAM.xs" RETVAL=fe->filename; #line 800 "FAM.c" sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; } XSRETURN(1); } XS(XS_FAMEventPtr_code); /* prototype to pass -Wmissing-prototypes */ XS(XS_FAMEventPtr_code) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: FAMEventPtr::code(fe)"); { FAMEvent * fe; enum FAMCodes RETVAL; dXSTARG; if (sv_derived_from(ST(0), "FAMEventPtr")) { IV tmp = SvIV((SV*)SvRV(ST(0))); fe = INT2PTR(FAMEvent *,tmp); } else Perl_croak(aTHX_ "fe is not of type FAMEventPtr"); #line 362 "FAM.xs" RETVAL=fe->code; #line 825 "FAM.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } #ifdef __cplusplus extern "C" #endif XS(boot_SGI__FAM); /* prototype to pass -Wmissing-prototypes */ XS(boot_SGI__FAM) { dXSARGS; char* file = __FILE__; XS_VERSION_BOOTCHECK ; newXSproto("SGI::FAM::constant", XS_SGI__FAM_constant, file, "$"); newXSproto("SGI::FAM::famerror", XS_SGI__FAM_famerror, file, ""); newXSproto("FAMConnectionPtr::Open2", XS_FAMConnectionPtr_Open2, file, "$$"); newXSproto("FAMConnectionPtr::Close", XS_FAMConnectionPtr_Close, file, "$"); newXSproto("FAMConnectionPtr::MonitorCollection", XS_FAMConnectionPtr_MonitorCollection, file, "$$$$$$"); newXSproto("FAMConnectionPtr::MonitorDirectory2", XS_FAMConnectionPtr_MonitorDirectory2, file, "$$$"); newXSproto("FAMConnectionPtr::MonitorFile2", XS_FAMConnectionPtr_MonitorFile2, file, "$$$"); newXSproto("FAMConnectionPtr::SuspendMonitor", XS_FAMConnectionPtr_SuspendMonitor, file, "$$"); newXSproto("FAMConnectionPtr::ResumeMonitor", XS_FAMConnectionPtr_ResumeMonitor, file, "$$"); newXSproto("FAMConnectionPtr::CancelMonitor", XS_FAMConnectionPtr_CancelMonitor, file, "$$"); newXSproto("FAMConnectionPtr::NextEvent", XS_FAMConnectionPtr_NextEvent, file, "$$"); newXSproto("FAMConnectionPtr::Pending", XS_FAMConnectionPtr_Pending, file, "$"); newXSproto("FAMConnectionPtr::DebugLevel", XS_FAMConnectionPtr_DebugLevel, file, "$$"); newXSproto("FAMConnectionPtr::DESTROY", XS_FAMConnectionPtr_DESTROY, file, "$"); newXSproto("FAMConnectionPtr::new", XS_FAMConnectionPtr_new, file, "$"); newXSproto("FAMConnectionPtr::fd", XS_FAMConnectionPtr_fd, file, "$"); newXSproto("FAMRequestPtr::DESTROY", XS_FAMRequestPtr_DESTROY, file, "$"); newXSproto("FAMRequestPtr::new", XS_FAMRequestPtr_new, file, "$"); newXSproto("FAMRequestPtr::reqnum", XS_FAMRequestPtr_reqnum, file, "$"); newXSproto("FAMRequestPtr::setreqnum", XS_FAMRequestPtr_setreqnum, file, "$$"); newXSproto("FAMEventPtr::DESTROY", XS_FAMEventPtr_DESTROY, file, "$"); newXSproto("FAMEventPtr::new", XS_FAMEventPtr_new, file, "$"); newXSproto("FAMEventPtr::fc", XS_FAMEventPtr_fc, file, "$"); newXSproto("FAMEventPtr::fr", XS_FAMEventPtr_fr, file, "$"); newXSproto("FAMEventPtr::hostname", XS_FAMEventPtr_hostname, file, "$"); newXSproto("FAMEventPtr::filename", XS_FAMEventPtr_filename, file, "$"); newXSproto("FAMEventPtr::code", XS_FAMEventPtr_code, file, "$"); XSRETURN_YES; } -- I don't buy from direct telephone or email marketers. This makes it hard for me to find a phone company. ;> _______________________________________________ Gamin-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gamin-list
