diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts
index 5397f1b4..a2de87c4 100644
--- a/etc/Translation/Blank.ts
+++ b/etc/Translation/Blank.ts
@@ -3031,72 +3031,72 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts
index e9186b86..9ed6b296 100644
--- a/etc/Translation/LameXP_DE.ts
+++ b/etc/Translation/LameXP_DE.ts
@@ -3024,52 +3024,52 @@
Dekodiere
-
+ Die Quell-Audiodatei konnte nicht gefunden werden:
-
+ Die Quell-Audiodatei konnte nicht zum Lesen geöffnet werden:
-
+ Das Zielverzeichnis existiert nicht und konnte nicht erstellt werden:
-
+ In das Zielverzeichnis kann nicht geschrieben werden:
-
+ Ausgabe-Dateiname konnte nicht generiert werden!
-
+ Unbekannter Dateiname
-
+ Unbekannter Titel
-
+ Unbekannter Künstler
-
+ Unbekanntes Album
-
+ Unbekannter Kommentar
@@ -3090,22 +3090,22 @@
Übersprungen.
-
+ Zieldatei existiert bereits, die Datei wird übersprungen:
-
+ Wenn existierende Dateien nicht übersprungen werden sollen, ändern Sie bitte den Überschreiben-Modus!
-
+ Zieldatei existiert bereits, die Datei wird gelöscht und überschrieben:
-
+ Die existierende Datei konnte nicht gelöscht werden, ein anderer Dateiname wird gewählt!
diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts
index e05902f5..81e5028c 100644
--- a/etc/Translation/LameXP_ES.ts
+++ b/etc/Translation/LameXP_ES.ts
@@ -3024,52 +3024,52 @@
Decodificando
-
+ No se encuentra el archivo de entrada:
-
+ No se puede abrir el archivo de entrada para su lectura:
-
+ La carpeta de salida no existe y NO puede ser creada:
-
+ NO se puede escribir en la carpeta de salida:
-
+
-
+ Nombre de archivo desconocido
-
+ Título desconocido
-
+ Artista desconocido
-
+ Álbum desconocido
-
+ Comentario desconocido
@@ -3090,22 +3090,22 @@
Omitidos.
-
+ El archivo de destino ya existe, se omitirá este archivo:
-
+ ¡Si no quiere sobreescribir los archivos existentes, cambie el modo sobreescritura por favor!
-
+ El archivo de destino ya existe, se eliminará este archivo:
-
+ ¡Error al eliminar el archivo de destino existente, se guardará con otro nombre!
diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts
index 4b229d3f..9866f4f2 100644
--- a/etc/Translation/LameXP_FR.ts
+++ b/etc/Translation/LameXP_FR.ts
@@ -3031,52 +3031,52 @@ Sélection automatique (par défaut)
Décodage
-
+ Le fichier audio source n'a pas pu être trouvé:
-
+ Le fichier audio source n'a pas pu être ouvert pour la lecture:
-
+ Le répertoire de sortie cible n'existe pas et ne peut PAS être créé:
-
+ Le répertoire de sortie cible n'est pas accessible en écriture:
-
+
-
+ Nom de fichier inconnu
-
+ Titre inconnu
-
+ Artiste inconnu
-
+ Album inconnu
-
+ Commentaire inconnu
@@ -3098,22 +3098,22 @@ Sélection automatique (par défaut)
Ignoré.
-
+ Le fichier de sortie existe déjà, il sera ignoré :
-
+ Si vous ne voulez pas ignorer les fichiers existants, veuillez changer le mode de remplacement !
-
+ Le fichier de sortie existe déjà, il sera supprimé :
-
+ Impossible de supprimer le fichier cible existant, il sera enregistré sous un autre nom !
diff --git a/etc/Translation/LameXP_HU.ts b/etc/Translation/LameXP_HU.ts
index 3ce4f379..c69bdb65 100644
--- a/etc/Translation/LameXP_HU.ts
+++ b/etc/Translation/LameXP_HU.ts
@@ -3031,72 +3031,72 @@
Dekódolás
-
+ A forrás hangfájl nem található:
-
+ A forrás hangfájl nem nyitható meg olvasásra:
-
+ A cél kimeneti könyvtár nem létezik, és NEM hozható létre:
-
+ A cél kimeneti könyvtár NEM írható:
-
+
-
+ Ismeretlen fájlnév
-
+ Ismeretlen cím
-
+ Ismeretlen előadó
-
+ Ismeretlen album
-
+ Ismeretlen hozzászólás
-
+ A cél kimeneti fájl már létezik, ez a fájl ki lesz hagyva:
-
+ Ha nem szeretné a meglévő fájlokat kihagyni, kérjük, változtassa meg a felülírási módot!
-
+ A cél kimeneti fájl már létezik, a meglévő fájl törlésre kerül:
-
+ Nem sikerült törölni a meglévő cél fájlt. Az állomány másik fájlnéven lesz elmentve!
diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts
index b0de5534..fcd49553 100644
--- a/etc/Translation/LameXP_IT.ts
+++ b/etc/Translation/LameXP_IT.ts
@@ -3090,53 +3090,53 @@
Decodifica in corso
-
+ Il file audio sorgente non può essere trovato:
-
+ Il file audio sorgente non può essere aperto per la lettura:
-
+ La cartella di destinazione assegnata non esiste e NON può essere creata:
-
+ La directory di destinazione assegnata è di SOLA LETTURA:La directory di destinazione assegnata NON è scrivibile:
-
+
-
+ Nome File Sconosciuto
-
+ Titolo Sconosciuto
-
+ Artista Sconosciuto
-
+ Album Sconosciuto
-
+ Commento Sconosciuto
@@ -3157,22 +3157,22 @@
Saltato.
-
+ Il file di destinazione esiste già, questo file verrà saltato:
-
+ Se non vuoi saltare i file esistenti, cambia la modalità di sovrascrittura!
-
+ Il file di destinazione esiste già, il file esistente verrà eliminato:
-
+ Impossibile eliminare il file di destinazione esistente, il file verrà salvato con un altro nome!
diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts
index e4691f3f..0c8108de 100644
--- a/etc/Translation/LameXP_KR.ts
+++ b/etc/Translation/LameXP_KR.ts
@@ -3015,52 +3015,52 @@
디코딩
-
+ 원본 오디오 파일을 찾을 수 없음:
-
+ 원본 오디오 파일을 열 수 없음:
-
+ 대상 출력 디렉터리가 존재하지 않으며, 만들 수 없습니다:
-
+ 대상 출력 디렉터리에 쓰기 불가:
-
+ 존재하지 않는 대상 파일 이름을 생성하지 못했습니다!
-
+ 알수 없는 파일명
-
+ 알수 없는 제목
-
+ 알수 없는 가수
-
+ 알수 없는 앨범
-
+ 알수 없는 설명
@@ -3082,22 +3082,22 @@
건너뜀.
-
+ 대상 출력 파일이 이미 존재합니다. 건너뛰기할 파일:
-
+ 기존 파일을 건너뛰기하지 않으려면, 덮어쓰기 방식을 변경하시기 바랍니다!
-
+ 대상 출력 파일이 이미 존재합니다. 건너뛰기할 파일:
-
+ 기존 대상 파일 삭제 실패. 다른 파일명으로 저장됩니다!
diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts
index cf31cad3..59cde1bc 100644
--- a/etc/Translation/LameXP_PL.ts
+++ b/etc/Translation/LameXP_PL.ts
@@ -3048,72 +3048,72 @@
Dekodowanie
-
+ Źródłowy plik dźwiękowy nie został odnaleziony:
-
+ Źródłowy plik dźwiękowy nie mógł zostać otworzony:
-
+ Lokalizacja docelowa nie istnieje lu NIE mogła zostać utworzona:
-
+ Nie można zapisać do lokalizacji docelowej:
-
+ Nie można utworzyć pliku bez nazwy!
-
+ Nieznana nazwa pliku
-
+ Nieznany Tytuł
-
+ Nieznany Artysta
-
+ Nieznany Album
-
+ Nieznany Komentarz
-
+ Plik wynikowy już istnieje, zostanie pominięty plik:
-
+ Jeśli nie chcesz aby istniejące pliki były pomijane, zmień tryb nadpisywania!
-
+ Plik wynikowy już istnieje, zostanie usunięty plik:
-
+ Usuwanie istniejącego pliku zakończone niepowodzeniem, nowy plik zostanie zapisany pod inną nazwą!
diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts
index a003be91..6b68fca5 100644
--- a/etc/Translation/LameXP_RU.ts
+++ b/etc/Translation/LameXP_RU.ts
@@ -3039,52 +3039,52 @@
Декодирование
-
+ Исходный аудио файл не найден:
-
+ Исходный аудио файл не может быть открыт:
-
+ Папка для выходных файлов не существует и не может быть создана:
-
+ Папка для выходных файлов недоступна для записи:
-
+
-
+ Неизвестное имя файла
-
+ Неизвестное Название
-
+ Неизвестный Артист
-
+ Неизвестный Альбом
-
+ Неизвестный Комментарий
@@ -3105,22 +3105,22 @@
Пропущен.
-
+ Файл уже существует, будет пропущен:
-
+ Если Вы не хотите пропускать уже существующие файлы, пожалуйста, измените режим перезаписи!
-
+ Файл уже существует, будет удалён:
-
+ Ошибка удаления существующего файла, будет сохранение с другим именем!
diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts
index 44676e18..098fedcf 100644
--- a/etc/Translation/LameXP_SV.ts
+++ b/etc/Translation/LameXP_SV.ts
@@ -3041,72 +3041,72 @@
Avkodar
-
+ Källfilen kan inte hittas:
-
+ Källfilen kan inte öppnas för läsning:
-
+ Målmappen finns inte och kan inte skapas:
-
+ Målmappen är INTE skrivbar:
-
+
-
+ Okänt filnamn
-
+ Okänd titel
-
+ Okänd artist
-
+ Okänt album
-
+ Okänd kommentar
-
+ Målfilen finns redan! Den här filen hoppas över:
-
+ Om du inte vill att befintliga filer hoppas över, måste du ändra överskrivningsläge!
-
+ Målfilen finns redan! Befintlig fil kommer att tas bort:
-
+ Kunde inte ta bort befintlig målfil. Sparar med annat filnamn!
diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts
index 3134e306..9f375e80 100644
--- a/etc/Translation/LameXP_TW.ts
+++ b/etc/Translation/LameXP_TW.ts
@@ -3015,52 +3015,52 @@
解碼
-
+ 找不到源音頻文件:
-
+ 無法打開源音頻文件進行讀取:
-
+ 目標輸出目錄不存在,無法創建:
-
+ 目標輸出目錄不是可寫:
-
+
-
+ 未知文件名稱
-
+ 未知標題
-
+ 未知藝術家
-
+ 未知專輯
-
+ 未知評論
@@ -3081,22 +3081,22 @@
跳過.
-
+ 目標輸出文件已經存在, 將跳過此文件:
-
+ 如果你不希望被跳過已存在的文件, 請更改覆蓋模式!
-
+ 目標輸出文件已經存在, 要刪除現有的文件:
-
+ 無法刪除現有目標文件, 將保存到另一個文件名!
diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts
index dc06146d..c6c48615 100644
--- a/etc/Translation/LameXP_UK.ts
+++ b/etc/Translation/LameXP_UK.ts
@@ -3032,52 +3032,52 @@
Декодування
-
+ Неможливо знайти вхідний файл аудіо:
-
+ Неможливо відкрити для читання вхідний файл аудіо:
-
+ Вихідної теки не існує і її неможливо створити:
-
+ До вихідної теки неможливо проводити запис:
-
+ Неможливо згенерувати назву неіснуючого вихідного файла!
-
+ Невідома назва файла
-
+ Невідомий заголовок
-
+ Невідомий виконавець
-
+ Невідомий альбом
-
+ Невідомий коментар
@@ -3099,22 +3099,22 @@
Пропущено.
-
+ Вихідний цільовий файл вже існує, спроба пропустити цей файл:
-
+ Якщо ви не хочете, щоб існуючі файли були пропущені, будь ласка, змініть режим перезапису!
-
+ Вихідний цільовий файл вже існує, спроба видалити існуючий файл:
-
+ Неможливо видалити існуючий файл, збереження буде проведено до файла з іншою назвою!
diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts
index 63693167..bc5c98e6 100644
--- a/etc/Translation/LameXP_ZH.ts
+++ b/etc/Translation/LameXP_ZH.ts
@@ -3015,52 +3015,52 @@
解码
-
+ 找不到源音频文件:
-
+ 无法打开源音频文件进行读取:
-
+ 目标输出目录不存在且无法创建:
-
+ 目标输出目录不可写:
-
+ 无法为不存在的目标文件命名!
-
+ 未知文件名称
-
+ 未知标题
-
+ 未知艺术家
-
+ 未知专辑
-
+ 未知注释
@@ -3081,22 +3081,22 @@
跳过。
-
+ 目标输出文件已经存在, 将跳过此文件:
-
+ 如果你不希望跳过已存在的文件, 请更改覆盖模式!
-
+ 目标输出文件已经存在, 将删除现有的文件:
-
+ 无法删除现有目标文件, 将保存为另一个文件名!
diff --git a/src/Config.h b/src/Config.h
index 04967e87..8c8b3486 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -35,7 +35,7 @@
#define VER_LAMEXP_MINOR_LO 6
#define VER_LAMEXP_TYPE RC
#define VER_LAMEXP_PATCH 6
-#define VER_LAMEXP_BUILD 2130
+#define VER_LAMEXP_BUILD 2134
#define VER_LAMEXP_CONFG 2002
///////////////////////////////////////////////////////////////////////////////
diff --git a/src/Thread_Process.cpp b/src/Thread_Process.cpp
index 032d6943..4830a4b3 100644
--- a/src/Thread_Process.cpp
+++ b/src/Thread_Process.cpp
@@ -390,6 +390,8 @@ int ProcessThread::generateOutFileName(QString &outFileName)
{
outFileName.clear();
+ /* -------- Check source file -------- */
+
//Make sure the source file exists
const QFileInfo sourceFile(m_audioFile.filePath());
if(!(sourceFile.exists() && sourceFile.isFile()))
@@ -410,6 +412,8 @@ int ProcessThread::generateOutFileName(QString &outFileName)
readTest.close();
}
+ /* -------- Determine target directory -------- */
+
QDir targetDir(MUtils::clean_file_path(m_outputDirectory.isEmpty() ? sourceFile.canonicalPath() : m_outputDirectory, false));
//Prepend relative source file path?
@@ -440,7 +444,7 @@ int ProcessThread::generateOutFileName(QString &outFileName)
}
//Make sure that the output dir is writable
- QFile writeTest(QString("%1/.%2").arg(targetDir.canonicalPath(), MUtils::next_rand_str()));
+ QFile writeTest(MUtils::make_temp_file(targetDir, "~rw"));
if(!writeTest.open(QIODevice::ReadWrite))
{
handleMessage(QString("%1\n%2").arg(tr("The target output directory is NOT writable:"), QDir::toNativeSeparators(targetDir.absolutePath())));
@@ -448,9 +452,11 @@ int ProcessThread::generateOutFileName(QString &outFileName)
}
else
{
- writeTest.remove();
+ writeTest.remove(); /*clean-up*/
}
+ /* -------- Generate initial file name and check -------- */
+
//File extension
const QString fileExt = m_renameFileExt.isEmpty() ? QString::fromUtf8(m_encoder->toEncoderInfo()->extension()) : m_renameFileExt;
@@ -458,7 +464,7 @@ int ProcessThread::generateOutFileName(QString &outFileName)
const QString fileName = MUtils::clean_file_name(QString("%1.%2").arg(applyRegularExpression(applyRenamePattern(sourceFile.completeBaseName(), m_audioFile.metaInfo())), fileExt), true);
//Generate full output path
- outFileName = QString("%1/%2").arg(targetDir.canonicalPath(), fileName);
+ outFileName = targetDir.absoluteFilePath(fileName);
//Skip file, if target file exists (optional!)
if((m_overwriteMode == OverwriteMode_SkipExisting) && QFileInfo(outFileName).exists())
@@ -469,21 +475,14 @@ int ProcessThread::generateOutFileName(QString &outFileName)
}
//Delete file, if target file exists (optional!)
- if((m_overwriteMode == OverwriteMode_Overwrite) && QFileInfo(outFileName).exists() && QFileInfo(outFileName).isFile())
+ const QFileInfo origFileName(outFileName);
+ if((m_overwriteMode == OverwriteMode_Overwrite) && origFileName.exists() && origFileName.isFile())
{
handleMessage(QString("%1\n%2\n").arg(tr("Target output file already exists, going to delete existing file:"), QDir::toNativeSeparators(outFileName)));
bool removed = false;
- if(sourceFile.canonicalFilePath().compare(QFileInfo(outFileName).absoluteFilePath(), Qt::CaseInsensitive) != 0)
+ if(sourceFile.canonicalFilePath().compare(origFileName.absoluteFilePath(), Qt::CaseInsensitive) != 0)
{
- for(int i = 0; i < 16; i++)
- {
- if(QFile::remove(outFileName))
- {
- removed = true;
- break;
- }
- MUtils::OS::sleep_ms(1);
- }
+ removed = MUtils::remove_file(outFileName);
}
if(!removed)
{
@@ -491,26 +490,16 @@ int ProcessThread::generateOutFileName(QString &outFileName)
}
}
- //Generate final name
- const QFileInfo origFileName(outFileName);
- for (int n = 2; n <= 65534; ++n)
- {
- //Check file existence
- if (QFileInfo(outFileName).exists())
- {
- outFileName = origFileName.absoluteDir().filePath(QString("%1 (%2).%3").arg(origFileName.completeBaseName(), QString::number(n), origFileName.suffix()));
- continue;
- }
+ /* -------- Generate final non-existing file name -------- */
- //Create placeholder
- QFile placeholder(outFileName);
- if (placeholder.open(QIODevice::WriteOnly))
- {
- placeholder.close();
- return 1;
- }
+ //Generate final name
+ outFileName = MUtils::make_unique_file(origFileName.absoluteDir(), origFileName.completeBaseName(), origFileName.suffix(), true, true);
+ if(!outFileName.isEmpty())
+ {
+ return 1;
}
+ //Failed to generate
handleMessage(QString("%1\n").arg(tr("Failed to generate non-existing target file name!")));
return 0;
}