From 597d90207e144e9b99292ec91d84b16c54fd82d6 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@telfort.nl>
Date: Thu, 27 Dec 2018 21:08:57 +0100
Subject: [PATCH] startup: improve two error messages by mentioning the invalid
 operand

This addresses https://savannah.gnu.org/bugs/?55304.
---
 src/files.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/files.c b/src/files.c
index 2bbb37f4..f34c98be 100644
--- a/src/files.c
+++ b/src/files.c
@@ -1465,12 +1465,14 @@ char *safe_tempfile(FILE **f)
 /* Change to the specified operating directory, when it's valid. */
 void init_operating_dir(void)
 {
-	operating_dir = free_and_assign(operating_dir, get_full_path(operating_dir));
+	char *target = get_full_path(operating_dir);
 
 	/* If the operating directory is inaccessible, fail. */
-	if (operating_dir == NULL || chdir(operating_dir) == -1)
-		die(_("Invalid operating directory\n"));
+	if (target == NULL || chdir(target) == -1)
+		die(_("Invalid operating directory: %s\n"), operating_dir);
 
+	free(operating_dir);
+	operating_dir = target;
 	snuggly_fit(&operating_dir);
 }
 
@@ -1530,13 +1532,15 @@ int prompt_failed_backupwrite(const char *filename)
  * and verify that it is usable. */
 void init_backup_dir(void)
 {
-	backup_dir = free_and_assign(backup_dir, get_full_path(backup_dir));
+	char *target = get_full_path(backup_dir);
 
 	/* If we can't get an absolute path (which means it doesn't exist or
 	 * isn't accessible), or it's not a directory, fail. */
-	if (backup_dir == NULL || backup_dir[strlen(backup_dir) - 1] != '/')
-		die(_("Invalid backup directory\n"));
+	if (target == NULL || target[strlen(target) - 1] != '/')
+		die(_("Invalid backup directory: %s\n"), backup_dir);
 
+	free(backup_dir);
+	backup_dir = target;
 	snuggly_fit(&backup_dir);
 }
 #endif /* !NANO_TINY */
-- 
GitLab