EPICS Home

Experimental Physics and Industrial Control System


 
2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024 
<== Date ==> <== Thread ==>

Subject: Re: [Merge] ~dougmurray/epics-base:fix-1943245 into epics-base:7.0
From: Andrew Johnson via Core-talk <core-talk at aps.anl.gov>
To: mp+422030 at code.launchpad.net
Date: Wed, 11 May 2022 18:52:12 -0000
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  <20222023  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  <20222023  2024