diff options
-rw-r--r-- | runtime/ChangeLog | 5 | ||||
-rw-r--r-- | runtime/vsprintf.c | 18 |
2 files changed, 22 insertions, 1 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog index e093850b..e81373f8 100644 --- a/runtime/ChangeLog +++ b/runtime/ChangeLog @@ -1,3 +1,8 @@ +2006-05-25 Martin Hunt <hunt@redhat.com> + + * vsprintf.c (_stp_vsnprintf): Change %p to work like + libc and automatically insert "0x" before the pointer. + 2006-05-24 Josh Stone <joshua.i.stone@intel.com> PR 2677 diff --git a/runtime/vsprintf.c b/runtime/vsprintf.c index ba0bc85a..7abb5dc5 100644 --- a/runtime/vsprintf.c +++ b/runtime/vsprintf.c @@ -295,10 +295,26 @@ int _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args) break; case 'p': + len = 2*sizeof(void *) + 2; if (field_width == -1) { - field_width = 2*sizeof(void *); + field_width = len; flags |= STP_ZEROPAD; } + if (!(flags & STP_LEFT)) { + while (len < field_width--) { + if (str <= end) + *str = ' '; + ++str; + } + } + if (str <= end) { + *str++ = '0'; + field_width--; + } + if (str <= end) { + *str++ = 'x'; + field_width--; + } str = number(str, end, (unsigned long) va_arg(args, int64_t), 16, field_width, precision, flags); |