MUTILS_API quint32 next_rand32(void);
MUTILS_API quint64 next_rand64(void);
- //Temp File Name
+ //File Name
MUTILS_API QString make_temp_file(const QString &basePath, const QString &extension, const bool placeholder = false);
+ MUTILS_API QString make_unique_file(const QString &basePath, const QString &baseName, const QString &extension, const bool fancy = false);
//Parity
MUTILS_API bool parity(quint32 value);
}
///////////////////////////////////////////////////////////////////////////////
-// GET TEMP FILE NAME
+// GENERATE FILE NAME
///////////////////////////////////////////////////////////////////////////////
QString MUtils::make_temp_file(const QString &basePath, const QString &extension, const bool placeholder)
}
}
- qWarning("Failed to generate unique temp file name!");
+ qWarning("Failed to generate temp file name!");
return QString();
}
+QString MUtils::make_unique_file(const QString &basePath, const QString &baseName, const QString &extension, const bool fancy)
+{
+ quint32 n = fancy ? 2 : 0;
+ QString fileName = fancy ? QString("%1/%2.%3").arg(basePath, baseName, extension) : QString();
+ while (fileName.isEmpty() || QFileInfo(fileName).exists())
+ {
+ if (n <= quint32(USHRT_MAX))
+ {
+ if (fancy)
+ {
+ fileName = QString("%1/%2 (%3).%4").arg(basePath, baseName, QString::number(n++), extension);
+ }
+ else
+ {
+ fileName = QString("%1/%2.%3.%4").arg(basePath, baseName, QString::number(n++, 16).rightJustified(4, QLatin1Char('0')), extension);
+ }
+ }
+ else
+ {
+ qWarning("Failed to generate unique file name!");
+ return QString();
+ }
+ }
+ return fileName;
+}
+
///////////////////////////////////////////////////////////////////////////////
// COMPUTE PARITY
///////////////////////////////////////////////////////////////////////////////