From 3ecfce3c73e28117ec6768946e54041142e13d03 Mon Sep 17 00:00:00 2001
From: Shin-ya Murakami <86389420+murashinln@users.noreply.github.com>
Date: Sat, 31 Aug 2024 01:04:50 +0900
Subject: [PATCH] Fix detached label support for kaguyasp2ascii (#5607)

* Fixed kaguyasp2ascii with detached label data input

- Fixed condition to check whether input file is attached label or detached label.
- Fixed input file specification outside current directory for detached label case

* Updated changelog

* Updated creaters
---
 .zenodo.json                                 |  4 ++++
 CHANGELOG.md                                 |  4 ++++
 isis/src/kaguya/apps/kaguyasp2ascii/main.cpp | 15 ++++++++++++---
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/.zenodo.json b/.zenodo.json
index bb5af05e1c..dc6c0adeaf 100644
--- a/.zenodo.json
+++ b/.zenodo.json
@@ -336,6 +336,10 @@
     {
       "name": "Miller-Ribelin, Elizabeth"
     },
+    {
+      "affiliation": "Japan Aerospace Exploration Agency, Institute of Space and Astronautical Science",
+      "name": "Murakami, Shin-ya",
+      "orcid": "0000-0002-7137-4849"
     {
       "affiliation": "United States Geological Survey, Astro Geology Science Center",
       "name": "Nelson, Gavin"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index aba827254e..33e339fb97 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,6 +35,10 @@ release.
 
 ## [Unreleased]
 
+### Fixed
+
+- Fixed a bug in kaguyasp2isis that doesn't work for data with a detached label.
+
 ## [8.3.0] - 2024-08-16
 
 ### Added
diff --git a/isis/src/kaguya/apps/kaguyasp2ascii/main.cpp b/isis/src/kaguya/apps/kaguyasp2ascii/main.cpp
index ac42ba6e28..a298615b59 100644
--- a/isis/src/kaguya/apps/kaguyasp2ascii/main.cpp
+++ b/isis/src/kaguya/apps/kaguyasp2ascii/main.cpp
@@ -11,6 +11,7 @@ find files of those names at the top level of this repository. **/
 #include <bitset>
 #include <cstdio>
 #include <QString>
+#include <QDir>
 
 #include "ProcessImportPds.h"
 
@@ -32,12 +33,20 @@ void IsisMain() {
   // Detached labels use format keyword = "dataFile" value <unit>
   int keywordIndex = 1;
 
-  if (FileName(inFile).baseName() == FileName(dataFile).baseName()){
-    // data files usually do not include path information.  If input basename matches datafile basename, include path information
-    // this allows users to specify data that is not in the current directory.
+  // Determine label for inFile is attached label or detached label
+  if (FileName(inFile).name() == FileName(dataFile).name()){
+    // If input filename matches datafile filename without path information,
+    // one assumes label file for inFile is attached label, otherwise
+    // detached label.
     dataFile = inFile;
     // Attached labels use format keyword = value <units>
     keywordIndex = 0;
+  } else {
+     // data files specification in label usually do not include path
+     // information. If label is detached label, data file is located at
+     // the same directory as label file. 
+     // this allows users to specify data that is not in the current directory.
+     dataFile = FileName(inFile).dir().path() + "/" + dataFile;
   }
 
   ofstream os;
-- 
GitLab