Rename ext/Devel/PPPort to ext/Devel-PPPort
[p5sagit/p5-mst-13.2.git] / ext / Devel-PPPort / parts / inc / sprintf
CommitLineData
c01be2ce 1################################################################################
2##
51d6c659 3## $Revision: 2 $
c01be2ce 4## $Author: mhx $
51d6c659 5## $Date: 2009/01/18 14:10:51 +0100 $
c01be2ce 6##
7################################################################################
8##
51d6c659 9## Version 3.x, Copyright (C) 2004-2009, Marcus Holland-Moritz.
c01be2ce 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