mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
Merged revisions 277568 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r277568 | tilghman | 2010-07-16 16:54:29 -0500 (Fri, 16 Jul 2010) | 8 lines Since we split values at the semicolon, we should store values with a semicolon as an encoded value. (closes issue #17369) Reported by: gkservice Patches: 20100625__issue17369.diff.txt uploaded by tilghman (license 14) Tested by: tilghman ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@277773 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Asterisk -- An open source telephony toolkit.
|
||||
*
|
||||
* Copyright (C) 1999 - 2005, Digium, Inc.
|
||||
* Copyright (C) 1999 - 2010, Digium, Inc.
|
||||
*
|
||||
* Mark Spencer <markster@digium.com>
|
||||
*
|
||||
@@ -2297,6 +2297,35 @@ int ast_destroy_realtime(const char *family, const char *keyfield, const char *l
|
||||
return res;
|
||||
}
|
||||
|
||||
char *ast_realtime_decode_chunk(char *chunk)
|
||||
{
|
||||
char *orig = chunk;
|
||||
for (; *chunk; chunk++) {
|
||||
if (*chunk == '^' && strchr("0123456789ABCDEFabcdef", chunk[1]) && strchr("0123456789ABCDEFabcdef", chunk[2])) {
|
||||
sscanf(chunk + 1, "%02hhd", chunk);
|
||||
memmove(chunk + 1, chunk + 3, strlen(chunk + 3) + 1);
|
||||
}
|
||||
}
|
||||
return orig;
|
||||
}
|
||||
|
||||
char *ast_realtime_encode_chunk(struct ast_str **dest, ssize_t maxlen, const char *chunk)
|
||||
{
|
||||
if (!strchr(chunk, ';') && !strchr(chunk, '^')) {
|
||||
ast_str_set(dest, maxlen, "%s", chunk);
|
||||
} else {
|
||||
ast_str_reset(*dest);
|
||||
for (; *chunk; chunk++) {
|
||||
if (strchr(";^", *chunk)) {
|
||||
ast_str_append(dest, maxlen, "^%02hhX", *chunk);
|
||||
} else {
|
||||
ast_str_append(dest, maxlen, "%c", *chunk);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ast_str_buffer(*dest);
|
||||
}
|
||||
|
||||
/*! \brief Helper function to parse arguments
|
||||
* See documentation in config.h
|
||||
*/
|
||||
|
Reference in New Issue
Block a user