Fix Do not prepend \\ to network share paths

This commit is contained in:
2025-03-02 17:09:33 +01:00
parent e47c99fd21
commit 58abf762c0
4 changed files with 16 additions and 14 deletions
+10 -8
View File
@@ -9,16 +9,18 @@
#include <libexif/exif-data.h> #include <libexif/exif-data.h>
#include "rawimage.h" #include "rawimage.h"
QString makeMaxPath(QString path) QString makeUNCPath(const QString &path)
{ {
#ifdef Q_OS_WIN64 #ifdef Q_OS_WIN64
if(!path.startsWith("\\\\")) if(!path.startsWith("\\\\") && !path.startsWith("//"))
{ {
QString tmp;
QFileInfo info(path); QFileInfo info(path);
path = info.absoluteFilePath(); tmp = info.absoluteFilePath();
path = QDir::toNativeSeparators(path); tmp = QDir::toNativeSeparators(tmp);
path.prepend("\\\\?\\"); tmp.prepend("\\\\?\\");
qDebug() << path; qDebug() << "makeMaxPath" << path << tmp;
return tmp;
} }
#endif #endif
return path; return path;
@@ -276,7 +278,7 @@ bool readFITSHeader(const QString &path, ImageInfoData &info)
{ {
fitsfile *fr; fitsfile *fr;
int status = 0; int status = 0;
QString path2 = makeMaxPath(path); QString path2 = makeUNCPath(path);
fits_open_diskfile(&fr, path2.toLocal8Bit().data(), READONLY, &status); fits_open_diskfile(&fr, path2.toLocal8Bit().data(), READONLY, &status);
if(fr && status == 0) if(fr && status == 0)
@@ -289,7 +291,7 @@ 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); QString path2 = makeUNCPath(path);
try try
{ {
LibXISF::XISFReader xisf; LibXISF::XISFReader xisf;
+1 -1
View File
@@ -6,7 +6,7 @@
class RawImage; class RawImage;
QString makeMaxPath(QString path); QString makeUNCPath(const 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);
+3 -3
View File
@@ -11,7 +11,7 @@
#include <lcms2.h> #include <lcms2.h>
LoadRunable::LoadRunable(const QString &file, Image *receiver, AnalyzeLevel level, bool thumbnail) : LoadRunable::LoadRunable(const QString &file, Image *receiver, AnalyzeLevel level, bool thumbnail) :
m_file(makeMaxPath(file)), m_file(makeUNCPath(file)),
m_receiver(receiver), m_receiver(receiver),
m_analyzeLevel(level), m_analyzeLevel(level),
m_thumbnail(thumbnail) m_thumbnail(thumbnail)
@@ -100,8 +100,8 @@ void LoadRunable::run()
} }
ConvertRunable::ConvertRunable(const QString &in, const QString &out, const QString &format, const ConvertParams &params, QSemaphore *semaphore) : ConvertRunable::ConvertRunable(const QString &in, const QString &out, const QString &format, const ConvertParams &params, QSemaphore *semaphore) :
m_infile(makeMaxPath(in)), m_infile(makeUNCPath(in)),
m_outfile(makeMaxPath(out)), m_outfile(makeUNCPath(out)),
m_format(format), m_format(format),
m_params(params), m_params(params),
m_semaphore(semaphore) m_semaphore(semaphore)
+2 -2
View File
@@ -520,7 +520,7 @@ bool File::modifyFITSRecords(const FITSRecordModify *modify)
{ {
fitsfile *file; fitsfile *file;
int status = 0; int status = 0;
QString path = makeMaxPath(_path); QString path = makeUNCPath(_path);
fits_open_diskfile(&file, path.toLocal8Bit().data(), READWRITE, &status); 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);
@@ -644,7 +644,7 @@ bool File::modifyFITSRecords(const FITSRecordModify *modify)
try try
{ {
LibXISF::XISFModify modifyXISF; LibXISF::XISFModify modifyXISF;
QString in = makeMaxPath(absoluteFilePath()); QString in = makeUNCPath(absoluteFilePath());
QString out = in + "~"; QString out = in + "~";
modifyXISF.open(in.toLocal8Bit().data()); modifyXISF.open(in.toLocal8Bit().data());
qDebug() << "modify" << in << out; qDebug() << "modify" << in << out;