[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] net: Don't use nested functions to allow building with clang
From: |
Daniel Axtens |
Subject: |
Re: [PATCH] net: Don't use nested functions to allow building with clang |
Date: |
Wed, 20 May 2020 18:04:15 +1000 |
> clang still doesn't like 'make check', but that looks like a different
> issue around relocations. clang isn't a huge priority for me, so it
> might take a while. But this patch is good to go in regardless.
Turns out I needed to specify CXX=clang++ as well.
Daniel
>
> Thanks again,
> Daniel
>
>> ---
>>
>> grub-core/net/net.c | 65 +++++++++++++++++++++++----------------------
>> 1 file changed, 33 insertions(+), 32 deletions(-)
>>
>> diff --git a/grub-core/net/net.c b/grub-core/net/net.c
>> index c42f0f4f71d..ec7e2899ed5 100644
>> --- a/grub-core/net/net.c
>> +++ b/grub-core/net/net.c
>> @@ -1735,42 +1735,43 @@ grub_net_restore_hw (void)
>> return GRUB_ERR_NONE;
>> }
>>
>> -grub_err_t
>> -grub_net_search_config_file (char *config)
>> +static int grub_config_search_through (char *config, char *suffix,
>> + grub_size_t num_tries,
>> + grub_size_t slice_size)
>> {
>> - grub_size_t config_len;
>> - char *suffix;
>> + while (num_tries-- > 0)
>> + {
>> + grub_file_t file;
>>
>> - auto int search_through (grub_size_t num_tries, grub_size_t slice_size);
>> - int search_through (grub_size_t num_tries, grub_size_t slice_size)
>> - {
>> - while (num_tries-- > 0)
>> - {
>> - grub_file_t file;
>> + grub_dprintf ("net", "attempt to fetch config %s\n", config);
>>
>> - grub_dprintf ("net", "attempt to fetch config %s\n", config);
>> + file = grub_file_open (config, GRUB_FILE_TYPE_CONFIG);
>>
>> - file = grub_file_open (config, GRUB_FILE_TYPE_CONFIG);
>> + if (file)
>> + {
>> + grub_file_close (file);
>> + return 0;
>> + }
>> + else
>> + {
>> + if (grub_errno == GRUB_ERR_IO)
>> + grub_errno = GRUB_ERR_NONE;
>> + }
>>
>> - if (file)
>> - {
>> - grub_file_close (file);
>> - return 0;
>> - }
>> - else
>> - {
>> - if (grub_errno == GRUB_ERR_IO)
>> - grub_errno = GRUB_ERR_NONE;
>> - }
>> + if (grub_strlen (suffix) < slice_size)
>> + break;
>>
>> - if (grub_strlen (suffix) < slice_size)
>> - break;
>> + config[grub_strlen (config) - slice_size] = '\0';
>> + }
>>
>> - config[grub_strlen (config) - slice_size] = '\0';
>> - }
>> + return 1;
>> +}
>>
>> - return 1;
>> - }
>> +grub_err_t
>> +grub_net_search_config_file (char *config)
>> +{
>> + grub_size_t config_len;
>> + char *suffix;
>>
>> config_len = grub_strlen (config);
>> config[config_len] = '-';
>> @@ -1801,7 +1802,7 @@ grub_net_search_config_file (char *config)
>> if (client_uuid)
>> {
>> grub_strcpy (suffix, client_uuid);
>> - if (search_through (1, 0) == 0)
>> + if (grub_config_search_through (config, suffix, 1, 0) == 0)
>> return GRUB_ERR_NONE;
>> }
>>
>> @@ -1816,7 +1817,7 @@ grub_net_search_config_file (char *config)
>> if (*ptr == ':')
>> *ptr = '-';
>>
>> - if (search_through (1, 0) == 0)
>> + if (grub_config_search_through (config, suffix, 1, 0) == 0)
>> return GRUB_ERR_NONE;
>>
>> /* By IP address */
>> @@ -1831,7 +1832,7 @@ grub_net_search_config_file (char *config)
>> ((n >> 24) & 0xff), ((n >> 16) & 0xff), \
>> ((n >> 8) & 0xff), ((n >> 0) & 0xff));
>>
>> - if (search_through (8, 1) == 0)
>> + if (grub_config_search_through (config, suffix, 8, 1) == 0)
>> return GRUB_ERR_NONE;
>> break;
>> }
>> @@ -1848,7 +1849,7 @@ grub_net_search_config_file (char *config)
>> *ptr = '-';
>>
>> grub_snprintf (suffix, GRUB_NET_MAX_STR_ADDR_LEN, "%s", buf);
>> - if (search_through (1, 0) == 0)
>> + if (grub_config_search_through (config, suffix, 1, 0) == 0)
>> return GRUB_ERR_NONE;
>> break;
>> }
>> --
>> 2.26.2