Does AUTO_INCLUDE work for C ( like CPP )?

  'Config' =>
       'AUTO_INCLUDE' => [ undef,
                           myheader.h,
                           ...
                         ]


Cheers.

On Tue, Nov 12, 2002 at 05:19:54PM -0500, Patrick LeBoutillier wrote:
> Hi all,
> 
> I'm writing a simple Inline wrapper to the rpmVersionCompare
> function from librpm. The way the rpm headers are made (rpm 4.0.2-8),
> I can't compile if I do:
> 
> #include "EXTERN.h"
> #include "perl.h"
> #include "XSUB.h"
> #include "INLINE.h"
> #include <rpm/rpmlib.h>
> 
> I have to do:
> 
> #include <rpm/rpmlib.h>
> #include "EXTERN.h"
> #include "perl.h"
> #include "XSUB.h"
> #include "INLINE.h"
> 
> Is there a way to suppress these 4 default header lines in Inline::C or
> insert my own headers in front?
> I can get around it like this, but it's not really elegant:
> 
> #!/usr/bin/perl
> 
> use strict ;
> BEGIN {
>  require Inline::C ;
>  *Inline::C::validate_ori = \&Inline::C::validate ;
>  *Inline::C::validate = sub {
>   my $o = shift ;
> 
>   $o->{ILSM}{AUTO_INCLUDE} = "/*\n" ;
>   Inline::C::validate_ori($o, @_) ;
>  } ;
> }
> 
> 
> use Inline (
>  C => 'DATA',
>  LIBS => '-lrpm -lrpmio -lpopt',
>  INC => '-I/usr/include/rpm',
>  AUTO_INCLUDE => "*/",
> ) ;
> 
> 
> sub rpmVersionCompare {
>  my $fv1 = shift ;
>  my $fv2 = shift ;
> 
>  my ($v1, $r1) = split(/-/, $fv1) ;
>  my ($v2, $r2) = split(/-/, $fv2) ;
> 
>  return __rpmVersionCompare(
>   $v1 || "", $r1 || "",
>   $v2 || "", $r2 || "",
>  ) ;
> }
> 
> 
> my $v1 = "1.3.23-4" ;
> my $v2 = "1.3.9-7" ;
> 
> print "$v1 > $v2 ? " . rpmVersionCompare($v1, $v2) . "\n" ;
> 
> __END__
> __C__
> #include <rpm/rpmlib.h>
> #include "EXTERN.h"
> #include "perl.h"
> #include "XSUB.h"
> #include "INLINE.h"
> 
> int __rpmVersionCompare(char *v1, char *r1, char *v2, char *r2){
>  Header h1 = headerNew() ;
>  Header h2 = headerNew() ;
> 
>     headerAddEntry(h1, RPMTAG_VERSION, RPM_CHAR_TYPE, v1, strlen(v1)) ;
>     headerAddEntry(h1, RPMTAG_RELEASE, RPM_CHAR_TYPE, r1, strlen(r1)) ;
>     headerAddEntry(h2, RPMTAG_VERSION, RPM_CHAR_TYPE, v2, strlen(v2)) ;
>     headerAddEntry(h2, RPMTAG_RELEASE, RPM_CHAR_TYPE, r2, strlen(r2)) ;
> 
>  return rpmVersionCompare(h1, h2) ;
> }
> 
> 
> 
> Thanks,
> 
> Patrick
> 
> ---------------------
> Patrick LeBoutillier
> Laval, Quebec, Canada

Reply via email to