This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Devel::PPPort 3.14_02
[perl5.git] / ext / Devel / PPPort / parts / inc / sprintf
CommitLineData
c01be2ce
MHM
1################################################################################
2##
3## $Revision: 1 $
4## $Author: mhx $
5## $Date: 2008/07/13 19:13:58 +0200 $
6##
7################################################################################
8##
9## Version 3.x, Copyright (C) 2004-2008, Marcus Holland-Moritz.
10## Version 2.x, Copyright (C) 2001, Paul Marquess.
11## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
12##
13## This program is free software; you can redistribute it and/or
14## modify it under the same terms as Perl itself.
15##
16################################################################################
17
18=provides
19
20my_sprintf
21
22=implementation
23
24#if !defined(my_sprintf)
25#if { NEED my_sprintf }
26
27int
28my_sprintf(char *buffer, const char* pat, ...)
29{
30 va_list args;
31 va_start(args, pat);
32 vsprintf(buffer, pat, args);
33 va_end(args);
34 return strlen(buffer);
35}
36
37#endif
38#endif
39
40=xsinit
41
42#define NEED_my_sprintf
43
44=xsubs
45
46void
47my_sprintf()
48 PREINIT:
49 char buf[128];
50 int len;
51 PPCODE:
52 len = my_sprintf(buf, "foo%s%d", "bar", 42);
53 mXPUSHi(len);
54 mXPUSHs(newSVpv(buf, 0));
55 XSRETURN(2);
56
57=tests plan => 2
58
59my($l, $s) = Devel::PPPort::my_sprintf();
60ok($l, 8);
61ok($s, "foobar42");
62