On Sun, May 28, 2017 at 11:31:48AM -0700, Joel Teichroeb wrote:
> >> + /* TODO: Improve this logic */
> >> + strbuf_addf(&symbolic, "%s", REV);
> >> + str = strstr(symbolic.buf, "@");
> >
> > Could you elaborate on how this should be improved?
>
> I just figured there would be a builtin function that could help here,
> but hadn't had the chance to look into it. It's something easy to do
> in bash, but more complicated in C.
There's no strbuf function for "truncate at this character". But:
- you can use strchr for a single-character match, which is more
efficient; i.e.:
str = strchr(symbolic.buf, '@');
- instead of inserting a '\0' into the strbuf, use strbuf_setlen(),
which also updates the symbolic.len; i.e.:
strbuf_setlen(&symbolic, str - symbolic.buf);
- it looks like you copy into the strbuf just to truncate, so you
could actually get the final size before inserting into the strbuf
using strchrnul. Like:
end_of_rev = strchrnul(REV, '@');
strbuf_add(&symbolic, REV, end_of_rev - REV);
-Peff