diff --git a/src/loadimage.cpp b/src/loadimage.cpp index 7bc744a..685e377 100644 --- a/src/loadimage.cpp +++ b/src/loadimage.cpp @@ -100,6 +100,28 @@ bool loadFITS(const QString path, ImageInfoData &info, std::shared_ptr }; fits_open_diskfile(&file, path.toLocal8Bit().data(), READONLY, &status); + + QByteArray buffer; + size_t bufferSize = 0; + void *bufferPtr = nullptr; + if(status == FILE_NOT_OPENED) + { + qWarning() << "Could not open file directly tring memfile workaround" << path; + QFile fr(path); + if(fr.open(QIODevice::ReadOnly)) + { + buffer = fr.readAll(); + bufferSize = buffer.size(); + bufferPtr = buffer.data(); + status = 0; + fits_open_memfile(&file, "memfile", READONLY, &bufferPtr, &bufferSize, 0, NULL, &status); + } + else + { + qWarning() << "QFile failed to open file" << path; + return false; + } + } if(status)return checkError(); fits_get_num_hdus(file, &num, &status); if(status)return checkError(); @@ -344,15 +366,37 @@ bool loadXISF(const QString &path, ImageInfoData &info, std::shared_ptr +#include "markedfiles.h" +#include "settingsdialog.h" +#include "statusbar.h" +#include +#include +#include #include +#include +#include +#include +#include +#include +#include #include #include #include -#include -#include #include +#include +#include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "loadrunable.h" -#include "markedfiles.h" -#include "about.h" -#include "statusbar.h" -#include "settingsdialog.h" -#include "histogram.h" -#include "batchprocessing.h" -#include "filemanager.h" #ifdef __linux__ #include diff --git a/src/scriptengine.cpp b/src/scriptengine.cpp index 4421247..424f818 100644 --- a/src/scriptengine.cpp +++ b/src/scriptengine.cpp @@ -676,6 +676,27 @@ bool File::modifyFITSRecords(const FITSRecordModify *modify) int status = 0; QString path = makeUNCPath(_path); fits_open_diskfile(&file, path.toLocal8Bit().data(), READWRITE, &status); + QByteArray buffer; + size_t bufferSize = 0; + void *bufferPtr = nullptr; + if(status == FILE_NOT_OPENED) + { + qWarning() << "Could not open file directly tring memfile workaround" << path; + QFile fr(path); + if(fr.open(QIODevice::ReadOnly)) + { + buffer = fr.readAll(); + bufferSize = buffer.size(); + bufferPtr = buffer.data(); + status = 0; + fits_open_memfile(&file, "memfile", READONLY, &bufferPtr, &bufferSize, 0, NULL, &status); + } + else + { + qWarning() << "QFile failed to open file" << path; + return false; + } + } int num = 0; fits_get_num_hdus(file, &num, &status); if(status)