From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1jaxhw-0003va-GN for mharc-grub-devel@gnu.org; Tue, 19 May 2020 04:34:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52344) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jaxhv-0003um-4d for grub-devel@gnu.org; Tue, 19 May 2020 04:34:39 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:40013 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jaxhu-0008Sh-0W for grub-devel@gnu.org; Tue, 19 May 2020 04:34:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589877276; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=boNWnE4+vG3U8XS1n0PZYH2gQiSE8UaPnPxxxRsLZYo=; b=OdtropYdne/ZxFR40sWJMy4nXjD9CVvsEcmDKKMdg83/R6o0ZCuF7+1vd0/jRB1EJ7E7dq PPZh7YQoWwXwK7o+kmwnKn6Iks3/njKqWVXm2Ujjyp+CvVeXdUCxXHXn0bxTX+8oZsB9Az 821w1KCxAEYeBH+YQEdBXYK4qIo+Teo= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-411-xfZy_F5DMdO1vOV_HsXniw-1; Tue, 19 May 2020 04:34:34 -0400 X-MC-Unique: xfZy_F5DMdO1vOV_HsXniw-1 Received: by mail-wm1-f69.google.com with SMTP id 23so1088186wma.8 for ; Tue, 19 May 2020 01:34:33 -0700 (PDT) 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:date:message-id:mime-version :content-transfer-encoding; bh=boNWnE4+vG3U8XS1n0PZYH2gQiSE8UaPnPxxxRsLZYo=; b=n1xdDPk6SRUreHuowASZavcgkJHyJ9nn+WeuXysGOqRdpbwT/lq7DIKRcVb+p426oc C29FpfSYkJ8LnbQxIDIeRhR2EOlsdTwCDkQVy4W3Ttd6q6Fb1yFcy0JQI+qZsKZ8TApO YDNrIPI4YlbSUb+SohhD2POAHgGAMLYiG5NgUoU00t0GtdjD3CB9ZuUaSa8CgIscTa96 soYyHaOIGTK9IfDGFIdLa6SstT20xArHUCzCpO1vPLwwjPVOv6AXMjdve9TMyw1ZP7ad hZwg+MNExwt23Yg2pD5yJhtyxxy31yn30c+iHkNk2HOZBX6HpY4kd+MuN0hsI3XjQQU6 BlcA== X-Gm-Message-State: AOAM530ihH+O6rR4tCrvdVp3N1kaZfCCF5mK2OtIW1VEgL7OGkWiL03t tdyPqaS5t2I1YCgAx1YNWAEhM2skp+oZbvt+i4NhpQAcIMaI09eN0hLs7OIzQ5qnCX8E6hEUR04 BL7ttWDawkPQ= X-Received: by 2002:a5d:4f81:: with SMTP id d1mr25702747wru.95.1589877272599; Tue, 19 May 2020 01:34:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwKVXP77cVzthvjmANdXD83zp3KVNj/jVX0boxMVus2VVBbMrElyd6WG8jQC36eqlEw65R05w== X-Received: by 2002:a5d:4f81:: with SMTP id d1mr25702717wru.95.1589877272370; Tue, 19 May 2020 01:34:32 -0700 (PDT) Received: from minerva.redhat.com ([2a01:c50f:ab80:6700:527f:85b3:5615:ff0b]) by smtp.gmail.com with ESMTPSA id i6sm19759950wrw.97.2020.05.19.01.34.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 01:34:31 -0700 (PDT) From: Javier Martinez Canillas To: grub-devel@gnu.org Cc: Javier Martinez Canillas , Daniel Axtens , Daniel Kiper Subject: [PATCH] net: Don't use nested functions to allow building with clang Date: Tue, 19 May 2020 10:34:22 +0200 Message-Id: <20200519083422.950041-1-javierm@redhat.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=207.211.31.81; envelope-from=javierm@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 00:34:39 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] 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, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, 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: Tue, 19 May 2020 08:34:39 -0000 Nested functions are supported as an extension in GNU C, but are not in the clang compiler. Commit cb2f15c5448 ("normal/main: Search for specific config files for netboot") added a nested function which caused the build to break when compiling with clang. Reported-by: Daniel Axtens Signed-off-by: Javier Martinez Canillas --- 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