summaryrefslogtreecommitdiff
path: root/cpan/Devel-PPPort/parts/inc/sprintf
diff options
context:
space:
mode:
Diffstat (limited to 'cpan/Devel-PPPort/parts/inc/sprintf')
-rw-r--r--cpan/Devel-PPPort/parts/inc/sprintf62
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");
+