diff options
Diffstat (limited to 'cpan/Devel-PPPort/parts/inc/sprintf')
-rw-r--r-- | cpan/Devel-PPPort/parts/inc/sprintf | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cpan/Devel-PPPort/parts/inc/sprintf b/cpan/Devel-PPPort/parts/inc/sprintf new file mode 100644 index 0000000000..6756f9abc9 --- /dev/null +++ b/cpan/Devel-PPPort/parts/inc/sprintf @@ -0,0 +1,62 @@ +################################################################################ +## +## $Revision: 2 $ +## $Author: mhx $ +## $Date: 2009/01/18 14:10:51 +0100 $ +## +################################################################################ +## +## Version 3.x, Copyright (C) 2004-2009, Marcus Holland-Moritz. +## Version 2.x, Copyright (C) 2001, Paul Marquess. +## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. +## +## This program is free software; you can redistribute it and/or +## modify it under the same terms as Perl itself. +## +################################################################################ + +=provides + +my_sprintf + +=implementation + +#if !defined(my_sprintf) +#if { NEED my_sprintf } + +int +my_sprintf(char *buffer, const char* pat, ...) +{ + va_list args; + va_start(args, pat); + vsprintf(buffer, pat, args); + va_end(args); + return strlen(buffer); +} + +#endif +#endif + +=xsinit + +#define NEED_my_sprintf + +=xsubs + +void +my_sprintf() + PREINIT: + char buf[128]; + int len; + PPCODE: + len = my_sprintf(buf, "foo%s%d", "bar", 42); + mXPUSHi(len); + mXPUSHs(newSVpv(buf, 0)); + XSRETURN(2); + +=tests plan => 2 + +my($l, $s) = Devel::PPPort::my_sprintf(); +ok($l, 8); +ok($s, "foobar42"); + |