[syslinux] fix tails breakage and add support for fine grained versions

* With that obscene an amount of pre-releases of 6.03 (seriously, how
  many more YEARS pre-release of the same version do you actually need?),
  of course the syslinux people have managed to break the last remnants
  of compatibility they had between a single major version, so we are now
  forced to provide a smorgasbord of pre-release and out of band syslinux
  binaries on our server, and make sure we detect and handle incompatible
  syslinux versions clientside...
  For instance, even after fixing the EFI vs isolinux issue, we find
  that tails 1.1 is incompatible with 'pre19'. But it also uses its own
  '20131220' extended identifier, instead of 'pre1', its closest
  relative. So we have to multiply files and symbolic links to try to
  keep everybody happy.
  Talk about a MAJOR LETDOWN from the syslinux project...
* Closes #363
This commit is contained in:
Pete Batard 2014-08-06 00:57:32 +01:00
parent 60c66ef813
commit 0fceb38433
7 changed files with 167 additions and 75 deletions

View File

@ -293,7 +293,7 @@ t MSG_111 "Incompatible Cluster size"
t MSG_112 "Formatting a large UDF volumes can take a lot of time. At USB 2.0 speeds, the estimated formatting "
"duration is %d:%02d, during which the progress bar will appear frozen. Please be patient!"
t MSG_113 "Large UDF volume"
t MSG_114 "This image uses Syslinux %s but this application only includes the installation files for "
t MSG_114 "This image uses Syslinux %s%s but this application only includes the installation files for "
"Syslinux %s.\n\nAs new versions of Syslinux are not compatible with one another, and it wouldn't "
"be possible for Rufus to include them all, two additional files must be downloaded from the "
"Internet ('ldlinux.sys' and 'ldlinux.bss'):\n"
@ -685,7 +685,7 @@ t MSG_111 "حجم الكلستر غير ملائم"
t MSG_112 "فرمتة وحدات تخزين UDF كبيرة تستغرق وقتاً طويلاً. مع سرعة USB 2.0, المدة المقدّرة "
"للفرمتة هي: %d:%02d, خلالها شريط التقدّم سيظهر مجمّد. يرجى التحلّي بالصبر!"
t MSG_113 "وحدة تخزين UDF كبيرة"
t MSG_114 "هذه الصورة (الإيميج) تستخدم Syslinux %s ولكن هذا التطبيق يشمل فقط ملفات التثبيت لـ "
t MSG_114 "هذه الصورة (الإيميج) تستخدم Syslinux %s%s ولكن هذا التطبيق يشمل فقط ملفات التثبيت لـ "
"Syslinux %s. \n\nفالإصدارات الجديدة من Syslinux لا تتلاءم مع بعضها البعض, وأنه "
"من غير الممكن لروفوس إحتواء الكل, يجب تحميل ملفين إضافيين من "
"الإنترنت('ldlinux.sys' و 'ldlinux.bss'):\n"
@ -1117,7 +1117,7 @@ t MSG_111 "Несъвместим размер на клъстера"
t MSG_112 "Форматирането на голям UDF дял може да отнеме много време. При USB 2.0 скорости, приблизителното "
"време е %d:%02d, при което процесната лента че изглежда не активна. Моля бъдете търпеливи!"
t MSG_113 "Голям UDF дял"
t MSG_114 "Този образ използва Syslinux %s но тази програма включва само инсталационни файлове за"
t MSG_114 "Този образ използва Syslinux %s%s но тази програма включва само инсталационни файлове за"
"Syslinux %s.\n\nТъй като новите версии на Syslinux не са съвместими една с друга, и няма да е "
"възможно за Rufus да ги включи всичките, два допълнителни файлове трябва да бъдат изтеглени от "
"Интернет ('ldlinux.sys' и 'ldlinux.bss'):\n"
@ -1489,7 +1489,7 @@ t MSG_111 "不支持的簇大小"
t MSG_112 "格式化较大的 UDF 卷可能需要很长时间。过程中进度条可能会呈禁止状态,属于正常现象。"
"请耐心等待!\nUSB 2.0 设备预计剩余时间:%d:%02d"
t MSG_113 "大容量 UDF 卷"
t MSG_114 "此镜像使用的更新版本的 Syslinux %s此程序内置的 Syslinux %s 不支持更新版本。\n\n"
t MSG_114 "此镜像使用的更新版本的 Syslinux %s%s,此程序内置的 Syslinux %s 不支持更新版本。\n\n"
"Rufus 需要下载两个文件:'ldlinux.sys' 和 'ldlinux.bss'\n"
"- 选择 '是' 连接网络下载文件\n"
"- 选择 '否' 取消此项操作\n\n"
@ -1859,7 +1859,7 @@ t MSG_111 "不相容的配置單元大小"
t MSG_112 "磁碟區較大的 UDF 格式化作業時間較久,過程中進度列表可能會呈現靜止狀態、乃屬正常現象,請耐心等候。"
"估計剩餘時間: %d:%02d"
t MSG_113 "大 UDF 磁碟區"
t MSG_114 "此映像檔使用到 Syslinux %s ,但本軟體僅支援 Syslinux %s 安裝檔案。\n\n"
t MSG_114 "此映像檔使用到 Syslinux %s%s,但本軟體僅支援 Syslinux %s 安裝檔案。\n\n"
"由於不同版本的 Syslinux 互不相容,因此需額外下載以下擴充檔案: \n"
"'ldlinux.sys' 和 'ldlinux.bss'\n"
"如欲下載這份檔案請選擇「是」Rufus 將會自動上網下載。若要終止作業,請選擇「否」\n\n"
@ -2244,7 +2244,7 @@ t MSG_111 "Nekompatibilna veličina grupiranja"
t MSG_112 "Formatiranje velike UDF jedinice može potrajati. Pri USB 2.0 brzini, procijenjuje se "
" %d:%02d "
t MSG_113 "Velika UDF jedinica"
t MSG_114 "Ova slika koristi Syslinux %s ali ova aplikacija samo uključuje datoteke za "
t MSG_114 "Ova slika koristi Syslinux %s%s ali ova aplikacija samo uključuje datoteke za "
"Syslinux %s.\n\nPošto nove ver. Syslinux nisu kompatibilne jedna s drugom, "
"dvije dodatne datoteke se trebaju preuzeti sa"
"interneta: ('ldlinux.sys' i 'ldlinux.bss')\n"
@ -2641,7 +2641,7 @@ t MSG_111 "Inkompatibel klyngestørrelse"
t MSG_112 "Formatering af en stor UDF volume kan tage lang tid. Ved USB 2.0 hastigheder, er den anslåede varighed af "
"formatering %d:%02d, hvorunder statuslinjen forekommer frosset. Vær tålmodig!"
t MSG_113 "Stor UDF volume"
t MSG_114 "Dette image benytter Syslinux %s men denne applikation indeholder kun installationsfilerne til "
t MSG_114 "Dette image benytter Syslinux %s%s men denne applikation indeholder kun installationsfilerne til "
"Syslinux %s.\n\nDa nye versioner af Syslinux ikke er kompatible med hinanden, og det desuden ikke "
"ville være muligt for Rufus at inkludere dem alle, er det nødvendigt at hente to yderligere filer fra "
"nettet ('ldlinux.sys' and 'ldlinux.bss'):\n"
@ -3028,7 +3028,7 @@ t MSG_110 "MS-DOS kan niet opstarten van een apparaat met een clustergrootte van
t MSG_111 "Incompatibel Clustergrootte"
t MSG_112 "Het formatteren van grote UDF volumes kan een lange tijd duren..."
t MSG_113 "Grote UDF volume"
t MSG_114 "Deze image maakt gebruik van Syslinux %s maar de applicatie bevat alleen de installatiebestanden voor"
t MSG_114 "Deze image maakt gebruik van Syslinux %s%s maar de applicatie bevat alleen de installatiebestanden voor"
"Syslinux %s.\n\nOmdat oude en nieuwe versies van Syslinux niet compatibel zijn met elkaar, en het niet mogelijk is voor Rufus om alle versies te beheren,"
"moeten twee extra bestanden gedownload worden van het internet ('ldlinux.sys' en 'ldlinux.bss'):\n"
"- Klik op 'Ja' om via internet deze bestanden te downloaden\n"
@ -3423,7 +3423,7 @@ t MSG_111 "Epäsopiva tilanvarausyksikkö"
t MSG_112 "Suurten UDF-asemien alustus voi kestää kauan. USB 2.0-nopeuksilla arvioitu alustuksen "
"kesto on %d:%02d, minkä aikana etenemispalkki vaikuttaa pysähtyneeltä. Ole kärsivällinen!"
t MSG_113 "Suuri UDF-asema"
t MSG_114 "Tämä kuva käyttää Syslinuxia %s ,mutta tämä sovellus sisältää asennustiedostot vain "
t MSG_114 "Tämä kuva käyttää Syslinuxia %s%s, mutta tämä sovellus sisältää asennustiedostot vain "
"Syslinuxille %s.\n\nKoska Syslinuxin uudet versiot eivät ole keskenään yhteensopivia, eikä Rufus "
"voisi sisältää niitä kaikkia, on kaksi lisätiedostoa ladattava internetistä "
"('ldlinux.sys' ja 'ldlinux.bss'):\n"
@ -3802,7 +3802,7 @@ t MSG_111 "Taille de clusters incompatible"
t MSG_112 "Le formatage d'un volume UDF de grande taille peut prendre beaucoup de temps. Aux vitesses USB 2.0, "
"la durée de formatage estimée est %d :%02d, pendant laquelle la barre de progrès semblera gelée. Veuillez être patient !"
t MSG_113 "Volume UDF de grand taille"
t MSG_114 "Cette image utilise Syslinux %s mais l'application inclus seulement les fichiers d'installation pour Syslinux %s.\n\n"
t MSG_114 "Cette image utilise Syslinux %s%s mais l'application inclus seulement les fichiers d'installation pour Syslinux %s.\n\n"
"Comme les nouvelles versions de Syslinux sont incompatibles entre elles, et il n'est pas possible à Rufus de toutes "
"les inclure, deux fichiers supplémentaires ('ldlinux.sys' et 'ldlinux.bss') doivent être téléchargés :\n"
"- Choisissez 'Oui' pour télécharger ces fichier depuis Internet\n"
@ -4182,7 +4182,7 @@ t MSG_110 "MS-DOS kann nicht von einem Laufwerk starten, das 64 Kilobyte große
t MSG_111 "Inkompatible Zuordnungseinheitengröße"
t MSG_112 "Großes UDF-Laufwerke zu formatieren, kann viel Zeit benötigen..."
t MSG_113 "Großes UDF-Laufwerk"
t MSG_114 "Dieses Abbild benutzt Syslinux %s, aber diese Anwendung verfügt nur über Installationsdateien für Syslinux %s.\n\n"
t MSG_114 "Dieses Abbild benutzt Syslinux %s%s, aber diese Anwendung verfügt nur über Installationsdateien für Syslinux %s.\n\n"
"Neuere Syslinux-Versionen sind untereinander nicht kompatibel. Rufus kann nicht alle Versionen unterstützen. "
"Zwei zusätzliche Dateien müssen vom Internet heruntergeladen werden ('ldlinux.sys' and 'ldlinux.bss'):\n"
"- Wählen Sie 'Ja', um dem Download zuzustimmen oder\n"
@ -4610,7 +4610,7 @@ t MSG_111 "Μη συμβατό μέγεθος συμπλέγματος"
t MSG_112 "Η διαμόρφωση μεγάλων τόμων UDF ίσως διαρκέσει αρκετά." Ο χρόνος διαμόρφωσης, στις ταχύτητες του USB 2.0 "
"είναι %d:%02d. Κατά την διάρκεια της διαμόρφωσης η μπάρα προόδου θα είναι στατική. Παρακαλώ περιμένετε!"
t MSG_113 "Mεγάλος τόμος UDF"
t MSG_114 "Αυτό το είδωλο χρησιμοποιεί το Syslinux %s παρόλα αυτά η εφαρμογή(Rufus) εμπεριέχει μόνο τα αρχεία εγκατάστασης του "
t MSG_114 "Αυτό το είδωλο χρησιμοποιεί το Syslinux %s%s παρόλα αυτά η εφαρμογή(Rufus) εμπεριέχει μόνο τα αρχεία εγκατάστασης του "
"Syslinux %s.\n\n Εφόσον οι νέες εκδόσεις του Syslinux δεν είναι συμβατές μεταξύ τους, δεν είναι δυνατό για το Rufus"
"να τις εμπεριέχει όλες. Επομένως, απαιτείται η λήψη δύο νέων αρχείων απο το διαδίκτυο ('ldlinux.sys' και 'ldlinux.bss'): \n"
"- Επιλέξτε το 'Ναι' για να συνδεθείτε στο διαδίκτυο και να κάνετε λήψη των αρχείων\n"
@ -5754,7 +5754,7 @@ t MSG_111 "Dimensione cluster incompatibile"
t MSG_112 "La formattazione di un volume UDF di grandi dimensioni può richiedere molto tempo. in modo USB 2.0, il tempo stimato "
"per la formattazione sarà di %d:%02d, durante il quale la barra di progresso non verrà aggiornata. Attendi il completamento dell'operazione!"
t MSG_113 "Voume UDF di grandi dimensioni"
t MSG_114 "Questa immagine usa Syslinux %s ma questa applicazione include solo i file di installazione per "
t MSG_114 "Questa immagine usa Syslinux %s%s ma questa applicazione include solo i file di installazione per "
"Syslinux %s.\n\nPoiché le nuove versioni di Syslinux non sono compatibili con le precedenti e "
"non sarebbe possibile per Rufus includerle tutte, devono essere scaricati da Internet due file aggiuntivi "
"('ldlinux.sys' e 'ldlinux.bss'):\n"
@ -6159,7 +6159,7 @@ t MSG_111 "互換性がないクラスタサイズです。"
t MSG_112 "大きいUDFボリュームがフォーマットするは時間がかかれます。USB2.0スピードで、 "
"フォーマットの推定持続は%d:%02d。この時間の間にプログレスバーは凍結用に見えます。こんな時間にちょっと待って下さい。"
t MSG_113 "大きいUDFボリューム"
t MSG_114 "このイメージは Syslinux %s を使うが、このアプリケーションは Syslinux % のインストール "
t MSG_114 "このイメージは Syslinux %s%s を使うが、このアプリケーションは Syslinux % のインストール "
"ファイルだけあります。\n\nSyslinuxの新バージョンは互いに互換性のないから、RufusはSyslinkのすべて "
"を含めれません。インタネットから二つのファイルはダウンロードしなければならない。 "
"'ldlinux.sys' and 'ldlinux.bss':\n"
@ -6555,7 +6555,7 @@ t MSG_111 "호환되지 않는 클러스터 크기"
t MSG_112 "큰 UDF 볼륨을 포맷하려면 시간이 많이 걸릴 수 있습니다. USB 2.0의 속도로 추정했을 때, 예상 시간은 "
"%d:%02d 입니다. 포맷 중 진행바가 멈춤상태로 있을 수도 있습니다. 기다려주십시오!"
t MSG_113 "큰 UDF 볼륨"
t MSG_114 "이 이미지는 Syslinux를 하지만 %s 이 프로그램에는 Syslinux의 설치 파일만 포함되어 있습니다. "
t MSG_114 "이 이미지는 Syslinux를 하지만 %s%s 이 프로그램에는 Syslinux의 설치 파일만 포함되어 있습니다. "
"Syslinux %s.\n\nSyslinux의 새 버전은 서로 호환되지 않으며, Rufus가 새 버전 모두를 포함하는 것은 불가능합니다."
"다음 두 개의 추가 파일을 인터넷에서 다운로드 하십시오."
"('ldlinux.sys' and 'ldlinux.bss'):\n"
@ -6975,7 +6975,7 @@ t MSG_111 "Nekorekts klastera izmērs"
t MSG_112 "Large UDF disku formatēšana var aizņemt daudz laika. Izmantojot USB 2.0 aprēķinātais formatēšanas "
"ilgums ir %d:%02d, kura laikā izpildes līnija var apstāties. Esiet pacietīgi!"
t MSG_113 "Large UDF disks"
t MSG_114 "Šis imidžs izmanto Syslinux %s, bet aplikācija satur instalācijas failus "
t MSG_114 "Šis imidžs izmanto Syslinux %s%s, bet aplikācija satur instalācijas failus "
"Syslinux %s.\n\nTā kā jaunās Syslinux versijas nav savstarpēji atbalstāmas, nepieciešams "
"no interneta ielādēt nepieciešamos failus ('ldlinux.sys' un 'ldlinux.bss'):\n"
"- Izvēlieties 'Jā' lai pieslēgtos pie interneta un ielādētu šos failus\n"
@ -7392,7 +7392,7 @@ t MSG_111 "Nesuderinamas Klasterio dydis"
t MSG_112 "Didelių UDF tomų formatavimas gali užimti daug laiko. USB 2.0 greičiu numatoma formatavimo "
"trukmė yra %d:%02d, tuo metu eigos juosta gali atrodyti sustingusi. Prašau kantrybės!"
t MSG_113 "Didelis UDF tomas"
t MSG_114 "Šis atvaizdas naudoja Syslinux %s, bet ši programa turi tik diegimo failus, skirtus "
t MSG_114 "Šis atvaizdas naudoja Syslinux %s%s, bet ši programa turi tik diegimo failus, skirtus "
"Syslinux %s.\n\nKadangi naujos Syslinux versijos tarpusavyje nesuderinamos, ir nėra galimybės "
"į Rufus įtraukti jas visas, du papildomi failai turi būti atsisiųsti iš "
"interneto ('ldlinux.sys' ir 'ldlinux.bss'):\n"
@ -7816,7 +7816,7 @@ t MSG_111 "Incompatible Cluster size"
t MSG_112 "Pemformattan jilid UDF yang besar mengambil masa yang amat lama. Pada kelajuan USB 2.0 anggaran masa pemformatan "
"adalah %d:%02d, di mana bar kemajuan akan lihat seperti ia tidak bergerak. Tolong bersabar"
t MSG_113 "Jilid UDF besar"
t MSG_114 "Imej ini menggunakan Syslinux %s tetapi aplikasi ini hanya mempunyai fail pemasangan untuk"
t MSG_114 "Imej ini menggunakan Syslinux %s%s tetapi aplikasi ini hanya mempunyai fail pemasangan untuk"
"Syslinux %s.\n\nOleh kerana versi-versi baharu Syslinux tidak serasi dengan satu sama lain, maka tidak"
"wajarlah Rufus menyediakan semuanya, dua fail tambahan perlu dimuat turun dari"
"Internet ('ldlinux.sys' dan 'ldlinux.bss'):\n"
@ -8237,7 +8237,7 @@ t MSG_111 "Niekompatybilny Rozmiar jednostki alokacji"
t MSG_112 "Formatowanie dużych woluminów UDF może zająć dużo czasu. Przy prędkości USB 2.0 , szacunkowy czas "
"formatowania wynosi %d:%02d, podczas którego pasek postępu będzie wysawał się być zamrożony. Proszę być cierpliwym!"
t MSG_113 "Duży wolumin UDF"
t MSG_114 "Ten obraz używa Syslinux %s lecz ta aplikacja dołącza pliki instalacyjne tylko dla "
t MSG_114 "Ten obraz używa Syslinux %s%s lecz ta aplikacja dołącza pliki instalacyjne tylko dla "
"Syslinux %s.\n\nPonieważ nowa wersja Syslinux nie jest kompatybilna z inną i nie jest "
"możliwe dla Rufusa aby załączyć je wszystkie, dwa dodatkowe pliki muszą być pobrane "
"z Internetu ('ldlinux.sys' oraz 'ldlinux.bss'):\n"
@ -8472,7 +8472,7 @@ t MSG_104 "Syslinux v5.0 ou posterior requer que esteja instalado um arquivo '%s
"um \n arquivo '%s' atual, será substituído automaticamente.\n"
t MSG_110 "MS-DOS não inicia um disco com um tamanho de cluster de 64 kilobytes.\n"
"Por favor altere o tamanho de cluster ou use FreeDOS."
t MSG_114 "Esta imagem usa Syslinux %s, mas este aplicativo inclui somente os arquivos de instalação para "
t MSG_114 "Esta imagem usa Syslinux %s%s, mas este aplicativo inclui somente os arquivos de instalação para "
"Syslinux %s.\n\nComo novas versões de Syslinux não são compatíveis entre si, e que não "
"seja possível para Rufus incluí-los todos, dois arquivos adicionais devem ser baixados a partir da "
"Internet ('ldlinux.sys' and 'ldlinux.bss'):\n"
@ -9208,7 +9208,7 @@ t MSG_111 "Dimensiune Cluster incompatibilă"
t MSG_112 "Formatarea volumului mare UDF, poate dura ceva timp. Viteza formatării USB 2.0, estimează "
"durata este %d:%02d, în care va apărea pe bara de progres. Vă rugăm să aveţi răbdare!"
t MSG_113 "Volumul UDF mare"
t MSG_114 "Această imagine foloseste Syslinux %s, dar această aplicație include doar fișierele de instalare pentru Syslinux %s . "
t MSG_114 "Această imagine foloseste Syslinux %s%s, dar această aplicație include doar fișierele de instalare pentru Syslinux %s. "
"Syslinux %s.\n\nNoile versiuni ale syslinux, nu sunt compatibile cu altele, și nu ar fi "
"este posibil ca Rufus să le includă, două fișiere suplimentare, ele trebuie să fi descărcate de pe "
"Internet ('ldlinux.sys' şi 'ldlinux.bss'):\n"
@ -9606,7 +9606,7 @@ t MSG_110 "MS-DOS не может загрузиться, при использ
t MSG_111 "Несовместимый размер кластера"
t MSG_112 "Форматирование в Large UDF-тома занимает много времени..."
t MSG_113 "Large UDF-том"
t MSG_114 "Данный образ использует Syslinux %s, но данное приложение включает в себя только установочные файлы для "
t MSG_114 "Данный образ использует Syslinux %s%s, но данное приложение включает в себя только установочные файлы для "
"Syslinux %s.\n\nТак как новые версии Syslinux не совместимы друг с другом, необходимо, чтобы дополнительные"
"файлы ('ldlinux.sys' and 'ldlinux.bss') были загружены из интернета:\n"
"- Выберите 'Да', чтобы скачать файлы из интернета\n"
@ -9997,7 +9997,7 @@ t MSG_111 "Nekompatibilná veľkosť klastra"
t MSG_112 "Formátovanie veľkých UDF zväzkov môže trvať dlhý čas. Rýchlosť USB 2.0 určuje "
"trvanie formátovania (približne %d:%02d), počas procesu sa vám môže zdať, že aplikácia zamrzla. Budte trpezlivý! "
t MSG_113 "Veľkosť UDF zväzku"
t MSG_114 "Tento obraz používa Syslinux %s ale tento program obsahuje inštaláciu pre "
t MSG_114 "Tento obraz používa Syslinux %s%s ale tento program obsahuje inštaláciu pre "
"Syslinux %s.\n\nAk nová verzia Syslinuxu nie je kompaktibilná s ďalším obrazom, "
"je možné, že program Rufus neobsahuje dva doplnkové súbory, ktoré budú musieť byť stiahnuté "
"z internetu (ldlinux.sys a ldlinux.bss):\n"
@ -10404,7 +10404,7 @@ t MSG_111 "Nezdružljiva velikost gruče"
t MSG_112 "Formatiranje velikih nosilcev UDF lahko traja veliko časa. Pri hitrostih USB 2.0 je predvideno "
"trajanje formatiranja %d:%02d, med čimer se kazalnik poteka ne bo premaknil. Prosim, bodite potrpežljivi!"
t MSG_113 "Velik nosilec UDF"
t MSG_114 "Ta slika uporablja Syslinux %s, toda ta aplikacija vsebuje le namestitvene datoteke za "
t MSG_114 "Ta slika uporablja Syslinux %s%s, toda ta aplikacija vsebuje le namestitvene datoteke za "
"Syslinux %s.\n\nKer novejše verzije Syslinuxa niso združljive in Rufus ne more vsebovati vseh, "
"morata biti prenešeni še dve dodatni datoteki (ldlinux.sys in ldlinux.bss):\n"
"- Izberite \"Da\", da se povežete na internet in prenesete ti dve datoteki.\n"
@ -11203,7 +11203,7 @@ t MSG_111 "Klusterstorlek stöds ej"
t MSG_112 "Att formatera en stor UDF-volum kan ta lång tid. Vid USB 2.0-hastigheter, är den beräknade formaterings- "
"tiden runt %d:%02d, och under tiden kan förloppsindikatorn se ut att stå stilla."
t MSG_113 "Stor UDF-volum"
t MSG_114 "Denna avbild använder Syslinux %s men detta programmet innehåller endast installationsfiler för "
t MSG_114 "Denna avbild använder Syslinux %s%s men detta programmet innehåller endast installationsfiler för "
"Syslinux %s.\n\nEftersom nya versioner av Syslinux inte är kompatibla med varandra, skulle det vara "
"omöjligt att alla fanns med i Rufus, så därför måste två filer laddas ned från "
"internet ('ldlinux.sys' och 'ldlinux.bss'):\n"
@ -11619,7 +11619,7 @@ t MSG_111 "Uyumsuz Ayırma Boyutu"
t MSG_112 "Geniş bir UDF Biriminin biçimlendirilmesi çok uzun bir süre alabilir. USB 2.0 hızında, Tahmini biçimlendirme "
"süresi %d:%02d, İlerleme çubuğu donmuş görünüyorken. Lütfen sabırlı olun!"
t MSG_113 "Geniş UDF Birimi"
t MSG_114 "Bu yansıma Syslinux %s kullanıyor fakat bu uygulama yalnız Syslinux %s için yükleme dosyalarını "
t MSG_114 "Bu yansıma Syslinux %s%s kullanıyor fakat bu uygulama yalnız Syslinux %s için yükleme dosyalarını "
"içeriyor.\n\nSyslinux'un yeni sürümleri bir başkasıyla uyumlu olmadığından ve Rufus'un bunların"
"tamamını içermesi mümkün olmadığından, iki ek dosyanın('ldlinux.sys' ve 'ldlinux.bss') internet üzerinden "
"indirilmesi gerekli:\n"

View File

@ -471,7 +471,7 @@ out:
BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan)
{
size_t i, k, size;
size_t i, size;
int j;
uint16_t sl_version;
FILE* fd;
@ -480,11 +480,10 @@ BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan)
udf_t* p_udf = NULL;
udf_dirent_t* p_udf_root;
LONG progress_style;
char *tmp, *buf;
char *tmp, *buf, *ext;
char path[MAX_PATH];
const char* basedir[] = { "i386", "minint" };
const char* tmp_sif = ".\\txtsetup.sif~";
const char ISOLINUX[] = { 'I', 'S', 'O', 'L', 'I', 'N', 'U', 'X', ' ' };
iso_extension_mask_t iso_extension_mask = ISO_EXTENSION_ALL;
if ((!enable_iso) || (src_iso == NULL) || (dest_dir == NULL))
@ -589,7 +588,12 @@ out:
if (!IsStrArrayEmpty(config_path)) {
safe_strcpy(iso_report.cfg_path, sizeof(iso_report.cfg_path), config_path.String[0]);
for (i=1; i<config_path.Index; i++) {
if (safe_strlen(iso_report.cfg_path) > safe_strlen(config_path.String[i]))
// Tails uses an '/EFI/BOOT/isolinux.cfg' along with a '/isolinux/isolinux.cfg'
// which are the exact same length. However, only the /isolinux one will work,
// so for now, at equal length, always pick the latest.
// We may have to revisit this and prefer a path that contains '/isolinux' if
// this hack is not enough for other images.
if (safe_strlen(iso_report.cfg_path) >= safe_strlen(config_path.String[i]))
safe_strcpy(iso_report.cfg_path, sizeof(iso_report.cfg_path), config_path.String[i]);
}
uprintf("Will use %s for Syslinux\n", iso_report.cfg_path);
@ -608,20 +612,15 @@ out:
}
fread(buf, 1, size, fd);
fclose(fd);
for (k=0; k<size-16; k++) {
if (memcmp(&buf[k], ISOLINUX, sizeof(ISOLINUX)) == 0) {
k += sizeof(ISOLINUX);
sl_version = (((uint8_t)strtoul(&buf[k], &tmp, 10))<<8) + (uint8_t)strtoul(&tmp[1], NULL, 10);
if (iso_report.sl_version == 0) {
iso_report.sl_version = sl_version;
j = (int)i;
} else if (iso_report.sl_version != sl_version) {
uprintf("Found conflicting %s versions:\n '%s' (%d.%02d) vs '%s' (%d.%02d)\n", isolinux_bin,
isolinux_path.String[j], SL_MAJOR(iso_report.sl_version), SL_MINOR(iso_report.sl_version),
isolinux_path.String[i], SL_MAJOR(sl_version), SL_MINOR(sl_version));
}
break;
}
sl_version = GetSyslinuxVersion(buf, size, &ext);
if (iso_report.sl_version == 0) {
safe_strcpy(iso_report.sl_version_ext, sizeof(iso_report.sl_version_ext), ext);
iso_report.sl_version = sl_version;
j = (int)i;
} else if ((iso_report.sl_version != sl_version) || (safe_strcmp(iso_report.sl_version_ext, ext) != 0)) {
uprintf("Found conflicting %s versions:\n '%s' (%d.%02d%s) vs '%s' (%d.%02d%s)\n", isolinux_bin,
isolinux_path.String[j], SL_MAJOR(iso_report.sl_version), SL_MINOR(iso_report.sl_version),
iso_report.sl_version_ext, isolinux_path.String[i], SL_MAJOR(sl_version), SL_MINOR(sl_version), ext);
}
free(buf);
_unlink(dot_isolinux_bin);
@ -630,8 +629,8 @@ out:
if (iso_report.sl_version != 0) {
static_sprintf(iso_report.sl_version_str, "%d.%02d",
SL_MAJOR(iso_report.sl_version), SL_MINOR(iso_report.sl_version));
uprintf("Detected Isolinux version: %s (from '%s')",
iso_report.sl_version_str, isolinux_path.String[j]);
uprintf("Detected Isolinux version: %s%s (from '%s')",
iso_report.sl_version_str, iso_report.sl_version_ext, isolinux_path.String[j]);
if ( (has_ldlinux_c32 && (SL_MAJOR(iso_report.sl_version) < 5))
|| (!has_ldlinux_c32 && (SL_MAJOR(iso_report.sl_version) >= 5)) )
uprintf("Warning: Conflict between Isolinux version and the presence of ldlinux.c32...\n");

View File

@ -41,6 +41,9 @@
/* Default delay between update checks (1 day) */
#define DEFAULT_UPDATE_INTERVAL (24*3600)
DWORD DownloadStatus;
BOOL PromptOnError = TRUE;
extern BOOL force_update;
static DWORD error_code;
static BOOL update_check_in_progress = FALSE;
@ -243,7 +246,7 @@ DWORD DownloadFile(const char* url, const char* file, HWND hProgressDialog)
{
HWND hProgressBar = NULL;
BOOL r = FALSE;
DWORD dwFlags, dwSize, dwDownloaded, dwTotalSize, dwStatus;
DWORD dwFlags, dwSize, dwDownloaded, dwTotalSize;
FILE* fd = NULL;
LONG progress_style;
const char* accept_types[] = {"*/*\0", NULL};
@ -255,6 +258,7 @@ DWORD DownloadFile(const char* url, const char* file, HWND hProgressDialog)
size_t last_slash;
int i;
DownloadStatus = 0;
if (hProgressDialog != NULL) {
// Use the progress control provided, if any
hProgressBar = GetDlgItem(hProgressDialog, IDC_PROGRESS);
@ -320,12 +324,12 @@ DWORD DownloadFile(const char* url, const char* file, HWND hProgressDialog)
}
// Get the file size
dwSize = sizeof(dwStatus);
dwStatus = 404;
HttpQueryInfoA(hRequest, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, (LPVOID)&dwStatus, &dwSize, NULL);
if (dwStatus != 200) {
dwSize = sizeof(DownloadStatus);
DownloadStatus = 404;
HttpQueryInfoA(hRequest, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, (LPVOID)&DownloadStatus, &dwSize, NULL);
if (DownloadStatus != 200) {
error_code = ERROR_INTERNET_ITEM_NOT_FOUND;
uprintf("Unable to access file: Server status %d\n", dwStatus);
uprintf("Unable to access file: Server status %d\n", DownloadStatus);
goto out;
}
dwSize = sizeof(dwTotalSize);
@ -373,10 +377,12 @@ out:
if (fd != NULL) fclose(fd);
if (!r) {
_unlink(file);
PrintStatus(0, FALSE, MSG_242);
SetLastError(error_code);
MessageBoxU(hMainDialog, IS_ERROR(FormatStatus)?StrError(FormatStatus, FALSE):WinInetErrorString(),
lmprintf(MSG_044), MB_OK|MB_ICONERROR|MB_IS_RTL);
if (PromptOnError) {
PrintStatus(0, FALSE, MSG_242);
SetLastError(error_code);
MessageBoxU(hMainDialog, IS_ERROR(FormatStatus)?StrError(FormatStatus, FALSE):WinInetErrorString(),
lmprintf(MSG_044), MB_OK|MB_ICONERROR|MB_IS_RTL);
}
}
if (hRequest) InternetCloseHandle(hRequest);
if (hConnection) InternetCloseHandle(hConnection);

View File

@ -125,6 +125,7 @@ BOOL enable_HDDs = FALSE, advanced_mode = TRUE, force_update = FALSE, use_fake_u
int dialog_showing = 0;
uint16_t rufus_version[4], embedded_sl_version[2];
char embedded_sl_version_str[2][12] = { "?.??", "?.??" };
char embedded_sl_version_ext[2][32];
RUFUS_UPDATE update = { {0,0,0,0}, {0,0}, NULL, NULL};
StrArray DriveID, DriveLabel;
extern char szStatusMessage[256];
@ -1065,13 +1066,13 @@ void ToggleImage(BOOL enable)
static BOOL BootCheck(void)
{
int i, fs, bt, dt, r;
FILE* fd;
FILE *fd;
DWORD len;
BOOL in_files_dir = FALSE;
const char* ldlinux = "ldlinux";
const char* syslinux = "syslinux";
const char* ldlinux_ext[3] = { "sys", "bss", "c32" };
char tmp[MAX_PATH];
char tmp[MAX_PATH], tmp2[MAX_PATH];
syslinux_ldlinux_len[0] = 0; syslinux_ldlinux_len[1] = 0;
dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
@ -1174,7 +1175,8 @@ static BOOL BootCheck(void)
IGNORE_RETVAL(_chdir(FILES_DIR));
for (i=0; i<2; i++) {
// Check if we already have the relevant ldlinux_v#.##.sys & ldlinux_v#.##.bss files
static_sprintf(tmp, "%s-%s/%s.%s", syslinux, iso_report.sl_version_str, ldlinux, ldlinux_ext[i]);
static_sprintf(tmp, "%s-%s%s/%s.%s", syslinux, iso_report.sl_version_str,
iso_report.sl_version_ext, ldlinux, ldlinux_ext[i]);
fd = fopen(tmp, "rb");
if (fd != NULL) {
fseek(fd, 0, SEEK_END);
@ -1183,21 +1185,46 @@ static BOOL BootCheck(void)
}
}
if ((syslinux_ldlinux_len[0] != 0) && (syslinux_ldlinux_len[1] != 0)) {
uprintf("Will reuse '%s.%s' and '%s.%s' from './" FILES_DIR "/%s/%s-%s/' for Syslinux installation\n",
ldlinux, ldlinux_ext[0], ldlinux, ldlinux_ext[1], FILES_DIR, syslinux, iso_report.sl_version_str);
uprintf("Will reuse '%s.%s' and '%s.%s' from './" FILES_DIR "/%s/%s-%s%s/' for Syslinux installation\n",
ldlinux, ldlinux_ext[0], ldlinux, ldlinux_ext[1], FILES_DIR, syslinux,
iso_report.sl_version_str, iso_report.sl_version_ext);
} else {
r = MessageBoxU(hMainDialog, lmprintf(MSG_114, iso_report.sl_version_str, embedded_sl_version_str[1]),
r = MessageBoxU(hMainDialog, lmprintf(MSG_114, iso_report.sl_version_str, iso_report.sl_version_ext,
embedded_sl_version_str[1]),
lmprintf(MSG_115), MB_YESNO|MB_ICONWARNING|MB_IS_RTL);
if (r != IDYES)
return FALSE;
for (i=0; i<2; i++) {
static_sprintf(tmp, "%s-%s", syslinux, iso_report.sl_version_str);
IGNORE_RETVAL(_mkdir(tmp));
if (*iso_report.sl_version_ext != 0) {
IGNORE_RETVAL(_chdir(tmp));
IGNORE_RETVAL(_mkdir(&iso_report.sl_version_ext[1]));
IGNORE_RETVAL(_chdir(".."));
}
static_sprintf(tmp, "%s.%s %s", ldlinux, ldlinux_ext[i], iso_report.sl_version_str);
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, tmp));
static_sprintf(tmp, "%s/%s-%s/%s.%s", FILES_URL, syslinux, iso_report.sl_version_str, ldlinux, ldlinux_ext[i]);
static_sprintf(tmp, "%s/%s-%s%s/%s.%s", FILES_URL, syslinux, iso_report.sl_version_str,
iso_report.sl_version_ext, ldlinux, ldlinux_ext[i]);
SetWindowTextU(hISOFileName, tmp);
PromptOnError = (*iso_report.sl_version_ext == 0);
syslinux_ldlinux_len[i] = DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
PromptOnError = TRUE;
if ((syslinux_ldlinux_len[i] == 0) && (DownloadStatus == 404) && (*iso_report.sl_version_ext != 0)) {
// Couldn't locate the file on the server => try to download without the version extra
uprintf("Extended version was not found, trying main version\n");
static_sprintf(tmp, "%s/%s-%s/%s.%s", FILES_URL, syslinux, iso_report.sl_version_str,
ldlinux, ldlinux_ext[i]);
SetWindowTextU(hISOFileName, tmp);
syslinux_ldlinux_len[i] = DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
if (syslinux_ldlinux_len[i] != 0) {
// Duplicate the file so that the user won't be prompted to download again
static_sprintf(tmp, "%s-%s\\%s.%s", syslinux, iso_report.sl_version_str, ldlinux, ldlinux_ext[i]);
static_sprintf(tmp2, "%s-%s\\%s\\%s.%s", syslinux, iso_report.sl_version_str,
&iso_report.sl_version_ext[1], ldlinux, ldlinux_ext[i]);
CopyFileA(tmp, tmp2, FALSE);
}
}
if (syslinux_ldlinux_len[i] == 0) {
uprintf("Couldn't download the files - cancelling\n");
return FALSE;
@ -1249,7 +1276,7 @@ void InitDialog(HWND hDlg)
DWORD len;
HDC hDC;
int i, i16, s16;
char tmp[128], *token, *buf;
char tmp[128], *token, *buf, *ext;
static char* resource[2] = { MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V5_SYS) };
#ifdef RUFUS_TEST
@ -1301,14 +1328,16 @@ void InitDialog(HWND hDlg)
uprintf(APPLICATION_NAME " version: %d.%d.%d.%d\n", rufus_version[0], rufus_version[1], rufus_version[2], rufus_version[3]);
for (i=0; i<ARRAYSIZE(resource); i++) {
buf = (char*)GetResource(hMainInstance, resource[i], _RT_RCDATA, "ldlinux_sys", &len, FALSE);
if ((buf == NULL) || (len < 16)) {
if (buf == NULL) {
uprintf("Warning: could not read embedded Syslinux v%d version", i+4);
} else {
embedded_sl_version[i] = (((uint8_t)strtoul(&buf[0xb], &token, 10))<<8) + (uint8_t)strtoul(&token[1], NULL, 10);
embedded_sl_version[i] = GetSyslinuxVersion(buf, len, &ext);
static_sprintf(embedded_sl_version_str[i], "%d.%02d", SL_MAJOR(embedded_sl_version[i]), SL_MINOR(embedded_sl_version[i]));
safe_strcpy(embedded_sl_version_ext[i], sizeof(embedded_sl_version_ext[i]), ext);
}
}
uprintf("Syslinux versions: %s, %s", embedded_sl_version_str[0], embedded_sl_version_str[1]);
uprintf("Syslinux versions: %s%s, %s%s", embedded_sl_version_str[0], embedded_sl_version_ext[0],
embedded_sl_version_str[1], embedded_sl_version_ext[1]);
uprintf("Windows version: %s\n", WindowsVersionStr);
uprintf("Locale ID: 0x%04X\n", GetUserDefaultUILanguage());

View File

@ -249,6 +249,7 @@ typedef struct {
BOOL is_vhd;
uint16_t sl_version; // Syslinux/Isolinux version
char sl_version_str[12];
char sl_version_ext[32];
} RUFUS_ISO_REPORT;
/* Isolate the Syslinux version numbers */
@ -319,7 +320,8 @@ extern HWND hISOProgressDlg, hISOProgressBar, hISOFileName, hDiskID;
extern float fScale;
extern char szFolderPath[MAX_PATH], app_dir[MAX_PATH];
extern char* image_path;
extern DWORD FormatStatus;
extern DWORD FormatStatus, DownloadStatus;
extern BOOL PromptOnError;
extern DWORD syslinux_ldlinux_len[2];
extern RUFUS_DRIVE_INFO SelectedDrive;
extern const int nb_steps[FS_MAX];
@ -363,6 +365,7 @@ extern BOOL ExtractDOS(const char* path);
extern BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan);
extern int64_t ExtractISOFile(const char* iso, const char* iso_file, const char* dest_file, DWORD attributes);
extern BOOL InstallSyslinux(DWORD drive_index, char drive_letter);
extern uint16_t GetSyslinuxVersion(char* buf, size_t buf_size, char** ext);
extern BOOL CreateProgress(void);
extern BOOL SetAutorun(const char* path);
extern char* FileDialog(BOOL save, char* path, const ext_t* ext, DWORD options);

View File

@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 206, 329
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Rufus 1.4.10.508"
CAPTION "Rufus 1.4.10.509"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
@ -165,7 +165,7 @@ END
RTL_IDD_DIALOG DIALOGEX 12, 12, 206, 329
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
CAPTION "Rufus 1.4.10.508"
CAPTION "Rufus 1.4.10.509"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
@ -428,8 +428,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,4,10,508
PRODUCTVERSION 1,4,10,508
FILEVERSION 1,4,10,509
PRODUCTVERSION 1,4,10,509
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -446,13 +446,13 @@ BEGIN
BEGIN
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
VALUE "FileDescription", "Rufus"
VALUE "FileVersion", "1.4.10.508"
VALUE "FileVersion", "1.4.10.509"
VALUE "InternalName", "Rufus"
VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)"
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
VALUE "OriginalFilename", "rufus.exe"
VALUE "ProductName", "Rufus"
VALUE "ProductVersion", "1.4.10.508"
VALUE "ProductVersion", "1.4.10.509"
END
END
BLOCK "VarFileInfo"

View File

@ -109,7 +109,8 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter)
syslinux_ldlinux[i] = (unsigned char*) malloc(syslinux_ldlinux_len[i]);
if (syslinux_ldlinux[i] == NULL)
goto out;
static_sprintf(path, "%s/%s-%s/%s.%s", FILES_DIR, syslinux, iso_report.sl_version_str, ldlinux, i==0?"sys":"bss");
static_sprintf(path, "%s/%s-%s%s/%s.%s", FILES_DIR, syslinux, iso_report.sl_version_str,
iso_report.sl_version_ext, ldlinux, i==0?"sys":"bss");
fd = fopen(path, "rb");
if (fd == NULL) {
uprintf("Could not open %s\n", path);
@ -300,3 +301,57 @@ out:
safe_closehandle(f_handle);
return r;
}
uint16_t GetSyslinuxVersion(char* buf, size_t buf_size, char** ext)
{
size_t i, j;
char *p;
uint16_t version;
const char LINUX[] = { 'L', 'I', 'N', 'U', 'X', ' ' };
static char* nullstr = "";
*ext = nullstr;
if (buf_size < 256)
return 0;
// Start at 64 to avoid the short incomplete version at the beginning of ldlinux.sys
for (i=64; i<buf_size-64; i++) {
if (memcmp(&buf[i], LINUX, sizeof(LINUX)) == 0) {
// Check for ISO or SYS prefix
if (!( ((buf[i-3] == 'I') && (buf[i-2] == 'S') && (buf[i-1] == 'O'))
|| ((buf[i-3] == 'S') && (buf[i-2] == 'Y') && (buf[i-1] == 'S')) ))
continue;
i += sizeof(LINUX);
version = (((uint8_t)strtoul(&buf[i], &p, 10))<<8) + (uint8_t)strtoul(&p[1], &p, 10);
if (version == 0)
continue;
p[safe_strlen(p)] = 0;
// Ensure that our extra version string starts with a slash
*p = '/';
// Remove the x.yz- duplicate if present
for (j=0; (buf[i+j] == p[1+j]) && (buf[i+j] != ' '); j++);
if (p[j+1] == '-')
j++;
if (j >= 4) {
p[j] = '/';
p = &p[j];
}
for (j=safe_strlen(p)-1; j>0; j--) {
// Arch Linux affixes a star for their version - who knows what else is out there...
if ((p[j] == ' ') || (p[j] == '*'))
p[j] = 0;
else
break;
}
// Sanitize the string
for (j=1; j<safe_strlen(p); j++)
// Some people are bound to have slashes in their date strings
if ((p[j] == '/') || (p[j] == '\\') || (p[j] == '*'))
p[j] = '_';
// If all we have is a slash, return the empty string for the extra version
*ext = (p[1] == 0)?nullstr:p;
return version;
}
}
return 0;
}