From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1VplXk-0007wl-18 for mharc-grub-devel@gnu.org; Sun, 08 Dec 2013 16:05:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56808) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VplXY-0007vd-PU for grub-devel@gnu.org; Sun, 08 Dec 2013 16:05:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VplXQ-0007nI-CV for grub-devel@gnu.org; Sun, 08 Dec 2013 16:05:24 -0500 Received: from mail-la0-x22f.google.com ([2a00:1450:4010:c03::22f]:60762) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VplXQ-0007n8-4Y for grub-devel@gnu.org; Sun, 08 Dec 2013 16:05:16 -0500 Received: by mail-la0-f47.google.com with SMTP id ep20so1035680lab.6 for ; Sun, 08 Dec 2013 13:05:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:in-reply-to:references; bh=Q+mOkgks8Md9zHvk376KBSoV9vRBbVDuMPm0Z+ULZbA=; b=UpKgXxRblPTMMMtwxySYISoNHDoAke0x/U7CXzUOZnYaLnScb5B9PdLuvWPZq70sOh Vroyptt6PBLGewl3hHK/IGdgqs7Iv7pSvSOuLbBueJE/Hudrr7xhlfKvdjId3lWAa0XN 9qu8G+eHaQWMQ9CKC/axioVAQPRqRsd36Xv8JJA4f6TnyPwf4uMhLWJQVulOQfRfRI+g bIlJqaw1CEQ8GO5U9ix57ERuLUiBepXD1ZbPaIcdo32ljTwDMV4zo+i2XBV/Dq3oUajG qGYIXB80SyUdYudhR4+nK0jvTJO76VZEvOb6NKHLwJHSwjizzs4W/P93TAJBRDThi7lI LtPg== X-Received: by 10.112.167.42 with SMTP id zl10mr52708lbb.92.1386536715083; Sun, 08 Dec 2013 13:05:15 -0800 (PST) Received: from localhost.localdomain (ppp91-76-134-134.pppoe.mtu-net.ru. [91.76.134.134]) by mx.google.com with ESMTPSA id i8sm6781332lbh.2.2013.12.08.13.05.14 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 08 Dec 2013 13:05:14 -0800 (PST) From: Andrey Borzenkov To: grub-devel@gnu.org Subject: [PATCH] always define config_directory and config_file as full pathname Date: Mon, 9 Dec 2013 01:05:10 +0400 Message-Id: <1386536710-30180-1-git-send-email-arvidjaar@gmail.com> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <52A37FDD.3040304@gmail.com> References: <52A37FDD.3040304@gmail.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::22f X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Dec 2013 21:05:33 -0000 > Adding ($root) to config_file/config_directory if none present would be > good. Like this? If configfile is relative pathname, extend it with current ($root) so its interpretation does not change if $root is changed later. Suggested by Vladimir Serbienko. --- grub-core/normal/main.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c index 991a595..84df360 100644 --- a/grub-core/normal/main.c +++ b/grub-core/normal/main.c @@ -190,14 +190,26 @@ read_config_file (const char *config) ctmp = grub_env_get ("config_directory"); if (ctmp) old_dir = grub_strdup (ctmp); - grub_env_set ("config_file", config); - config_dir = grub_strdup (config); + if (*config == '(') + { + grub_env_set ("config_file", config); + config_dir = grub_strdup (config); + } + else + { + /* $root is guranteed to be defined, otherwise open above would fail */ + config_dir = grub_xasprintf ("(%s)%s", grub_env_get ("root"), config); + if (config_dir) + grub_env_set ("config_file", config_dir); + } if (config_dir) - ptr = grub_strrchr (config_dir, '/'); - if (ptr) - *ptr = 0; - grub_env_set ("config_directory", config_dir); - grub_free (config_dir); + { + ptr = grub_strrchr (config_dir, '/'); + if (ptr) + *ptr = 0; + grub_env_set ("config_directory", config_dir); + grub_free (config_dir); + } grub_env_export ("config_file"); grub_env_export ("config_directory"); -- tg: (78b2b0a..) u/config_file_without_dir (depends on: master)