EPICS Controls Argonne National Laboratory

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 
ANJ, 14 Sep 2022 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·