Review: Needs Fixing
See comments inline below...
Diff comments:
> diff --git a/modules/libcom/src/misc/epicsString.c b/modules/libcom/src/misc/epicsString.c
> index ca61d9b..f2ed928 100644
> --- a/modules/libcom/src/misc/epicsString.c
> +++ b/modules/libcom/src/misc/epicsString.c
> @@ -117,6 +117,82 @@ done:
> return ndst;
> }
>
> +/*
> + * expand the given character.
> + * Place the expansion in *dest, which
> + * must be at least 5 characters long
> + *
> + * Returns: number of characters produced.
> + */
> +int
> +translateEscapedChar( char c, char *dest)
> +{
> + static const char hex[] = "0123456789abcdef";
> + char *ptr = dest;
> + int ret = 0;
> +
> + if( ptr == NULL)
> + return 0;
> +
> + *ptr++ = '\\';
> + switch( c) {
> + default:
> + if( isprint( c & 0xff)) {
> + *--ptr = c;
> + ptr++;
> + ret = 1;
> + } else {
> + *ptr++ = 'x';
> + *ptr++ = hex[(c >> 4) & 0x0f];
> + *ptr++ = hex[ c & 0x0f];
> + ret = 4;
> + }
> + break;
> +
> + case '\a': *ptr++ = 'a'; ret = 2; break;
> + case '\b': *ptr++ = 'b'; ret = 2; break;
> + case '\f': *ptr++ = 'f'; ret = 2; break;
> + case '\n': *ptr++ = 'n'; ret = 2; break;
> + case '\r': *ptr++ = 'r'; ret = 2; break;
> + case '\t': *ptr++ = 't'; ret = 2; break;
> + case '\v': *ptr++ = 'v'; ret = 2; break;
> + case '\\': *ptr++ = '\\'; ret = 2; break;
> + case '\'': *ptr++ = '\''; ret = 2; break;
> + case '\"': *ptr++ = '"'; ret = 2; break;
> + case '\0': *ptr++ = '0'; ret = 2; break;
> + }
> +
> + *ptr = 0;
> + return ret;
> +}
> +
> +int
> +epicsStrnEscapedFromRaw(char *dst, size_t dstlen, const char *src, size_t srclen)
> +{
> + char expanded[6];
> + int remain = dstlen;
> + int cnt = 0;
> +
> + if( src == dst)
> + return -1;
> +
> + for( int i = 0; i < srclen; i++) {
> + int num = translateEscapedChar( src[i], expanded);
> + if( num < remain) {
> + strcpy( dst, expanded);
> + remain -= num;
> + dst += num;
> + }
> + cnt += num;
> + }
> +
> + if( dstlen != 0)
> + *dst = 0;
> + return cnt;
> +}
> +
> +#if 0
> +endif /* 0 */
Doug, you have forgotten to delete the original version of this routine, and you left in some #if 0 and #endif statements around the original. Please remove them and the old code, make sure the result still works, then commit that change and push that change to launchpad again.
> int epicsStrnEscapedFromRaw(char *dst, size_t dstlen, const char *src,
> size_t srclen)
> {
--
https://code.launchpad.net/~dougmurray/epics-base/+git/epics-base/+merge/422030
Your team EPICS Core Developers is subscribed to branch epics-base:7.0.
- References:
- [Merge] ~dougmurray/epics-base:fix-1943245 into epics-base:7.0 Doug Murray via Core-talk
- Navigate by Date:
- Prev:
[Merge] ~dougmurray/epics-base:fix-1943245 into epics-base:7.0 Doug Murray via Core-talk
- Next:
[Bug 1943245] Re: epicsStrnEscapedFromRaw may print inclomplete escape sequences Andrew Johnson via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
- Navigate by Thread:
- Prev:
[Merge] ~dougmurray/epics-base:fix-1943245 into epics-base:7.0 Doug Murray via Core-talk
- Next:
Build failed: epics-base base-ememfs-827 AppVeyor via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
|