[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 2/2] block/rbd: Add an escape-aware strchr helper
From: |
Connor Kuehl |
Subject: |
Re: [PATCH v3 2/2] block/rbd: Add an escape-aware strchr helper |
Date: |
Wed, 21 Apr 2021 16:15:42 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
On 4/21/21 6:04 AM, Stefano Garzarella wrote:
>> +static char *qemu_rbd_strchr(char *src, char delim)
>> +{
>> + char *p;
>> +
>> + for (p = src; *p; ++p) {
>> + if (*p == delim) {
>> + return p;
>> + }
>> + if (*p == '\\' && p[1] != '\0') {
>> + ++p;
>> + }
>> + }
>> +
>> + return NULL;
>> +}
>> +
>
> IIUC this is similar to the code used in qemu_rbd_next_tok().
> To avoid code duplication can we use this new function inside it?
Hi Stefano! Good catch. I think you're right. I've incorporated your
suggestion into my next revision. The only thing I changed was the
if-statement from:
if (end && *end == delim) {
to:
if (end) {
Since qemu_rbd_strchr() will only ever return a non-NULL pointer if it
was able to find 'delim'.
Connor
>
> I mean something like this (not tested):
>
> diff --git a/block/rbd.c b/block/rbd.c
> index f098a89c7b..eb6a839362 100644
> --- a/block/rbd.c
> +++ b/block/rbd.c
> @@ -119,15 +119,8 @@ static char *qemu_rbd_next_tok(char *src, char delim,
> char **p)
>
> *p = NULL;
>
> - for (end = src; *end; ++end) {
> - if (*end == delim) {
> - break;
> - }
> - if (*end == '\\' && end[1] != '\0') {
> - end++;
> - }
> - }
> - if (*end == delim) {
> + end = qemu_rbd_strchr(src, delim);
> + if (end && *end == delim) {
> *p = end + 1;
> *end = '\0';
> }
>
>
> The rest LGTM!
>
> Thanks for fixing this issue,
> Stefano
>