}
for (i = 0; i < ndigit && digits[i] != '\0'; i++);
-
+
if ((decpt >= 0 && decpt - i > 4) || (decpt < 0 && decpt < -3)) { /* use E-style */
/* exponential format (e.g. 1.2345e+13) */
if (--decpt < 0) {
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
*is_negative = (num < 0);
/*
- * On a 2's complement machine, negating the most negative integer
+ * On a 2's complement machine, negating the most negative integer
* results in a number that cannot be represented as a signed integer.
* Here is what we do to obtain the number's magnitude:
* a. add 1 to the number
}
/*
- * We use a do-while loop so that we write at least 1 digit
+ * We use a do-while loop so that we write at least 1 digit
*/
do {
register u_wide_int new_magnitude = magnitude / 10;
fmt++;
}
/* these are promoted to int, so no break */
- default:
+ default:
modifier = LM_STD;
break;
}
}
s = res;
s_to_free = s;
-
+
pad_char = ' ';
break;
}
goto skip_output;
/*
- * Always extract the argument as a "char *" pointer. We
- * should be using "void *" but there are still machines
+ * Always extract the argument as a "char *" pointer. We
+ * should be using "void *" but there are still machines
* that don't understand it.
* If the pointer size is equal to the size of an unsigned
- * integer we convert the pointer to a hex number, otherwise
+ * integer we convert the pointer to a hex number, otherwise
* we print "%p" to indicate that we don't handle "%p".
*/
case 'p':
if (sizeof(char *) <= sizeof(u_wide_int)) {
ui_num = (u_wide_int)((size_t) va_arg(ap, char *));
- s = ap_php_conv_p2(ui_num, 4, 'x',
+ s = ap_php_conv_p2(ui_num, 4, 'x',
&num_buf[NUM_BUF_SIZE], &s_len);
if (ui_num != 0) {
*--s = 'x';
PAD(min_width, s_len, pad_char);
}
/*
- * Print the string s.
+ * Print the string s.
*/
for (i = s_len; i != 0; i--) {
INS_CHAR(*s, sp, bep, cc);
/*
-Comparing: sprintf, snprintf, slprintf, 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
before beeing able to call the function. In other words you must
be sure that you really know the maximum size of the buffer required.
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
+ 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
+ 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
+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
off by setting max_len to 0). spprintf is a little bit slower than
- snprintf and offers possible memory leakes if you miss freeing the
- buffer allocated by the function. Therfore this function should be
+ snprintf and offers possible memory leakes if you miss freeing the
+ buffer allocated by the function. Therfore this function should be
used where either no maximum is known or the maximum is much bigger
than normal size required. spprintf allways terminates the buffer.
| | if (!buffer)
| | return OUT_OF_MEMORY
// sprintf allways terminates | // manual termination of | // spprintf allays terminates buffer
- // buffer | // buffer *IS* required |
- | buffer[MAX-1] = 0; |
+ // buffer | // buffer *IS* required |
+ | buffer[MAX-1] = 0; |
action_with_buffer(buffer); | action_with_buffer(buffer); | action_with_buffer(buffer);
| | efree(buffer);
*/
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
smart_str_appendl(xbuf, s, s_len); \
} \
} while (0)
-
+
#define INS_CHAR(unicode, xbuf, ch) \
INS_CHAR_NR(unicode, xbuf, ch)
fmt++;
}
/* these are promoted to int, so no break */
- default:
+ default:
modifier = LM_STD;
break;
}
s = res;
free_s = 1;
}
-
+
pad_char = ' ';
break;
}
goto skip_output;
/*
- * Always extract the argument as a "char *" pointer. We
- * should be using "void *" but there are still machines
+ * Always extract the argument as a "char *" pointer. We
+ * should be using "void *" but there are still machines
* that don't understand it.
* If the pointer size is equal to the size of an unsigned
- * integer we convert the pointer to a hex number, otherwise
+ * integer we convert the pointer to a hex number, otherwise
* we print "%p" to indicate that we don't handle "%p".
*/
case 'p':
if (sizeof(char *) <= sizeof(u_wide_int)) {
ui_num = (u_wide_int)((size_t) va_arg(ap, char *));
- s = ap_php_conv_p2(ui_num, 4, 'x',
+ s = ap_php_conv_p2(ui_num, 4, 'x',
&num_buf[NUM_BUF_SIZE], &s_len);
if (ui_num != 0) {
*--s = 'x';
PAD(unicode, xbuf, min_width - s_len, pad_char);
}
/*
- * Print the string s.
+ * Print the string s.
*/
INS_STRING(unicode, s_unicode, xbuf, s, s_len);
if (free_s) efree(s);
smart_str xbuf = {0};
xbuf_format_converter(0, &xbuf, format, ap);
-
+
if (max_len && xbuf.len > max_len) {
xbuf.len = max_len;
}
smart_str_0(&xbuf);
-
+
*pbuf = xbuf.c;
-
+
return xbuf.len;
}
/* }}} */
smart_str xbuf = {0};
xbuf_format_converter(1, &xbuf, format, ap);
-
+
if (max_len && xbuf.len > max_len) {
xbuf.len = max_len;
}
smart_str_0(&xbuf);
-
+
*pbuf = (UChar*)xbuf.c;
-
+
return xbuf.len / sizeof(UChar);
}
/* }}} */
/* $Id$ */
-/*
+/*
The pbuf parameter of all spprintf version receives a pointer to the allocated
buffer. This buffer must be freed manually after usage using efree() function.
that purpose snprintf is faster. When both pbuf and the return value are 0
than you are out of memory.
-All functions return the number of character printed (e.g. length), not the
+All functions return the number of character printed (e.g. length), not the
number of bytes.
There is also snprintf: See difference explained in snprintf.h