Commit | Line | Data |
---|---|---|
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 | ||
20 | my_sprintf | |
21 | ||
22 | =implementation | |
23 | ||
24 | #if !defined(my_sprintf) | |
25 | #if { NEED my_sprintf } | |
26 | ||
27 | int | |
28 | my_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 | ||
46 | void | |
47 | my_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 | ||
59 | my($l, $s) = Devel::PPPort::my_sprintf(); | |
60 | ok($l, 8); | |
61 | ok($s, "foobar42"); | |
62 |