Handle MAX_PATH every where
This commit is contained in:
+22
-5
@@ -15,8 +15,23 @@
|
|||||||
#include "starfit.h"
|
#include "starfit.h"
|
||||||
#include <lcms2.h>
|
#include <lcms2.h>
|
||||||
|
|
||||||
|
QString makeMaxPath(QString path)
|
||||||
|
{
|
||||||
|
#ifdef Q_OS_WIN64
|
||||||
|
if(!path.startsWith("\\\\?\\"))
|
||||||
|
{
|
||||||
|
QFileInfo info(path);
|
||||||
|
path = info.absoluteFilePath();
|
||||||
|
path = QDir::toNativeSeparators(path);
|
||||||
|
path.prepend("\\\\?\\");
|
||||||
|
qDebug() << path;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
LoadRunable::LoadRunable(const QString &file, Image *receiver, AnalyzeLevel level, bool thumbnail) :
|
LoadRunable::LoadRunable(const QString &file, Image *receiver, AnalyzeLevel level, bool thumbnail) :
|
||||||
m_file(file),
|
m_file(makeMaxPath(file)),
|
||||||
m_receiver(receiver),
|
m_receiver(receiver),
|
||||||
m_analyzeLevel(level),
|
m_analyzeLevel(level),
|
||||||
m_thumbnail(thumbnail)
|
m_thumbnail(thumbnail)
|
||||||
@@ -451,7 +466,8 @@ bool readFITSHeader(const QString &path, ImageInfoData &info)
|
|||||||
{
|
{
|
||||||
fitsfile *fr;
|
fitsfile *fr;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
fits_open_diskfile(&fr, path.toLocal8Bit().data(), READONLY, &status);
|
QString path2 = makeMaxPath(path);
|
||||||
|
fits_open_diskfile(&fr, path2.toLocal8Bit().data(), READONLY, &status);
|
||||||
|
|
||||||
if(fr && status == 0)
|
if(fr && status == 0)
|
||||||
{
|
{
|
||||||
@@ -463,10 +479,11 @@ bool readFITSHeader(const QString &path, ImageInfoData &info)
|
|||||||
|
|
||||||
bool readXISFHeader(const QString &path, ImageInfoData &info)
|
bool readXISFHeader(const QString &path, ImageInfoData &info)
|
||||||
{
|
{
|
||||||
|
QString path2 = makeMaxPath(path);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LibXISF::XISFReader xisf;
|
LibXISF::XISFReader xisf;
|
||||||
xisf.open(path.toLocal8Bit().data());
|
xisf.open(path2.toLocal8Bit().data());
|
||||||
const LibXISF::Image &image = xisf.getImage(0, false);
|
const LibXISF::Image &image = xisf.getImage(0, false);
|
||||||
|
|
||||||
auto fitskeywords = image.fitsKeywords();
|
auto fitskeywords = image.fitsKeywords();
|
||||||
@@ -532,8 +549,8 @@ bool loadImage(const QString &path, ImageInfoData &info, std::shared_ptr<RawImag
|
|||||||
}
|
}
|
||||||
|
|
||||||
ConvertRunable::ConvertRunable(const QString &in, const QString &out, const QString &format, const ConvertParams ¶ms, QSemaphore *semaphore) :
|
ConvertRunable::ConvertRunable(const QString &in, const QString &out, const QString &format, const ConvertParams ¶ms, QSemaphore *semaphore) :
|
||||||
m_infile(in),
|
m_infile(makeMaxPath(in)),
|
||||||
m_outfile(out),
|
m_outfile(makeMaxPath(out)),
|
||||||
m_format(format),
|
m_format(format),
|
||||||
m_params(params),
|
m_params(params),
|
||||||
m_semaphore(semaphore)
|
m_semaphore(semaphore)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
class RawImage;
|
class RawImage;
|
||||||
|
|
||||||
|
QString makeMaxPath(QString path);
|
||||||
bool readFITSHeader(const QString &path, ImageInfoData &info);
|
bool readFITSHeader(const QString &path, ImageInfoData &info);
|
||||||
bool readXISFHeader(const QString &path, ImageInfoData &info);
|
bool readXISFHeader(const QString &path, ImageInfoData &info);
|
||||||
bool loadImage(const QString &path, ImageInfoData &info, std::shared_ptr<RawImage> &rawImage, bool planar = false);
|
bool loadImage(const QString &path, ImageInfoData &info, std::shared_ptr<RawImage> &rawImage, bool planar = false);
|
||||||
|
|||||||
+8
-6
@@ -519,7 +519,8 @@ bool File::modifyFITSRecords(const FITSRecordModify *modify)
|
|||||||
{
|
{
|
||||||
fitsfile *file;
|
fitsfile *file;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
fits_open_diskfile(&file, _path.toLocal8Bit().data(), READWRITE, &status);
|
QString path = makeMaxPath(_path);
|
||||||
|
fits_open_diskfile(&file, path.toLocal8Bit().data(), READWRITE, &status);
|
||||||
int num = 0;
|
int num = 0;
|
||||||
fits_get_num_hdus(file, &num, &status);
|
fits_get_num_hdus(file, &num, &status);
|
||||||
if(status)
|
if(status)
|
||||||
@@ -642,9 +643,10 @@ bool File::modifyFITSRecords(const FITSRecordModify *modify)
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
LibXISF::XISFModify modifyXISF;
|
LibXISF::XISFModify modifyXISF;
|
||||||
modifyXISF.open(_path.toLocal8Bit().data());
|
QString in = makeMaxPath(absoluteFilePath());
|
||||||
QFileInfo in(_path);
|
QString out = in + "~";
|
||||||
QFileInfo out(_path + "~");
|
modifyXISF.open(in.toLocal8Bit().data());
|
||||||
|
qDebug() << "modify" << in << out;
|
||||||
|
|
||||||
for(auto &remove : modify->_remove)
|
for(auto &remove : modify->_remove)
|
||||||
modifyXISF.removeFITSKeyword(0, remove.toStdString());
|
modifyXISF.removeFITSKeyword(0, remove.toStdString());
|
||||||
@@ -655,9 +657,9 @@ bool File::modifyFITSRecords(const FITSRecordModify *modify)
|
|||||||
for(auto &record : modify->_add)
|
for(auto &record : modify->_add)
|
||||||
modifyXISF.addFITSKeyword(0, {record.key.toStdString(), record.value.toString().toStdString(), record.comment.toStdString()});
|
modifyXISF.addFITSKeyword(0, {record.key.toStdString(), record.value.toString().toStdString(), record.comment.toStdString()});
|
||||||
|
|
||||||
modifyXISF.save(out.absoluteFilePath().toLocal8Bit().toStdString());
|
modifyXISF.save(out.toLocal8Bit().toStdString());
|
||||||
modifyXISF.close();
|
modifyXISF.close();
|
||||||
std::filesystem::rename(out.filesystemAbsoluteFilePath(), in.filesystemAbsoluteFilePath());
|
std::filesystem::rename(out.toLocal8Bit().toStdString(), in.toLocal8Bit().toStdString());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch(std::filesystem::filesystem_error &err)
|
catch(std::filesystem::filesystem_error &err)
|
||||||
|
|||||||
@@ -57,6 +57,15 @@
|
|||||||
</screenshots>
|
</screenshots>
|
||||||
<content_rating type="oars-1.1"/>
|
<content_rating type="oars-1.1"/>
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="20250126" date="2025-01-26">
|
||||||
|
<description>
|
||||||
|
<ul>
|
||||||
|
<li>Support for really big images +50000px</li>
|
||||||
|
<li>Fix handling of MAX_PATH on Windows</li>
|
||||||
|
<li>Add setting solver profile in scripts</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
<release version="20241116" date="2024-11-16">
|
<release version="20241116" date="2024-11-16">
|
||||||
<description>
|
<description>
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
Reference in New Issue
Block a user