helly Sat Feb 24 18:24:06 2007 UTC
Modified files:
/php-src/main snprintf.c snprintf.h
Log:
- Add [v]slprintf
http://cvs.php.net/viewvc.cgi/php-src/main/snprintf.c?r1=1.49&r2=1.50&diff_format=u
Index: php-src/main/snprintf.c
diff -u php-src/main/snprintf.c:1.49 php-src/main/snprintf.c:1.50
--- php-src/main/snprintf.c:1.49 Mon Jan 1 09:29:35 2007
+++ php-src/main/snprintf.c Sat Feb 24 18:24:06 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: snprintf.c,v 1.49 2007/01/01 09:29:35 sebastian Exp $ */
+/* $Id: snprintf.c,v 1.50 2007/02/24 18:24:06 helly Exp $ */
#include "php.h"
@@ -1160,6 +1160,34 @@
}
+PHPAPI int ap_php_slprintf(char *buf, size_t len, const char *format,...)
+{
+ int cc;
+ va_list ap;
+
+ va_start(ap, format);
+ strx_printv(&cc, buf, len, format, ap);
+ va_end(ap);
+ if (cc >= len) {
+ cc = len -1;
+ buf[cc] = '\0';
+ }
+ return cc;
+}
+
+
+PHPAPI int ap_php_vslprintf(char *buf, size_t len, const char *format, va_list
ap)
+{
+ int cc;
+
+ strx_printv(&cc, buf, len, format, ap);
+ if (cc >= len) {
+ cc = len -1;
+ buf[cc] = '\0';
+ }
+ return cc;
+}
+
PHPAPI int ap_php_snprintf(char *buf, size_t len, const char *format,...)
{
int cc;
http://cvs.php.net/viewvc.cgi/php-src/main/snprintf.h?r1=1.38&r2=1.39&diff_format=u
Index: php-src/main/snprintf.h
diff -u php-src/main/snprintf.h:1.38 php-src/main/snprintf.h:1.39
--- php-src/main/snprintf.h:1.38 Mon Jan 1 09:29:35 2007
+++ php-src/main/snprintf.h Sat Feb 24 18:24:06 2007
@@ -17,11 +17,11 @@
+----------------------------------------------------------------------+
*/
-/* $Id: snprintf.h,v 1.38 2007/01/01 09:29:35 sebastian Exp $ */
+/* $Id: snprintf.h,v 1.39 2007/02/24 18:24:06 helly Exp $ */
/*
-Comparing: sprintf, snprintf, spprintf
+Comparing: sprintf, snprintf, slprintf, spprintf
sprintf offers the ability to make a lot of failures since it does not know
the size of the buffer it uses. Therefore usage of sprintf often
@@ -36,6 +36,11 @@
A bad thing is having a big maximum while in most cases you would
only need a small buffer. If the size of the resulting string is
longer or equal to the buffer size than the buffer is not terminated.
+ The function also returns the number of chars not including the
+ terminating \0 that were needed to fully comply to the print request.
+
+slprintf same as snprintf with the difference that it actually returns the
+ length printed not including the terminating \0.
spprintf is the dynamical version of snprintf. It allocates the buffer in size
as needed and allows a maximum setting as snprintf (turn this feature
@@ -71,15 +76,29 @@
NO = 0, YES = 1
} boolean_e;
+
BEGIN_EXTERN_C()
+PHPAPI int ap_php_slprintf(char *buf, size_t len, const char *format,...)
PHP_ATTRIBUTE_FORMAT(printf, 3, 4);
+PHPAPI int ap_php_vslprintf(char *buf, size_t len, const char *format, va_list
ap) PHP_ATTRIBUTE_FORMAT(printf, 3, 0);
PHPAPI int ap_php_snprintf(char *, size_t, const char *, ...)
PHP_ATTRIBUTE_FORMAT(printf, 3, 4);
PHPAPI int ap_php_vsnprintf(char *, size_t, const char *, va_list ap)
PHP_ATTRIBUTE_FORMAT(printf, 3, 0);
PHPAPI int php_sprintf (char* s, const char* format, ...)
PHP_ATTRIBUTE_FORMAT(printf, 2, 3);
PHPAPI char * php_gcvt(double value, int ndigit, char dec_point, char
exponent, char *buf);
PHPAPI char * php_conv_fp(register char format, register double num,
boolean_e add_dp, int precision, char dec_point, bool_int *
is_negative, char *buf, int *len);
+
END_EXTERN_C()
+#ifdef slprintf
+#undef slprintf
+#endif
+#define slprintf ap_php_slprintf
+
+#ifdef vslprintf
+#undef vslprintf
+#endif
+#define vslprintf ap_php_vslprintf
+
#ifdef snprintf
#undef snprintf
#endif
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php