projects
/
runtime.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e99bfc6
)
SILC_STR_ADVANCE support to unformatting.
author
Pekka Riikonen
<priikone@silcnet.org>
Thu, 9 Nov 2006 16:12:09 +0000
(16:12 +0000)
committer
Pekka Riikonen
<priikone@silcnet.org>
Thu, 9 Nov 2006 16:12:09 +0000
(16:12 +0000)
lib/silcutil/silcbuffmt.c
patch
|
blob
|
history
diff --git
a/lib/silcutil/silcbuffmt.c
b/lib/silcutil/silcbuffmt.c
index 20285ec84e4465f63d5c8e132bdef06b1595f72f..e980d2b6fc199613f4ce92debac66a5e4e527d84 100644
(file)
--- a/
lib/silcutil/silcbuffmt.c
+++ b/
lib/silcutil/silcbuffmt.c
@@
-313,6
+313,7
@@
int silc_buffer_sunformat_vp(SilcStack stack, SilcBuffer src, va_list ap)
SilcBufferParamType fmt;
unsigned char *start_ptr = src->data;
int len = 0;
SilcBufferParamType fmt;
unsigned char *start_ptr = src->data;
int len = 0;
+ SilcBool advance = FALSE;
/* Parse the arguments by formatting type. */
while(1) {
/* Parse the arguments by formatting type. */
while(1) {
@@
-647,6
+648,7
@@
int silc_buffer_sunformat_vp(SilcStack stack, SilcBuffer src, va_list ap)
break;
}
case SILC_PARAM_ADVANCE:
break;
}
case SILC_PARAM_ADVANCE:
+ advance = TRUE;
break;
case SILC_PARAM_END:
goto ok;
break;
case SILC_PARAM_END:
goto ok;
@@
-660,15
+662,17
@@
int silc_buffer_sunformat_vp(SilcStack stack, SilcBuffer src, va_list ap)
}
fail:
}
fail:
- SILC_LOG_DEBUG(("Error occured while unformatting buffer
"
));
+ SILC_LOG_DEBUG(("Error occured while unformatting buffer
, type %d", fmt
));
len = src->data - start_ptr;
silc_buffer_push(src, len);
return -1;
ok:
/* Push the buffer back to the start. */
len = src->data - start_ptr;
silc_buffer_push(src, len);
return -1;
ok:
/* Push the buffer back to the start. */
- len = src->data - start_ptr;
- silc_buffer_push(src, len);
+ if (!advance) {
+ len = src->data - start_ptr;
+ silc_buffer_push(src, len);
+ }
return len;
}
return len;
}