lib/mangle: return size of the decoded buffer
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
da96496322
commit
61b9233995
|
@ -8,7 +8,7 @@
|
||||||
extern char *mangle(const char *s);
|
extern char *mangle(const char *s);
|
||||||
|
|
||||||
extern void unmangle_to_buffer(const char *s, char *buf, size_t len);
|
extern void unmangle_to_buffer(const char *s, char *buf, size_t len);
|
||||||
void unhexmangle_to_buffer(const char *s, char *buf, size_t len);
|
extern size_t unhexmangle_to_buffer(const char *s, char *buf, size_t len);
|
||||||
|
|
||||||
extern char *unmangle(const char *s, char **end);
|
extern char *unmangle(const char *s, char **end);
|
||||||
|
|
||||||
|
|
|
@ -70,12 +70,13 @@ void unmangle_to_buffer(const char *s, char *buf, size_t len)
|
||||||
*buf = '\0';
|
*buf = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
void unhexmangle_to_buffer(const char *s, char *buf, size_t len)
|
size_t unhexmangle_to_buffer(const char *s, char *buf, size_t len)
|
||||||
{
|
{
|
||||||
size_t sz = 0;
|
size_t sz = 0;
|
||||||
|
const char *buf0 = buf;
|
||||||
|
|
||||||
if (!s)
|
if (!s)
|
||||||
return;
|
return 0;
|
||||||
|
|
||||||
while(*s && sz < len - 1) {
|
while(*s && sz < len - 1) {
|
||||||
if (*s == '\\' && sz + 3 < len - 1 && s[1] == 'x' &&
|
if (*s == '\\' && sz + 3 < len - 1 && s[1] == 'x' &&
|
||||||
|
@ -90,6 +91,7 @@ void unhexmangle_to_buffer(const char *s, char *buf, size_t len)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*buf = '\0';
|
*buf = '\0';
|
||||||
|
return buf - buf0 + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline char *skip_nonspaces(const char *s)
|
static inline char *skip_nonspaces(const char *s)
|
||||||
|
|
Loading…
Reference in New Issue