diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/serialport/qserialport_unix.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/serialport/qserialport_unix.cpp b/src/serialport/qserialport_unix.cpp index 9979256..eb71e86 100644 --- a/src/serialport/qserialport_unix.cpp +++ b/src/serialport/qserialport_unix.cpp @@ -72,13 +72,21 @@ QString serialPortLockFilePath(const QString &portName) #endif ; + QString fileName = portName; + fileName.replace(QLatin1Char('/'), QLatin1Char('_')); + fileName.prepend(QStringLiteral("/LCK..")); + QString lockFilePath; foreach (const QString &lockDirectoryPath, lockDirectoryPaths) { + const QString filePath = lockDirectoryPath + fileName; + QFileInfo lockDirectoryInfo(lockDirectoryPath); - if (lockDirectoryInfo.isReadable() && lockDirectoryInfo.isWritable()) { - lockFilePath = lockDirectoryPath; - break; + if (lockDirectoryInfo.isReadable()) { + if (QFile::exists(filePath) || lockDirectoryInfo.isWritable()) { + lockFilePath = filePath; + break; + } } } @@ -89,11 +97,6 @@ QString serialPortLockFilePath(const QString &portName) return QString(); } - QString replacedPortName = portName; - - lockFilePath.append(QStringLiteral("/LCK..")); - lockFilePath.append(replacedPortName.replace(QLatin1Char('/'), QLatin1Char('_'))); - return lockFilePath; } |