#ifdef __cplusplus extern "C" { #endif #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "Av_CharPtrPtr.h" /* XS_*_charPtrPtr() */ #ifdef __cplusplus } #endif /* Used by the INPUT typemap for char**. * Will convert a Perl AV* (containing strings) to a C char**. */ char ** XS_unpack_charPtrPtr( rv ) SV *rv; { AV *av; SV **ssv; char **s; int avlen; int x; if( SvROK( rv ) && (SvTYPE(SvRV(rv)) == SVt_PVAV) ) av = (AV*)SvRV(rv); else { warn("XS_unpack_charPtrPtr: rv was not an AV ref"); return( (char**)NULL ); } /* is it empty? */ avlen = av_len(av); if( avlen < 0 ){ warn("XS_unpack_charPtrPtr: array was empty"); return( (char**)NULL ); } /* av_len+2 == number of strings, plus 1 for an end-of-array sentinel. */ s = (char **)safemalloc( sizeof(char*) * (avlen + 2) ); if( s == NULL ){ warn("XS_unpack_charPtrPtr: unable to malloc char**"); return( (char**)NULL ); } for( x = 0; x <= avlen; ++x ){ ssv = av_fetch( av, x, 0 ); if( ssv != NULL ){ if( SvPOK( *ssv ) ){ s[x] = (char *)safemalloc( SvCUR(*ssv) + 1 ); if( s[x] == NULL ) warn("XS_unpack_charPtrPtr: unable to malloc char*"); else strcpy( s[x], SvPV( *ssv, PL_na ) ); } else warn("XS_unpack_charPtrPtr: array elem %d was not a string.", x ); } else s[x] = (char*)NULL; } s[x] = (char*)NULL; /* sentinel */ return( s ); } /* Used by the OUTPUT typemap for char**. * Will convert a C char** to a Perl AV*. */ void XS_pack_charPtrPtr( st, s ) SV *st; char **s; { AV *av = newAV(); SV *sv; char **c; for( c = s; *c != NULL; ++c ){ sv = newSVpv( *c, 0 ); av_push( av, sv ); } sv = newSVrv( st, NULL ); /* upgrade stack SV to an RV */ SvREFCNT_dec( sv ); /* discard */ SvRV( st ) = (SV*)av; /* make stack RV point at our AV */ } /* cleanup the temporary char** from XS_unpack_charPtrPtr */ void XS_release_charPtrPtr(s) char **s; { char **c; for( c = s; *c != NULL; ++c ) safefree( *c ); safefree( s ); } 0 Mageia Installer and base platform for many utilitiesThierry Vignaud [tv]
summaryrefslogtreecommitdiffstats
path: root/perl-install/common.pm
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2003-04-17 11:34:32 +0000
committerPascal Rigaux <pixel@mandriva.com>2003-04-17 11:34:32 +0000
commit4781e491c32fdfe0dbe3cf97a8aca90040a9406b (patch)
treeca4f166763cc8be7bc01e943dcbf5a058758060d /perl-install/common.pm
parent5458ef92ec80fab427e4d69b5cdd22bb76b261d8 (diff)
downloaddrakx-4781e491c32fdfe0dbe3cf97a8aca90040a9406b.tar
drakx-4781e491c32fdfe0dbe3cf97a8aca90040a9406b.tar.gz
drakx-4781e491c32fdfe0dbe3cf97a8aca90040a9406b.tar.bz2
drakx-4781e491c32fdfe0dbe3cf97a8aca90040a9406b.tar.xz
drakx-4781e491c32fdfe0dbe3cf97a8aca90040a9406b.zip
new perl_checker compliance
Diffstat (limited to 'perl-install/common.pm')
-rw-r--r--perl-install/common.pm4
1 files changed, 2 insertions, 2 deletions
diff --git a/perl-install/common.pm b/perl-install/common.pm
index 8dbf403b4..72a40bd32 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -106,8 +106,8 @@ sub removeXiBSuffix {
$_;
}
sub formatXiB {
- my ($newnb, $newbase) = @_;
- $newbase ||= 1;
+ my ($newnb, $o_newbase) = @_;
+ my $newbase = $o_newbase || 1;
my ($nb, $base);
my $decr = sub {
($nb, $base) = ($newnb, $newbase);