projects
/
openssl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
68b4298
)
Make %p and %# work properly, at least with pointers and floats.
author
Richard Levitte
<levitte@openssl.org>
Thu, 3 Apr 2003 23:35:14 +0000
(23:35 +0000)
committer
Richard Levitte
<levitte@openssl.org>
Thu, 3 Apr 2003 23:35:14 +0000
(23:35 +0000)
crypto/bio/b_print.c
patch
|
blob
|
history
diff --git
a/crypto/bio/b_print.c
b/crypto/bio/b_print.c
index 3f5d6a74bf0c8a0c42e7092d2788fd9bc92b1092..a9e552f24521974e730a34d1e00695d4d7aa035e 100644
(file)
--- a/
crypto/bio/b_print.c
+++ b/
crypto/bio/b_print.c
@@
-378,7
+378,7
@@
_dopr(
case 'p':
value = (long)va_arg(args, void *);
fmtint(sbuffer, buffer, &currlen, maxlen,
case 'p':
value = (long)va_arg(args, void *);
fmtint(sbuffer, buffer, &currlen, maxlen,
- value, 16, min, max, flags);
+ value, 16, min, max, flags
|DP_F_NUM
);
break;
case 'n': /* XXX */
if (cflags == DP_C_SHORT) {
break;
case 'n': /* XXX */
if (cflags == DP_C_SHORT) {
@@
-482,8
+482,9
@@
fmtint(
int flags)
{
int signvalue = 0;
int flags)
{
int signvalue = 0;
+ char *prefix = "";
unsigned LLONG uvalue;
unsigned LLONG uvalue;
- char convert[DECIMAL_SIZE(value)+
1
];
+ char convert[DECIMAL_SIZE(value)+
3
];
int place = 0;
int spadlen = 0;
int zpadlen = 0;
int place = 0;
int spadlen = 0;
int zpadlen = 0;
@@
-501,6
+502,10
@@
fmtint(
else if (flags & DP_F_SPACE)
signvalue = ' ';
}
else if (flags & DP_F_SPACE)
signvalue = ' ';
}
+ if (flags & DP_F_NUM) {
+ if (base == 8) prefix = "0";
+ if (base == 16) prefix = "0x";
+ }
if (flags & DP_F_UP)
caps = 1;
do {
if (flags & DP_F_UP)
caps = 1;
do {
@@
-514,7
+519,7
@@
fmtint(
convert[place] = 0;
zpadlen = max - place;
convert[place] = 0;
zpadlen = max - place;
- spadlen = min - OSSL_MAX(max, place) - (signvalue ? 1 : 0);
+ spadlen = min - OSSL_MAX(max, place) - (signvalue ? 1 : 0)
- strlen(prefix)
;
if (zpadlen < 0)
zpadlen = 0;
if (spadlen < 0)
if (zpadlen < 0)
zpadlen = 0;
if (spadlen < 0)
@@
-536,6
+541,12
@@
fmtint(
if (signvalue)
doapr_outch(sbuffer, buffer, currlen, maxlen, signvalue);
if (signvalue)
doapr_outch(sbuffer, buffer, currlen, maxlen, signvalue);
+ /* prefix */
+ while (*prefix) {
+ doapr_outch(sbuffer, buffer, currlen, maxlen, *prefix);
+ prefix++;
+ }
+
/* zeros */
if (zpadlen > 0) {
while (zpadlen > 0) {
/* zeros */
if (zpadlen > 0) {
while (zpadlen > 0) {
@@
-692,7
+703,7
@@
fmtfp(
* Decimal point. This should probably use locale to find the correct
* char to print out.
*/
* Decimal point. This should probably use locale to find the correct
* char to print out.
*/
- if (max > 0) {
+ if (max > 0
|| (flags & DP_F_NUM)
) {
doapr_outch(sbuffer, buffer, currlen, maxlen, '.');
while (fplace > 0)
doapr_outch(sbuffer, buffer, currlen, maxlen, '.');
while (fplace > 0)