From fd429c94c6f8b8134622d1d7edcd6fb941933181 Mon Sep 17 00:00:00 2001
From: Eric Oulashin <nightfox@synchro.net>
Date: Fri, 7 Mar 2025 20:33:27 +0000
Subject: [PATCH] DDFileLister: Fix for editing a file's extended description
 when the file doesn't have one initially

---
 xtrn/ddfilelister/ddfilelister.js      | 32 ++++++++++++++++++++------
 xtrn/ddfilelister/ddfl_cfg.js          |  4 ++--
 xtrn/ddfilelister/readme.txt           |  4 ++--
 xtrn/ddfilelister/revision_history.txt |  2 ++
 4 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/xtrn/ddfilelister/ddfilelister.js b/xtrn/ddfilelister/ddfilelister.js
index cc6818402b..0b42f328af 100644
--- a/xtrn/ddfilelister/ddfilelister.js
+++ b/xtrn/ddfilelister/ddfilelister.js
@@ -174,6 +174,9 @@
  *                              and expanding newlines
  *                              Refactored the way the settings and colors are structured in the
  *                              code. No functional change.
+ * 2025-03-06 Eric Oulashin     Version 2.29
+ *                              Bug fix for editing ext'd description when a file has no ext'd
+ *                              description initially
  */
 
 "use strict";
@@ -215,8 +218,8 @@ var gAvatar = load({}, "avatar_lib.js");
 
 
 // Version information
-var LISTER_VERSION = "2.28b";
-var LISTER_DATE = "2025-02-27";
+var LISTER_VERSION = "2.29";
+var LISTER_DATE = "2025-03-06";
 
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -2007,15 +2010,30 @@ function editFileInfo(pFileList, pFileListMenu)
 		var extdMetadata = getFileInfoFromFilebase(fileMetadata.dirCode, fileMetadata.name, FileBase.DETAIL.EXTENDED);
 		if (extdMetadata != null)
 		{
-			// Let the user edit the extended description with their configured editor
+			// Let the user edit the extended description (if it has one) with their configured editor
 			var descFilename = system.temp_dir + "extdDescTemp.txt";
 			var outFile = new File(descFilename);
 			if (outFile.open("w"))
 			{
-				// An extended file description is usually up to about 45 characters long
-				var descWrapped = word_wrap(extdMetadata.extdesc, 45, null, false).split("\r\n");
-				for (var lineIdx = 0; lineIdx < descWrapped.length; ++lineIdx)
-					outFile.writeln(descWrapped[lineIdx]);
+				if (typeof(extdMetadata.extdesc) === "string")
+				{
+					// An extended file description is usually up to about 45 characters long
+					var descWrapped = word_wrap(extdMetadata.extdesc, 45, null, false).split("\r\n");
+					for (var lineIdx = 0; lineIdx < descWrapped.length; ++lineIdx)
+						outFile.writeln(descWrapped[lineIdx]);
+				}
+				else
+				{
+					if (extdMetadata.hasOwnProperty("desc") && typeof(extdMetadata.desc) === "string" && extdMetadata.desc.length > 0)
+					{
+						if (console.yesno("No extended description. Start with short description"))
+							outFile.writeln(extdMetadata.desc);
+						else
+							outFile.writeln("");
+					}
+					else
+						outFile.writeln("");
+				}
 				outFile.close();
 				if (console.editfile(descFilename, "", "", fileMetadata.name, "", false))
 				{
diff --git a/xtrn/ddfilelister/ddfl_cfg.js b/xtrn/ddfilelister/ddfl_cfg.js
index d6fe829ed0..778ccda11a 100644
--- a/xtrn/ddfilelister/ddfl_cfg.js
+++ b/xtrn/ddfilelister/ddfl_cfg.js
@@ -4,7 +4,7 @@
 // If you have ddfilelister in a directory other than xtrn/ddfilelister, then the changes to
 // ddfilelister.cfg will be saved in that directory (assuming you're running ddmr_cfg.js from
 // that same directory).
-// Currently for ddfilelister 2.28b.
+// Currently for ddfilelister 2.29.
 //
 // If you're running ddfilelister from xtrn/ddfilelister (the standard location) and you want
 // to save the configuration file there (rather than sbbs/mods), you can use one of the
@@ -17,7 +17,7 @@ require("sbbsdefs.js", "P_NONE");
 require("uifcdefs.js", "UIFC_INMSG");
 
 
-if (!uifc.init("DigDist. File Lister 2.28b Configurator"))
+if (!uifc.init("DigDist. File Lister 2.29 Configurator"))
 {
 	print("Failed to initialize uifc");
 	exit(1);
diff --git a/xtrn/ddfilelister/readme.txt b/xtrn/ddfilelister/readme.txt
index 8df0eb1c35..d7723aeded 100644
--- a/xtrn/ddfilelister/readme.txt
+++ b/xtrn/ddfilelister/readme.txt
@@ -1,6 +1,6 @@
                         Digital Distortion File Lister
-                                 Version 2.28b
-                           Release date: 2025-02-27
+                                 Version 2.29
+                           Release date: 2025-03-06
 
                                      by
 
diff --git a/xtrn/ddfilelister/revision_history.txt b/xtrn/ddfilelister/revision_history.txt
index c55ac25521..cefbf6db32 100644
--- a/xtrn/ddfilelister/revision_history.txt
+++ b/xtrn/ddfilelister/revision_history.txt
@@ -5,6 +5,8 @@ Revision History (change log)
 =============================
 Version  Date         Description
 -------  ----         -----------
+2.29     2025-03-06   Bug fix for editing an extended description when a file
+                      doesn't have an extended description initially
 2.28b    2025-02-27   Formatting improvement for the traditional (non-lightbar)
                       user interface for some long descriptions using ANSI to
                       make them look better (removal of cursor movement codes
-- 
GitLab