removed no more needed patcher files
This commit is contained in:
parent
f5459a1b9b
commit
63b02cfc00
6 changed files with 0 additions and 1235 deletions
|
@ -1,3 +0,0 @@
|
|||
FILE(GLOB SRC *.uxt)
|
||||
|
||||
INSTALL(FILES ${SRC} DESTINATION "${RYZOM_SHARE_PREFIX}/patcher")
|
|
@ -1,191 +0,0 @@
|
|||
// HASH_VALUE 6B09AC86E0363C89
|
||||
// INDEX 0
|
||||
LanguageName [Deutsch]
|
||||
|
||||
// HASH_VALUE 3259CCA76B39A0A8
|
||||
// INDEX 1
|
||||
TheSagaOfRyzom [Ryzom]
|
||||
|
||||
// HASH_VALUE C7CC3BE0464ED819
|
||||
// INDEX 333
|
||||
uiOnChecking [ÜBERPRÜFE DATEIEN FÜR DEN PATCH...]
|
||||
|
||||
// HASH_VALUE 3DDF0D8BBD1D3C7A
|
||||
// INDEX 348
|
||||
uiErrCantPatch [Fehler : Du kannst nicht patchen, da die PatchURL noch nicht in die Datenbank eingegeben wurde (Fehlercode 16).]
|
||||
|
||||
// HASH_VALUE E1B933F053557A69
|
||||
// INDEX 349
|
||||
uiNeedToPatch [Information : Du musst patchen, um Zugang zu diesem Shard zu erlangen.]
|
||||
|
||||
// HASH_VALUE 1CFD71DE1856F357
|
||||
// INDEX 350
|
||||
uiErrServerLost [Fehler : Die Verbindung zum Server wurde während des Patchens unterbrochen.]
|
||||
|
||||
// HASH_VALUE 0781700FFA41B8F9
|
||||
// INDEX 351
|
||||
uiPatching [PATCHE, BITTE WARTEN]
|
||||
|
||||
// HASH_VALUE B11FE4024EE3A1CB
|
||||
// INDEX 352
|
||||
uiErrPatchApply [Fehler : Patchprozess beendet, aber der Patch konnte nicht erfolgreich eingesetzt werden.]
|
||||
|
||||
// HASH_VALUE 428B3D2BDA3B2CD2
|
||||
// INDEX 353
|
||||
uiErrChecking [Fehler : Patchdateien versagen - Überprüfung.]
|
||||
|
||||
// HASH_VALUE 40D0242C40D0242C
|
||||
// INDEX 354
|
||||
uiKb [KB]
|
||||
|
||||
// HASH_VALUE 4050243440502434
|
||||
// INDEX 355
|
||||
uiMb [MB]
|
||||
|
||||
// HASH_VALUE 9FA5A06DD895B637
|
||||
// INDEX 356
|
||||
uiLoginGetFile [Lade Datei:]
|
||||
|
||||
// HASH_VALUE 373988CC56A4B9DB
|
||||
// INDEX 357
|
||||
uiDLFailed [Download vom Notfall-Server gescheitert, Login wurde abgebrochen]
|
||||
|
||||
// HASH_VALUE 0DD314AEEB0A6833
|
||||
// INDEX 358
|
||||
uiDLURIFailed [Download vom URI gescheitert (neuer Versuch):]
|
||||
|
||||
// HASH_VALUE 9FEF11F92FE58883
|
||||
// INDEX 359
|
||||
uiNoMoreURI [Keine Verbindung mehr zum URI, versuche den Notfall-Server]
|
||||
|
||||
// HASH_VALUE D126843FEAF6BF89
|
||||
// INDEX 360
|
||||
uiDLWithCurl [Datei laden mit Curl:]
|
||||
|
||||
// HASH_VALUE 5DF5B8902957A38B
|
||||
// INDEX 361
|
||||
uiDecompressing [Dekomprimiere Datei:]
|
||||
|
||||
// HASH_VALUE 5C24504228490833
|
||||
// INDEX 362
|
||||
uiCheckInt [Überprüfe Integrität:]
|
||||
|
||||
// HASH_VALUE 4C08EC7AE63A3CA8
|
||||
// INDEX 363
|
||||
uiNoVersionFound [Keine Version gefunden]
|
||||
|
||||
// HASH_VALUE EA9BF07087F0DE5C
|
||||
// INDEX 364
|
||||
uiVersionFound [Version gefunden:]
|
||||
|
||||
// HASH_VALUE 6CBAA4C2CED054DA
|
||||
// INDEX 365
|
||||
uiApplyingDelta [Delta anlegen:]
|
||||
|
||||
// HASH_VALUE 6BA9B484A5229440
|
||||
// INDEX 366
|
||||
uiClientVersion [Klientversion]
|
||||
|
||||
// HASH_VALUE 2EAADC9D27B47047
|
||||
// INDEX 367
|
||||
uiServerVersion [Serverversion]
|
||||
|
||||
// HASH_VALUE A8B6FC32E686BF9C
|
||||
// INDEX 368
|
||||
uiCheckingFile [Überprüfe Datei]
|
||||
|
||||
// HASH_VALUE 6618CC5E4408BC94
|
||||
// INDEX 369
|
||||
uiNeededPatches [Benötigte Patches :]
|
||||
|
||||
// HASH_VALUE 57D72C08D558C375
|
||||
// INDEX 370
|
||||
uiCheckInBNP [Überprüfe innerhalb BNP :]
|
||||
|
||||
// HASH_VALUE 8810F72436CBB610
|
||||
// INDEX 371
|
||||
uiSHA1Diff [BNP Zwangsentpackung : Checksumme stimmt nicht überein :]
|
||||
|
||||
// HASH_VALUE 0328885969AA93AC
|
||||
// INDEX 372
|
||||
uiCheckEndNoErr [Dateiüberprüfung ohne Fehler beendet]
|
||||
|
||||
// HASH_VALUE 9759642196BA93B6
|
||||
// INDEX 373
|
||||
uiCheckEndWithErr [Dateiüberprüfung mit Fehler beendet:]
|
||||
|
||||
// HASH_VALUE 03196C6669AA93A9
|
||||
// INDEX 374
|
||||
uiPatchEndNoErr [Dateipatch ohne Fehler beendet]
|
||||
|
||||
// HASH_VALUE E2A45B80D6C8F35E
|
||||
// INDEX 375
|
||||
uiPatchEndWithErr [Patch fehlgeschlagen!]
|
||||
|
||||
// HASH_VALUE 97987345E8D46F43
|
||||
// INDEX 376
|
||||
uiPatchDiskFull [Ungenügender Festplattenspeicher!]
|
||||
|
||||
// HASH_VALUE 67818F3F0F656F1B
|
||||
// INDEX 377
|
||||
uiPatchWriteError [Fehler beim Schreiben auf die Festplatte! (Festplatte voll?)]
|
||||
|
||||
// HASH_VALUE 54956061978AB897
|
||||
// INDEX 378
|
||||
uiProcessing [Bearbeite Datei:]
|
||||
|
||||
// HASH_VALUE D183CC5E53E4E24A
|
||||
// INDEX 379
|
||||
uiUnpack [BNP entpacken:]
|
||||
|
||||
// HASH_VALUE 57282453CE0D24A5
|
||||
// INDEX 380
|
||||
uiUnpackErrHead [Bnp-Header unlesbar:]
|
||||
|
||||
// HASH_VALUE 3EC17830B80D1B1D
|
||||
// INDEX 381
|
||||
uiRebootConfirm [Klicke, um neu zu starten. Bitte warten, Ryzom startet dann automatisch.]
|
||||
|
||||
// HASH_VALUE 809F582A06023625
|
||||
// INDEX 382
|
||||
uiRebootBut [HIER KLICKEN, UM NEU ZU STARTEN]
|
||||
|
||||
// HASH_VALUE EA9888EBCAF59355
|
||||
// INDEX 383
|
||||
uiChangeDate [Das Mod-Datum ändern :]
|
||||
|
||||
// HASH_VALUE 4589434CDD042E75
|
||||
// INDEX 384
|
||||
uiChgDateErr [File-Zeit unveränderbar :]
|
||||
|
||||
// HASH_VALUE 5BCA0C0C45A99719
|
||||
// INDEX 385
|
||||
uiNowDate [Wir haben den :]
|
||||
|
||||
// HASH_VALUE 485B4807F0581777
|
||||
// INDEX 386
|
||||
uiSetAttrib [File-Attribute einstellen :]
|
||||
|
||||
// HASH_VALUE 5EB5789353166D5E
|
||||
// INDEX 387
|
||||
uiAttribErr [Zugang unlesbar :]
|
||||
|
||||
// HASH_VALUE C2B6FF326665E080
|
||||
// INDEX 388
|
||||
uiDelFile [File löschen :]
|
||||
|
||||
// HASH_VALUE 0D262B3499A4A35A
|
||||
// INDEX 389
|
||||
uiDelErr [ File kann nicht gelöscht werden:]
|
||||
|
||||
// HASH_VALUE C238BC781514042B
|
||||
// INDEX 390
|
||||
uiDelNoFile [ File löschen (Keine File)]
|
||||
|
||||
// HASH_VALUE C1B7E33CDEF4085B
|
||||
// INDEX 391
|
||||
uiRenameFile [File umbenennen:]
|
||||
|
||||
// HASH_VALUE 8DB5533699858756
|
||||
// INDEX 392
|
||||
uiRenameErr [File kann nicht umbenannt werden :]
|
|
@ -1,191 +0,0 @@
|
|||
// HASH_VALUE 6B09AC86E0363C89
|
||||
// INDEX 0
|
||||
LanguageName [English]
|
||||
|
||||
// HASH_VALUE 3259CCA76B39A0A8
|
||||
// INDEX 1
|
||||
TheSagaOfRyzom [Ryzom]
|
||||
|
||||
// HASH_VALUE C7CC3BE0464ED819
|
||||
// INDEX 333
|
||||
uiOnChecking [CHECKING FILES FOR PATCH...]
|
||||
|
||||
// HASH_VALUE 3DDF0D8BBD1D3C7A
|
||||
// INDEX 348
|
||||
uiErrCantPatch [Error: You cannot patch because the PatchURL isn't setup in database (error code 16).]
|
||||
|
||||
// HASH_VALUE E1B933F053557A69
|
||||
// INDEX 349
|
||||
uiNeedToPatch [Information: You need to patch to access to this shard.]
|
||||
|
||||
// HASH_VALUE 1CFD71DE1856F357
|
||||
// INDEX 350
|
||||
uiErrServerLost [Error: Lost server during patching.]
|
||||
|
||||
// HASH_VALUE 0781700FFA41B8F9
|
||||
// INDEX 351
|
||||
uiPatching [PATCHING PLEASE WAIT]
|
||||
|
||||
// HASH_VALUE B11FE4024EE3A1CB
|
||||
// INDEX 352
|
||||
uiErrPatchApply [Error: Patch process ended but the patch has not been successfully applied.]
|
||||
|
||||
// HASH_VALUE 428B3D2BDA3B2CD2
|
||||
// INDEX 353
|
||||
uiErrChecking [Error: Patch files failed - checking.]
|
||||
|
||||
// HASH_VALUE 40D0242C40D0242C
|
||||
// INDEX 354
|
||||
uiKb [KB]
|
||||
|
||||
// HASH_VALUE 4050243440502434
|
||||
// INDEX 355
|
||||
uiMb [MB]
|
||||
|
||||
// HASH_VALUE 9FA5A06DD895B637
|
||||
// INDEX 356
|
||||
uiLoginGetFile [Getting File:]
|
||||
|
||||
// HASH_VALUE 373988CC56A4B9DB
|
||||
// INDEX 357
|
||||
uiDLFailed [Download from emergency server failed, patching is aborted]
|
||||
|
||||
// HASH_VALUE 0DD314AEEB0A6833
|
||||
// INDEX 358
|
||||
uiDLURIFailed [Download from URI failed (will try again):]
|
||||
|
||||
// HASH_VALUE 9FEF11F92FE58883
|
||||
// INDEX 359
|
||||
uiNoMoreURI [No more patch URI, try emergency patch server]
|
||||
|
||||
// HASH_VALUE D126843FEAF6BF89
|
||||
// INDEX 360
|
||||
uiDLWithCurl [Downloading File With Curl:]
|
||||
|
||||
// HASH_VALUE 5DF5B8902957A38B
|
||||
// INDEX 361
|
||||
uiDecompressing [Decompressing File:]
|
||||
|
||||
// HASH_VALUE 5C24504228490833
|
||||
// INDEX 362
|
||||
uiCheckInt [Checking Integrity:]
|
||||
|
||||
// HASH_VALUE 4C08EC7AE63A3CA8
|
||||
// INDEX 363
|
||||
uiNoVersionFound [No Version Found]
|
||||
|
||||
// HASH_VALUE EA9BF07087F0DE5C
|
||||
// INDEX 364
|
||||
uiVersionFound [Version Found:]
|
||||
|
||||
// HASH_VALUE 6CBAA4C2CED054DA
|
||||
// INDEX 365
|
||||
uiApplyingDelta [Applying Delta:]
|
||||
|
||||
// HASH_VALUE 6BA9B484A5229440
|
||||
// INDEX 366
|
||||
uiClientVersion [Client Version]
|
||||
|
||||
// HASH_VALUE 2EAADC9D27B47047
|
||||
// INDEX 367
|
||||
uiServerVersion [Server Version]
|
||||
|
||||
// HASH_VALUE A8B6FC32E686BF9C
|
||||
// INDEX 368
|
||||
uiCheckingFile [Checking File]
|
||||
|
||||
// HASH_VALUE 6618CC5E4408BC94
|
||||
// INDEX 369
|
||||
uiNeededPatches [Required Patches:]
|
||||
|
||||
// HASH_VALUE 57D72C08D558C375
|
||||
// INDEX 370
|
||||
uiCheckInBNP [Checking inside BNP:]
|
||||
|
||||
// HASH_VALUE 8810F72436CBB610
|
||||
// INDEX 371
|
||||
uiSHA1Diff [Force BNP Unpacking: checksums do not correspond:]
|
||||
|
||||
// HASH_VALUE 0328885969AA93AC
|
||||
// INDEX 372
|
||||
uiCheckEndNoErr [Checking file ended with no errors]
|
||||
|
||||
// HASH_VALUE 9759642196BA93B6
|
||||
// INDEX 373
|
||||
uiCheckEndWithErr [Checking file ended with errors:]
|
||||
|
||||
// HASH_VALUE 03196C6669AA93A9
|
||||
// INDEX 374
|
||||
uiPatchEndNoErr [Patching file ended with no errors]
|
||||
|
||||
// HASH_VALUE E2A45B80D6C8F35E
|
||||
// INDEX 375
|
||||
uiPatchEndWithErr [Patch failed!]
|
||||
|
||||
// HASH_VALUE 97987345E8D46F43
|
||||
// INDEX 376
|
||||
uiPatchDiskFull [Disk full!]
|
||||
|
||||
// HASH_VALUE 67818F3F0F656F1B
|
||||
// INDEX 377
|
||||
uiPatchWriteError [Disk write error! (disk full?)]
|
||||
|
||||
// HASH_VALUE 54956061978AB897
|
||||
// INDEX 378
|
||||
uiProcessing [Processing file:]
|
||||
|
||||
// HASH_VALUE D183CC5E53E4E24A
|
||||
// INDEX 379
|
||||
uiUnpack [BNP Unpacking:]
|
||||
|
||||
// HASH_VALUE 57282453CE0D24A5
|
||||
// INDEX 380
|
||||
uiUnpackErrHead [Cannot read bnp header:]
|
||||
|
||||
// HASH_VALUE 3EC17830B80D1B1D
|
||||
// INDEX 381
|
||||
uiRebootConfirm [Ryzom will now relaunch. Please wait until Ryzom is fully restarted.]
|
||||
|
||||
// HASH_VALUE 809F582A06023625
|
||||
// INDEX 382
|
||||
uiRebootBut [CLICK HERE TO RELAUNCH]
|
||||
|
||||
// HASH_VALUE EA9888EBCAF59355
|
||||
// INDEX 383
|
||||
uiChangeDate [Changing the mod date:]
|
||||
|
||||
// HASH_VALUE 4589434CDD042E75
|
||||
// INDEX 384
|
||||
uiChgDateErr [Cannot change file time:]
|
||||
|
||||
// HASH_VALUE 5BCA0C0C45A99719
|
||||
// INDEX 385
|
||||
uiNowDate [Now the date is:]
|
||||
|
||||
// HASH_VALUE 485B4807F0581777
|
||||
// INDEX 386
|
||||
uiSetAttrib [Set file attributes:]
|
||||
|
||||
// HASH_VALUE 5EB5789353166D5E
|
||||
// INDEX 387
|
||||
uiAttribErr [Cannot have read/write access:]
|
||||
|
||||
// HASH_VALUE C2B6FF326665E080
|
||||
// INDEX 388
|
||||
uiDelFile [Delete file:]
|
||||
|
||||
// HASH_VALUE 0D262B3499A4A35A
|
||||
// INDEX 389
|
||||
uiDelErr [Cannot delete file:]
|
||||
|
||||
// HASH_VALUE C238BC781514042B
|
||||
// INDEX 390
|
||||
uiDelNoFile [Delete file (no file)]
|
||||
|
||||
// HASH_VALUE C1B7E33CDEF4085B
|
||||
// INDEX 391
|
||||
uiRenameFile [Rename File:]
|
||||
|
||||
// HASH_VALUE 8DB5533699858756
|
||||
// INDEX 392
|
||||
uiRenameErr [Cannot rename file:]
|
|
@ -1,191 +0,0 @@
|
|||
// HASH_VALUE 6B09AC86E0363C89
|
||||
// INDEX 0
|
||||
LanguageName [Français]
|
||||
|
||||
// HASH_VALUE 3259CCA76B39A0A8
|
||||
// INDEX 1
|
||||
TheSagaOfRyzom [Ryzom]
|
||||
|
||||
// HASH_VALUE C7CC3BE0464ED819
|
||||
// INDEX 333
|
||||
uiOnChecking [EXAMINE LES FICHIERS A PATCHER...]
|
||||
|
||||
// HASH_VALUE 3DDF0D8BBD1D3C7A
|
||||
// INDEX 348
|
||||
uiErrCantPatch [Erreur : Vous ne pouvez pas patcher car l'URL des mises à jour n'est pas configurée dans la base de données (erreur code 16).]
|
||||
|
||||
// HASH_VALUE E1B933F053557A69
|
||||
// INDEX 349
|
||||
uiNeedToPatch [Information : Vous devez installer les mises à jour pour accéder à ce shard.]
|
||||
|
||||
// HASH_VALUE 1CFD71DE1856F357
|
||||
// INDEX 350
|
||||
uiErrServerLost [Erreur : Perte du serveur durant la mise à jour de Ryzom.]
|
||||
|
||||
// HASH_VALUE 0781700FFA41B8F9
|
||||
// INDEX 351
|
||||
uiPatching [MISE A JOUR EN COURS, VEUILLEZ PATIENTER]
|
||||
|
||||
// HASH_VALUE B11FE4024EE3A1CB
|
||||
// INDEX 352
|
||||
uiErrPatchApply [Erreur : le processus de mises à jour est terminé mais les patchs n'ont pas pu être installés correctement.]
|
||||
|
||||
// HASH_VALUE 428B3D2BDA3B2CD2
|
||||
// INDEX 353
|
||||
uiErrChecking [Erreur : Echec des fichiers de mises à jour - vérification.]
|
||||
|
||||
// HASH_VALUE 40D0242C40D0242C
|
||||
// INDEX 354
|
||||
uiKb [Ko]
|
||||
|
||||
// HASH_VALUE 4050243440502434
|
||||
// INDEX 355
|
||||
uiMb [Mo]
|
||||
|
||||
// HASH_VALUE 9FA5A06DD895B637
|
||||
// INDEX 356
|
||||
uiLoginGetFile [Récupération du fichier :]
|
||||
|
||||
// HASH_VALUE 373988CC56A4B9DB
|
||||
// INDEX 357
|
||||
uiDLFailed [Echec téléchargement à partir du serveur d'urgence, processus de patchs avorté]
|
||||
|
||||
// HASH_VALUE 0DD314AEEB0A6833
|
||||
// INDEX 358
|
||||
uiDLURIFailed [Echec téléchargement à partir d'URI (nouvel essai) :]
|
||||
|
||||
// HASH_VALUE 9FEF11F92FE58883
|
||||
// INDEX 359
|
||||
uiNoMoreURI [Plus de patchs URI, essayez le serveur d'urgence]
|
||||
|
||||
// HASH_VALUE D126843FEAF6BF89
|
||||
// INDEX 360
|
||||
uiDLWithCurl [Téléchargement des fichiers via Curl:]
|
||||
|
||||
// HASH_VALUE 5DF5B8902957A38B
|
||||
// INDEX 361
|
||||
uiDecompressing [Décompression du fichier :]
|
||||
|
||||
// HASH_VALUE 5C24504228490833
|
||||
// INDEX 362
|
||||
uiCheckInt [Vérification de l'intégrité :]
|
||||
|
||||
// HASH_VALUE 4C08EC7AE63A3CA8
|
||||
// INDEX 363
|
||||
uiNoVersionFound [Pas de Version trouvée]
|
||||
|
||||
// HASH_VALUE EA9BF07087F0DE5C
|
||||
// INDEX 364
|
||||
uiVersionFound [Version trouvée :]
|
||||
|
||||
// HASH_VALUE 6CBAA4C2CED054DA
|
||||
// INDEX 365
|
||||
uiApplyingDelta [Application du Delta :]
|
||||
|
||||
// HASH_VALUE 6BA9B484A5229440
|
||||
// INDEX 366
|
||||
uiClientVersion [Version du Client]
|
||||
|
||||
// HASH_VALUE 2EAADC9D27B47047
|
||||
// INDEX 367
|
||||
uiServerVersion [Version du Serveur]
|
||||
|
||||
// HASH_VALUE A8B6FC32E686BF9C
|
||||
// INDEX 368
|
||||
uiCheckingFile [Vérification du fichier]
|
||||
|
||||
// HASH_VALUE 6618CC5E4408BC94
|
||||
// INDEX 369
|
||||
uiNeededPatches [Patchs nécessaires :]
|
||||
|
||||
// HASH_VALUE 57D72C08D558C375
|
||||
// INDEX 370
|
||||
uiCheckInBNP [Vérification du BNP :]
|
||||
|
||||
// HASH_VALUE 8810F72436CBB610
|
||||
// INDEX 371
|
||||
uiSHA1Diff [Force BNP Analysée : SHA1 ne correspond pas :]
|
||||
|
||||
// HASH_VALUE 0328885969AA93AC
|
||||
// INDEX 372
|
||||
uiCheckEndNoErr [Fin de vérification du fichier - Pas d'erreur]
|
||||
|
||||
// HASH_VALUE 9759642196BA93B6
|
||||
// INDEX 373
|
||||
uiCheckEndWithErr [Fin de vérification du fichier - Erreur(s) :]
|
||||
|
||||
// HASH_VALUE 03196C6669AA93A9
|
||||
// INDEX 374
|
||||
uiPatchEndNoErr [Fichier de patch terminé - Pas d'erreur]
|
||||
|
||||
// HASH_VALUE E2A45B80D6C8F35E
|
||||
// INDEX 375
|
||||
uiPatchEndWithErr [Echec de la mise à jour !]
|
||||
|
||||
// HASH_VALUE 97987345E8D46F43
|
||||
// INDEX 376
|
||||
uiPatchDiskFull [Disque plein !]
|
||||
|
||||
// HASH_VALUE 67818F3F0F656F1B
|
||||
// INDEX 377
|
||||
uiPatchWriteError [Erreur d'écriture ! (disque plein ?)]
|
||||
|
||||
// HASH_VALUE 54956061978AB897
|
||||
// INDEX 378
|
||||
uiProcessing [Traîtement des fichiers :]
|
||||
|
||||
// HASH_VALUE D183CC5E53E4E24A
|
||||
// INDEX 379
|
||||
uiUnpack [Décompression BNP :]
|
||||
|
||||
// HASH_VALUE 57282453CE0D24A5
|
||||
// INDEX 380
|
||||
uiUnpackErrHead [Impossible de lire l'en-tête bnp :]
|
||||
|
||||
// HASH_VALUE 3EC17830B80D1B1D
|
||||
// INDEX 381
|
||||
uiRebootConfirm [Ryzom va être redémarré. Attendez que le jeu soit totalement relancé SVP.]
|
||||
|
||||
// HASH_VALUE 809F582A06023625
|
||||
// INDEX 382
|
||||
uiRebootBut [CLIQUEZ ICI POUR REDEMARRER]
|
||||
|
||||
// HASH_VALUE EA9888EBCAF59355
|
||||
// INDEX 383
|
||||
uiChangeDate [Changement du mode date :]
|
||||
|
||||
// HASH_VALUE 4589434CDD042E75
|
||||
// INDEX 384
|
||||
uiChgDateErr [Impossible de modifier le fichier heure :]
|
||||
|
||||
// HASH_VALUE 5BCA0C0C45A99719
|
||||
// INDEX 385
|
||||
uiNowDate [La date est :]
|
||||
|
||||
// HASH_VALUE 485B4807F0581777
|
||||
// INDEX 386
|
||||
uiSetAttrib [Réglages attributs du fichier :]
|
||||
|
||||
// HASH_VALUE 5EB5789353166D5E
|
||||
// INDEX 387
|
||||
uiAttribErr [Impossible d'obtenir l'accès lire/écrire :]
|
||||
|
||||
// HASH_VALUE C2B6FF326665E080
|
||||
// INDEX 388
|
||||
uiDelFile [Suppression du fichier :]
|
||||
|
||||
// HASH_VALUE 0D262B3499A4A35A
|
||||
// INDEX 389
|
||||
uiDelErr [Impossible de supprimer le fichier :]
|
||||
|
||||
// HASH_VALUE C238BC781514042B
|
||||
// INDEX 390
|
||||
uiDelNoFile [Suppression du fichier (pas de fichier)]
|
||||
|
||||
// HASH_VALUE C1B7E33CDEF4085B
|
||||
// INDEX 391
|
||||
uiRenameFile [Attribution d'un nouveau nom au fichier :]
|
||||
|
||||
// HASH_VALUE 8DB5533699858756
|
||||
// INDEX 392
|
||||
uiRenameErr [Impossible de renommer le fichier :]
|
|
@ -1,191 +0,0 @@
|
|||
// HASH_VALUE 6B09AC86E0363C89
|
||||
// INDEX 0
|
||||
LanguageName [Русский]
|
||||
|
||||
// HASH_VALUE 3259CCA76B39A0A8
|
||||
// INDEX 1
|
||||
TheSagaOfRyzom [Ризом]
|
||||
|
||||
// HASH_VALUE C7CC3BE0464ED819
|
||||
// INDEX 333
|
||||
uiOnChecking [ПРОВЕРКА ФАЙЛОВ ИГРЫ...]
|
||||
|
||||
// HASH_VALUE 3DDF0D8BBD1D3C7A
|
||||
// INDEX 348
|
||||
uiErrCantPatch [Ошибка : Патч невозможен, поскольку адрес получения патча не установлен (error code 16).]
|
||||
|
||||
// HASH_VALUE E1B933F053557A69
|
||||
// INDEX 349
|
||||
uiNeedToPatch [Информация : Для подключения к этому серверу необходим патч.]
|
||||
|
||||
// HASH_VALUE 1CFD71DE1856F357
|
||||
// INDEX 350
|
||||
uiErrServerLost [Ошибка : Потеря связи с сервером во время патча.]
|
||||
|
||||
// HASH_VALUE 0781700FFA41B8F9
|
||||
// INDEX 351
|
||||
uiPatching [ПАТЧ В ПРОЦЕССЕ... ПОДОЖДИТЕ]
|
||||
|
||||
// HASH_VALUE B11FE4024EE3A1CB
|
||||
// INDEX 352
|
||||
uiErrPatchApply [Ошибка : Процесс скачивания патча завершился, но патч невозможен.]
|
||||
|
||||
// HASH_VALUE 428B3D2BDA3B2CD2
|
||||
// INDEX 353
|
||||
uiErrChecking [Ошибка : Файлы патча не соответствуют необходимым - идет проверка...]
|
||||
|
||||
// HASH_VALUE 40D0242C40D0242C
|
||||
// INDEX 354
|
||||
uiKb [КБ]
|
||||
|
||||
// HASH_VALUE 4050243440502434
|
||||
// INDEX 355
|
||||
uiMb [МБ]
|
||||
|
||||
// HASH_VALUE 9FA5A06DD895B637
|
||||
// INDEX 356
|
||||
uiLoginGetFile [Получение файла :]
|
||||
|
||||
// HASH_VALUE 373988CC56A4B9DB
|
||||
// INDEX 357
|
||||
uiDLFailed [Скачивание с экстренного сервера невозможно, патч не может быть завершен]
|
||||
|
||||
// HASH_VALUE 0DD314AEEB0A6833
|
||||
// INDEX 358
|
||||
uiDLURIFailed [Скачивание по указанному адресу невозможно (попытки возобновятся позже) :]
|
||||
|
||||
// HASH_VALUE 9FEF11F92FE58883
|
||||
// INDEX 359
|
||||
uiNoMoreURI [Адрес для скачивания патча недействителен, подключитесь к экстренному серверу]
|
||||
|
||||
// HASH_VALUE D126843FEAF6BF89
|
||||
// INDEX 360
|
||||
uiDLWithCurl [Скачивание файла :]
|
||||
|
||||
// HASH_VALUE 5DF5B8902957A38B
|
||||
// INDEX 361
|
||||
uiDecompressing [Распаковка файла :]
|
||||
|
||||
// HASH_VALUE 5C24504228490833
|
||||
// INDEX 362
|
||||
uiCheckInt [Проверка файла :]
|
||||
|
||||
// HASH_VALUE 4C08EC7AE63A3CA8
|
||||
// INDEX 363
|
||||
uiNoVersionFound [Версия не обнаружена]
|
||||
|
||||
// HASH_VALUE EA9BF07087F0DE5C
|
||||
// INDEX 364
|
||||
uiVersionFound [Обнаружена версия :]
|
||||
|
||||
// HASH_VALUE 6CBAA4C2CED054DA
|
||||
// INDEX 365
|
||||
uiApplyingDelta [Применяется Дельта :]
|
||||
|
||||
// HASH_VALUE 6BA9B484A5229440
|
||||
// INDEX 366
|
||||
uiClientVersion [Версия клиента]
|
||||
|
||||
// HASH_VALUE 2EAADC9D27B47047
|
||||
// INDEX 367
|
||||
uiServerVersion [Версия сервера]
|
||||
|
||||
// HASH_VALUE A8B6FC32E686BF9C
|
||||
// INDEX 368
|
||||
uiCheckingFile [Проверка файла]
|
||||
|
||||
// HASH_VALUE 6618CC5E4408BC94
|
||||
// INDEX 369
|
||||
uiNeededPatches [Необходимые патчи :]
|
||||
|
||||
// HASH_VALUE 57D72C08D558C375
|
||||
// INDEX 370
|
||||
uiCheckInBNP [Проверка BNP :]
|
||||
|
||||
// HASH_VALUE 8810F72436CBB610
|
||||
// INDEX 371
|
||||
uiSHA1Diff [Форсировать распаковку BNP : контрольные суммы не совпадают :]
|
||||
|
||||
// HASH_VALUE 0328885969AA93AC
|
||||
// INDEX 372
|
||||
uiCheckEndNoErr [Проверка файла не выявила ошибок]
|
||||
|
||||
// HASH_VALUE 9759642196BA93B6
|
||||
// INDEX 373
|
||||
uiCheckEndWithErr [Проверка файла выявила ошибки :]
|
||||
|
||||
// HASH_VALUE 03196C6669AA93A9
|
||||
// INDEX 374
|
||||
uiPatchEndNoErr [Патч осуществлен без ошибок]
|
||||
|
||||
// HASH_VALUE E2A45B80D6C8F35E
|
||||
// INDEX 375
|
||||
uiPatchEndWithErr [Патч невозможен!]
|
||||
|
||||
// HASH_VALUE 97987345E8D46F43
|
||||
// INDEX 376
|
||||
uiPatchDiskFull [Диск переполнен!]
|
||||
|
||||
// HASH_VALUE 67818F3F0F656F1B
|
||||
// INDEX 377
|
||||
uiPatchWriteError [Ошибка записи! (диск переполнен ?)]
|
||||
|
||||
// HASH_VALUE 54956061978AB897
|
||||
// INDEX 378
|
||||
uiProcessing [Обработка файла :]
|
||||
|
||||
// HASH_VALUE D183CC5E53E4E24A
|
||||
// INDEX 379
|
||||
uiUnpack [Распаковка BNP :]
|
||||
|
||||
// HASH_VALUE 57282453CE0D24A5
|
||||
// INDEX 380
|
||||
uiUnpackErrHead [Невозможно прочесть заголовок BNP :]
|
||||
|
||||
// HASH_VALUE 3EC17830B80D1B1D
|
||||
// INDEX 381
|
||||
uiRebootConfirm [Ризом будет перезапущен. Пожалуйста, подождите...]
|
||||
|
||||
// HASH_VALUE 809F582A06023625
|
||||
// INDEX 382
|
||||
uiRebootBut [ПЕРЕЗАПУСТИТЬ ИГРУ]
|
||||
|
||||
// HASH_VALUE EA9888EBCAF59355
|
||||
// INDEX 383
|
||||
uiChangeDate [Перезапись даты изменений :]
|
||||
|
||||
// HASH_VALUE 4589434CDD042E75
|
||||
// INDEX 384
|
||||
uiChgDateErr [Невозможно изменить время файла :]
|
||||
|
||||
// HASH_VALUE 5BCA0C0C45A99719
|
||||
// INDEX 385
|
||||
uiNowDate [Новая дата :]
|
||||
|
||||
// HASH_VALUE 485B4807F0581777
|
||||
// INDEX 386
|
||||
uiSetAttrib [Установить свойства файла :]
|
||||
|
||||
// HASH_VALUE 5EB5789353166D5E
|
||||
// INDEX 387
|
||||
uiAttribErr [Невозможно получить доступ к чтению/записи :]
|
||||
|
||||
// HASH_VALUE C2B6FF326665E080
|
||||
// INDEX 388
|
||||
uiDelFile [Удалить файл :]
|
||||
|
||||
// HASH_VALUE 0D262B3499A4A35A
|
||||
// INDEX 389
|
||||
uiDelErr [Невозможно удалить файл :]
|
||||
|
||||
// HASH_VALUE C238BC781514042B
|
||||
// INDEX 390
|
||||
uiDelNoFile [Удалить файл (файл отсутствует)]
|
||||
|
||||
// HASH_VALUE C1B7E33CDEF4085B
|
||||
// INDEX 391
|
||||
uiRenameFile [Переименовать файл :]
|
||||
|
||||
// HASH_VALUE 8DB5533699858756
|
||||
// INDEX 392
|
||||
uiRenameErr [Невозможно переименовать файл :]
|
|
@ -1,468 +0,0 @@
|
|||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//
|
||||
// Includes
|
||||
//
|
||||
|
||||
#include "stdpch.h"
|
||||
#include "login_patch.h"
|
||||
|
||||
#define RZ_USE_SEVENZIP 1
|
||||
#define RZ_USE_NEW_LZMA
|
||||
|
||||
#ifdef RZ_USE_SEVENZIP
|
||||
|
||||
#ifdef RZ_USE_NEW_LZMA
|
||||
|
||||
#include "seven_zip/7z.h"
|
||||
#include "seven_zip/7zAlloc.h"
|
||||
#include "seven_zip/7zBuf.h"
|
||||
#include "seven_zip/7zCrc.h"
|
||||
#include "seven_zip/7zFile.h"
|
||||
#include "seven_zip/7zVersion.h"
|
||||
#include "seven_zip/LzmaDec.h"
|
||||
|
||||
#else
|
||||
|
||||
#include "seven_zip/7zCrc.h"
|
||||
#include "seven_zip/7zIn.h"
|
||||
#include "seven_zip/7zExtract.h"
|
||||
#include "seven_zip/LzmaDecode.h"
|
||||
|
||||
#endif
|
||||
|
||||
//
|
||||
// Namespaces
|
||||
//
|
||||
|
||||
using namespace std;
|
||||
using namespace NLMISC;
|
||||
|
||||
|
||||
#ifdef RZ_USE_NEW_LZMA
|
||||
|
||||
/// Input stream class for 7zip archive
|
||||
class CNel7ZipInStream : public ISeekInStream
|
||||
{
|
||||
NLMISC::IStream *_Stream;
|
||||
|
||||
public:
|
||||
/// Constructor, only allow file stream because 7zip will 'seek' in the stream
|
||||
CNel7ZipInStream(NLMISC::IStream *s)
|
||||
: _Stream(s)
|
||||
{
|
||||
Read = readFunc;
|
||||
Seek = seekFunc;
|
||||
}
|
||||
|
||||
// the read function called by 7zip to read data
|
||||
static SRes readFunc(void *object, void *buffer, size_t *size)
|
||||
{
|
||||
try
|
||||
{
|
||||
CNel7ZipInStream *me = (CNel7ZipInStream*)object;
|
||||
uint len = (uint)*size;
|
||||
me->_Stream->serialBuffer((uint8*)buffer, len);
|
||||
return SZ_OK;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return SZ_ERROR_READ;
|
||||
}
|
||||
}
|
||||
|
||||
// the seek function called by seven zip to seek inside stream
|
||||
static SRes seekFunc(void *object, Int64 *pos, ESzSeek origin)
|
||||
{
|
||||
try
|
||||
{
|
||||
CNel7ZipInStream *me = (CNel7ZipInStream*)object;
|
||||
sint32 offset = (sint32)*pos;
|
||||
bool ret = me->_Stream->seek(offset, (NLMISC::IStream::TSeekOrigin)origin);
|
||||
|
||||
if (ret)
|
||||
{
|
||||
*pos = (Int64)me->_Stream->getPos();
|
||||
return SZ_OK;
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
}
|
||||
|
||||
return SZ_ERROR_READ;
|
||||
}
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
/// Input stream class for 7zip archive
|
||||
class CNel7ZipInStream : public _ISzInStream
|
||||
{
|
||||
NLMISC::IStream *_Stream;
|
||||
|
||||
public:
|
||||
/// Constructor, only allow file stream because 7zip will 'seek' in the stream
|
||||
CNel7ZipInStream(NLMISC::IStream *s)
|
||||
: _Stream(s)
|
||||
{
|
||||
Read = readFunc;
|
||||
Seek = seekFunc;
|
||||
}
|
||||
|
||||
// the read function called by 7zip to read data
|
||||
static SZ_RESULT readFunc(void *object, void *buffer, size_t size, size_t *processedSize)
|
||||
{
|
||||
try
|
||||
{
|
||||
CNel7ZipInStream *me = (CNel7ZipInStream*)object;
|
||||
me->_Stream->serialBuffer((uint8*)buffer, (uint)size);
|
||||
*processedSize = size;
|
||||
return SZ_OK;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return SZE_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
// the seek function called by seven zip to seek inside stream
|
||||
static SZ_RESULT seekFunc(void *object, CFileSize pos)
|
||||
{
|
||||
try
|
||||
{
|
||||
CNel7ZipInStream *me = (CNel7ZipInStream*)object;
|
||||
bool ret= me->_Stream->seek(pos, NLMISC::IStream::begin);
|
||||
if (ret)
|
||||
return SZ_OK;
|
||||
else
|
||||
return SZE_FAIL;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return SZE_FAIL;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
bool CPatchManager::unpack7Zip(const std::string &sevenZipFile, const std::string &destFileName)
|
||||
{
|
||||
#ifdef RZ_USE_SEVENZIP
|
||||
nlinfo("Uncompressing 7zip archive '%s' to '%s'", sevenZipFile.c_str(), destFileName.c_str());
|
||||
|
||||
// init seven zip
|
||||
ISzAlloc allocImp;
|
||||
allocImp.Alloc = SzAlloc;
|
||||
allocImp.Free = SzFree;
|
||||
|
||||
ISzAlloc allocTempImp;
|
||||
allocTempImp.Alloc = SzAllocTemp;
|
||||
allocTempImp.Free = SzFreeTemp;
|
||||
|
||||
// wrap file in a CIFile
|
||||
CIFile input(sevenZipFile);
|
||||
CNel7ZipInStream inStr(&input);
|
||||
|
||||
#ifdef RZ_USE_NEW_LZMA
|
||||
|
||||
CLookToRead lookStream;
|
||||
lookStream.realStream = &inStr;
|
||||
LookToRead_CreateVTable(&lookStream, False);
|
||||
LookToRead_Init(&lookStream);
|
||||
|
||||
CrcGenerateTable();
|
||||
|
||||
CSzArEx db;
|
||||
SzArEx_Init(&db);
|
||||
|
||||
// unpack the file using the 7zip API
|
||||
SRes res = SzArEx_Open(&db, &lookStream.s, &allocImp, &allocTempImp);
|
||||
|
||||
if (res != SZ_OK)
|
||||
{
|
||||
nlerror("Failed to open archive file %s", sevenZipFile.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (db.NumFiles != 1)
|
||||
{
|
||||
nlerror("Seven zip archive with more than 1 file are unsupported");
|
||||
return false;
|
||||
}
|
||||
|
||||
UInt32 blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */
|
||||
Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */
|
||||
size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */
|
||||
|
||||
size_t offset;
|
||||
size_t outSizeProcessed = 0;
|
||||
|
||||
// get the first file
|
||||
res = SzArEx_Extract(&db, &lookStream.s, 0,
|
||||
&blockIndex, &outBuffer, &outBufferSize,
|
||||
&offset, &outSizeProcessed,
|
||||
&allocImp, &allocTempImp);
|
||||
|
||||
// get the length of first file
|
||||
size_t nameLen = SzArEx_GetFileNameUtf16(&db, 0, NULL);
|
||||
|
||||
ucstring filename;
|
||||
filename.resize(nameLen);
|
||||
|
||||
// write filename into ucstring
|
||||
SzArEx_GetFileNameUtf16(&db, 0, &filename[0]);
|
||||
|
||||
// write the extracted file
|
||||
FILE *outputHandle = fopen(destFileName.c_str(), "wb+");
|
||||
|
||||
if (outputHandle == 0)
|
||||
{
|
||||
nlerror("Can not open output file '%s'", destFileName.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
UInt32 processedSize = (UInt32)fwrite(outBuffer + offset, 1, outSizeProcessed, outputHandle);
|
||||
|
||||
if (processedSize != outSizeProcessed)
|
||||
{
|
||||
nlerror("Failed to write %u char to output file '%s'", outSizeProcessed-processedSize, destFileName.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
fclose(outputHandle);
|
||||
|
||||
IAlloc_Free(&allocImp, outBuffer);
|
||||
|
||||
// free 7z context
|
||||
SzArEx_Free(&db, &allocImp);
|
||||
|
||||
#else
|
||||
|
||||
InitCrcTable();
|
||||
|
||||
CArchiveDatabaseEx db;
|
||||
SzArDbExInit(&db);
|
||||
|
||||
// unpack the file using the 7zip API
|
||||
SZ_RESULT res = SzArchiveOpen(&inStr, &db, &allocImp, &allocTempImp);
|
||||
|
||||
if (res != SZ_OK)
|
||||
{
|
||||
nlerror("Failed to open archive file %s", sevenZipFile.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (db.Database.NumFiles != 1)
|
||||
{
|
||||
nlerror("Seven zip archive with more than 1 file are unsupported");
|
||||
return false;
|
||||
}
|
||||
|
||||
UInt32 blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */
|
||||
Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */
|
||||
size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */
|
||||
|
||||
size_t offset = 0;
|
||||
size_t outSizeProcessed = 0;
|
||||
|
||||
// get the first file
|
||||
res = SzExtract(&inStr, &db, 0,
|
||||
&blockIndex, &outBuffer, &outBufferSize,
|
||||
&offset, &outSizeProcessed,
|
||||
&allocImp, &allocTempImp);
|
||||
|
||||
// write the extracted file
|
||||
FILE *outputHandle = fopen(destFileName.c_str(), "wb+");
|
||||
|
||||
if (outputHandle == 0)
|
||||
{
|
||||
nlerror("Can not open output file '%s'", destFileName.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
UInt32 processedSize = (UInt32)fwrite(outBuffer + offset, 1, outSizeProcessed, outputHandle);
|
||||
|
||||
if (processedSize != outSizeProcessed)
|
||||
{
|
||||
nlerror("Failed to write %u char to output file '%s'", outSizeProcessed-processedSize, destFileName.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
fclose(outputHandle);
|
||||
allocImp.Free(outBuffer);
|
||||
|
||||
// free 7z context
|
||||
SzArDbExFree(&db, allocImp.Free);
|
||||
|
||||
#endif
|
||||
|
||||
// ok, all is fine, file is unpacked
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CPatchManager::unpackLZMA(const std::string &lzmaFile, const std::string &destFileName)
|
||||
{
|
||||
#ifdef RZ_USE_SEVENZIP
|
||||
nldebug("unpackLZMA : decompression the lzma file '%s' into output file '%s", lzmaFile.c_str(), destFileName.c_str());
|
||||
|
||||
CIFile inStream(lzmaFile);
|
||||
uint32 inSize = inStream.getFileSize();
|
||||
|
||||
#ifdef RZ_USE_NEW_LZMA
|
||||
|
||||
if (inSize < LZMA_PROPS_SIZE + 8)
|
||||
{
|
||||
nlwarning("Invalid file size, too small file '%s'", lzmaFile.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
// read the compressed file in buffer
|
||||
auto_ptr<uint8> inBuffer = auto_ptr<uint8>(new uint8[inSize]);
|
||||
inStream.serialBuffer(inBuffer.get(), inSize);
|
||||
|
||||
uint8 *pos = inBuffer.get();
|
||||
|
||||
pos += LZMA_PROPS_SIZE;
|
||||
|
||||
// read the output file size
|
||||
size_t fileSize = 0;
|
||||
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
if (pos >= inBuffer.get()+inSize)
|
||||
{
|
||||
nlassert(false);
|
||||
return false;
|
||||
}
|
||||
|
||||
fileSize |= ((UInt64)*pos++) << (8 * i);
|
||||
}
|
||||
|
||||
// allocators
|
||||
ISzAlloc allocImp;
|
||||
allocImp.Alloc = SzAlloc;
|
||||
allocImp.Free = SzFree;
|
||||
|
||||
CLzmaDec state;
|
||||
LzmaDec_Construct(&state);
|
||||
|
||||
// allocate and decode props and probs
|
||||
SRes res = LzmaDec_Allocate(&state, inBuffer.get(), LZMA_PROPS_SIZE, &allocImp);
|
||||
|
||||
if (res != 0)
|
||||
{
|
||||
nlwarning("Failed to decode lzma properies in file '%s'!", lzmaFile.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
// allocate the output buffer
|
||||
auto_ptr<uint8> outBuffer = auto_ptr<uint8>(new uint8[fileSize]);
|
||||
|
||||
// in and out file sizes
|
||||
SizeT outProcessed = fileSize;
|
||||
SizeT inProcessed = (SizeT)(inSize-(pos-inBuffer.get()));
|
||||
|
||||
LzmaDec_Init(&state);
|
||||
|
||||
// decompress the file in memory
|
||||
ELzmaStatus status;
|
||||
res = LzmaDec_DecodeToBuf(&state, (Byte*)outBuffer.get(), &outProcessed, (Byte*)pos, &inProcessed, LZMA_FINISH_ANY, &status);
|
||||
|
||||
// free memory
|
||||
LzmaDec_Free(&state, &allocImp);
|
||||
|
||||
if (res != 0 || outProcessed != fileSize)
|
||||
{
|
||||
nlwarning("Failed to decode lzma file '%s' with status %d", lzmaFile.c_str(), (sint)status);
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
auto_ptr<uint8> inBuffer = auto_ptr<uint8>(new uint8[inSize]);
|
||||
inStream.serialBuffer(inBuffer.get(), inSize);
|
||||
|
||||
CLzmaDecoderState state;
|
||||
|
||||
uint8 *pos = inBuffer.get();
|
||||
|
||||
// read the lzma properties
|
||||
int res = LzmaDecodeProperties(&state.Properties, (unsigned char*) pos, LZMA_PROPERTIES_SIZE);
|
||||
if (res != 0)
|
||||
{
|
||||
nlwarning("Failed to decode lzma properies in file '%s'!", lzmaFile.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (inSize < LZMA_PROPERTIES_SIZE + 8)
|
||||
{
|
||||
nlwarning("Invalid file size, too small file '%s'", lzmaFile.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
// alloc the probs, making sure they are deleted in function exit
|
||||
size_t nbProb = LzmaGetNumProbs(&state.Properties);
|
||||
auto_ptr<CProb> probs = auto_ptr<CProb>(new CProb[nbProb]);
|
||||
state.Probs = probs.get();
|
||||
|
||||
pos += LZMA_PROPERTIES_SIZE;
|
||||
|
||||
// read the output file size
|
||||
size_t fileSize = 0;
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
if (pos >= inBuffer.get()+inSize)
|
||||
{
|
||||
nlassert(false);
|
||||
return false;
|
||||
}
|
||||
fileSize |= ((UInt64)*pos++) << (8 * i);
|
||||
}
|
||||
|
||||
SizeT outProcessed = 0;
|
||||
SizeT inProcessed = 0;
|
||||
|
||||
// allocate the output buffer
|
||||
auto_ptr<uint8> outBuffer = auto_ptr<uint8>(new uint8[fileSize]);
|
||||
|
||||
// decompress the file in memory
|
||||
res = LzmaDecode(&state, (unsigned char*) pos, (SizeT)(inSize-(pos-inBuffer.get())), &inProcessed, (unsigned char*)outBuffer.get(), (SizeT)fileSize, &outProcessed);
|
||||
|
||||
if (res != 0 || outProcessed != fileSize)
|
||||
{
|
||||
nlwarning("Failed to decode lzma file '%s'", lzmaFile.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// store on output buffer
|
||||
COFile outStream(destFileName);
|
||||
outStream.serialBuffer(outBuffer.get(), (uint)fileSize);
|
||||
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
Loading…
Reference in a new issue