File fix-appimage_dir.patch of Package celestia

diff -ruNp a/src/celestia/qt/qtmain.cpp b/src/celestia/qt/qtmain.cpp
--- a/src/celestia/qt/qtmain.cpp
+++ b/src/celestia/qt/qtmain.cpp
@@ -53,6 +53,9 @@ int main(int argc, char *argv[])
     CelestiaCore::initLocale();
 #ifdef ENABLE_NLS
     QString localeDir = LOCALEDIR;
+    QString appimageDir = QString::fromLocal8Bit(::getenv("APPDIR"));
+    if (!appimageDir.isEmpty())
+        localeDir = appimageDir + "/" + localeDir;
     bindtextdomain("celestia", localeDir.toUtf8().data());
     bind_textdomain_codeset("celestia", "UTF-8");
     bindtextdomain("celestia-data", localeDir.toUtf8().data());
diff -ruNp a/src/celestia/celestiacore.cpp b/src/celestia/celestiacore.cpp
--- a/src/celestia/celestiacore.cpp
+++ b/src/celestia/celestiacore.cpp
@@ -117,12 +117,19 @@ bool is_valid_directory(const fs::path&
 
 bool ReadLeapSecondsFile(const fs::path& path, std::vector<astro::LeapSecondRecord> &leapSeconds)
 {
-    std::ifstream file(path);
+    fs::path myPath;
+    const auto *appimageDir = getenv("APPDIR");
+    if (appimageDir != nullptr)
+        myPath = fs::path(appimageDir);
+    myPath += path;
+
+    std::ifstream file(myPath);
     if (!file.good())
     {
-        GetLogger()->error(_("Failed to open leapseconds file {}\n"), path);
+        GetLogger()->error(_("Failed to open leapseconds file {}\n"), myPath);
         return false;
     }
+    GetLogger()->info(_("Leapseconds file {} found\n"), myPath);
 
     std::string s;
     for (int line = 1; std::getline(file, s); line++)
@@ -139,7 +146,7 @@ bool ReadLeapSecondsFile(const fs::path&
         if (std::sscanf(ptr, "%" SCNuLEAST32 " %i", &timestamp, &seconds) != 2)
         {
             GetLogger()->error(_("Failed to parse leapseconds file {}, line {}, column {}\n"),
-                               path, line, ptr - &s[0]);
+                               myPath, line, ptr - &s[0]);
             leapSeconds.clear();
             return false;
         }
openSUSE Build Service is sponsored by