From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1jbJiD-0003AG-2D for mharc-grub-devel@gnu.org; Wed, 20 May 2020 04:04:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40076) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbJiB-00039o-FO for grub-devel@gnu.org; Wed, 20 May 2020 04:04:23 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:44719) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jbJiA-0007dF-FS for grub-devel@gnu.org; Wed, 20 May 2020 04:04:23 -0400 Received: by mail-pl1-x643.google.com with SMTP id w19so990736ply.11 for ; Wed, 20 May 2020 01:04:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axtens.net; s=google; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=ooM52BEV4eM6rgvLvhWMDERqE+zo9KQiPq+w7C0QK0c=; b=UfBAXIAZ/zv5l6HwzDnmwXLH+rR4gXmSrpUrg+0QhwfM+DCR1dD6mvGpR99Fiis/Lc lqNfVaXJahU8k1qKVfuqo8EJpbSqgZKQmpKjdCwqL2MVpe2frMiFKRb6C4spWx6wRf1N eipmjmA8fuEdPvim6xOQ3ko6Ol1WRwiW9WHWE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=ooM52BEV4eM6rgvLvhWMDERqE+zo9KQiPq+w7C0QK0c=; b=H/cAROVKtfKzdYd4P8jynl1wAn1mUZA6dSQQ4zXdta5PowNi417q7gefJebnHppwKo 5uGlnoxbBY08iUH52o3Rlupt5JWkpKR+UNwatXMuz5Vz+vNpX+acBUEFkkd/MKCAdHSm JXmRDgLtQMcgov/JX7AejQprLWL+Uj8Uqlovvp7rVAkYnjOjJXm4uKBGF8bvvJEich0m d6aeeQHweGPGrnoDOCMIQ2DfryU0enzbeOFB0wuVgmvXSf/XeWFVFkC+BuhECR3sTiTV HGSSDmel1AuFqwUgZYmPx/k8gu8urvo9xYiui0bgs9jE86XaZjQ+rrh+fDByWh9dfGAN ncvg== X-Gm-Message-State: AOAM53315Uzsx+16eFY5dSnsNc/pQ1gbm7/wHjyyt2hzPtzxMrZIGzWy miaA73npIFf8Hn95b2YusY0uiQ== X-Google-Smtp-Source: ABdhPJy/ohj0JorJc6tQJIVmZXWXPvr61ifZMs3C9TKgLybpEiu33nz0hjTeNF747jyuS+vOVSinjA== X-Received: by 2002:a17:90a:1501:: with SMTP id l1mr4068133pja.82.1589961860423; Wed, 20 May 2020 01:04:20 -0700 (PDT) Received: from localhost (2001-44b8-111e-5c00-b5ed-d3ff-25d3-7e68.static.ipv6.internode.on.net. [2001:44b8:111e:5c00:b5ed:d3ff:25d3:7e68]) by smtp.gmail.com with ESMTPSA id z29sm1502702pff.120.2020.05.20.01.04.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2020 01:04:19 -0700 (PDT) From: Daniel Axtens To: Javier Martinez Canillas , grub-devel@gnu.org Cc: Javier Martinez Canillas , Daniel Kiper Subject: Re: [PATCH] net: Don't use nested functions to allow building with clang In-Reply-To: <87ftbwhu23.fsf@dja-thinkpad.axtens.net> References: <20200519083422.950041-1-javierm@redhat.com> <87ftbwhu23.fsf@dja-thinkpad.axtens.net> Date: Wed, 20 May 2020 18:04:15 +1000 Message-ID: <87367vhw1s.fsf@dja-thinkpad.axtens.net> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2607:f8b0:4864:20::643; envelope-from=dja@axtens.net; helo=mail-pl1-x643.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 May 2020 08:04:23 -0000 > 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