projects
/
runtime.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed %p formatting in silc_snprintf.
[runtime.git]
/
lib
/
silcutil
/
silcsnprintf.c
diff --git
a/lib/silcutil/silcsnprintf.c
b/lib/silcutil/silcsnprintf.c
index 633bdf1d295eb489d6a477c165ccc86aa7a7705d..501625abf21704d2fde80b45c65947fe00f2f165 100644
(file)
--- a/
lib/silcutil/silcsnprintf.c
+++ b/
lib/silcutil/silcsnprintf.c
@@
-91,6
+91,7
@@
#define DP_F_ZERO (1 << 4)
#define DP_F_UP (1 << 5)
#define DP_F_UNSIGNED (1 << 6)
#define DP_F_ZERO (1 << 4)
#define DP_F_UP (1 << 5)
#define DP_F_UNSIGNED (1 << 6)
+#define DP_F_HEXPREFIX (1 << 7)
/* Conversion Flags */
#define DP_C_SHORT 1
/* Conversion Flags */
#define DP_C_SHORT 1
@@
-322,8
+323,10
@@
static size_t dopr(char *buffer, size_t maxlen, const char *format,
fmtstr (buffer, &currlen, maxlen, strvalue, flags, min, max);
break;
case 'p':
fmtstr (buffer, &currlen, maxlen, strvalue, flags, min, max);
break;
case 'p':
+ flags |= (DP_F_UNSIGNED | DP_F_HEXPREFIX);
strvalue = va_arg (args, void *);
strvalue = va_arg (args, void *);
- fmtint (buffer, &currlen, maxlen, (long) strvalue, 16, min, max, flags);
+ fmtint (buffer, &currlen, maxlen, (long )strvalue, 16, min, max,
+ flags);
break;
case 'n':
if (cflags == DP_C_SHORT) {
break;
case 'n':
if (cflags == DP_C_SHORT) {
@@
-413,7
+416,7
@@
static void fmtstr(char *buffer, size_t *currlen, size_t maxlen,
/* Have to handle DP_F_NUM (ie 0x and 0 alternates) */
static void fmtint(char *buffer, size_t *currlen, size_t maxlen,
/* Have to handle DP_F_NUM (ie 0x and 0 alternates) */
static void fmtint(char *buffer, size_t *currlen, size_t maxlen,
-
long value, int base, int min, int max, int flags)
+ long value, int base, int min, int max, int flags)
{
int signvalue = 0;
unsigned long uvalue;
{
int signvalue = 0;
unsigned long uvalue;
@@
-468,6
+471,12
@@
static void fmtint(char *buffer, size_t *currlen, size_t maxlen,
--spadlen;
}
--spadlen;
}
+ /* 0x prefix */
+ if (flags & DP_F_HEXPREFIX) {
+ dopr_outch (buffer, currlen, maxlen, '0');
+ dopr_outch (buffer, currlen, maxlen, 'x');
+ }
+
/* Sign */
if (signvalue)
dopr_outch (buffer, currlen, maxlen, signvalue);
/* Sign */
if (signvalue)
dopr_outch (buffer, currlen, maxlen, signvalue);