twrpDigest refactor
This patch is to refactor twrpDigest using polymorphism and inheritance to use the same call patterns for creating and reading a digest. Now a library. Use SHA2 from libcrypto. SHA2 is default if device has libcrypto. Change string MD5 everywhere to use digest or Digest instead. Updated string tags to digest. Translation will be required. Switch out digest code into a driver class from partitionmanager. SHA2 is better for digest creation due to decreased collision space compared to MD5 and SHA1. See https://en.wikipedia.org/wiki/SHA-2 Change-Id: I74b5546789990b12aa4ce2e389d25f80a3fe213f
This commit is contained in:
committed by
Ethan Yonker
parent
92e2531dca
commit
56cf564658
+9
-10
@@ -51,18 +51,15 @@ LOCAL_SRC_FILES := \
|
||||
fixContexts.cpp \
|
||||
twrpTar.cpp \
|
||||
exclude.cpp \
|
||||
twrpDigest.cpp \
|
||||
digest/md5.c \
|
||||
find_file.cpp \
|
||||
infomanager.cpp
|
||||
|
||||
LOCAL_SRC_FILES += \
|
||||
infomanager.cpp \
|
||||
data.cpp \
|
||||
partition.cpp \
|
||||
partitionmanager.cpp \
|
||||
progresstracking.cpp \
|
||||
twinstall.cpp \
|
||||
twrp-functions.cpp \
|
||||
twrpDigestDriver.cpp \
|
||||
openrecoveryscript.cpp \
|
||||
tarWrite.c
|
||||
|
||||
@@ -112,9 +109,11 @@ LOCAL_C_INCLUDES += \
|
||||
system/core/libsparse \
|
||||
external/zlib
|
||||
|
||||
LOCAL_C_INCLUDES += bionic external/openssl/include
|
||||
LOCAL_C_INCLUDES += bionic
|
||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
|
||||
LOCAL_C_INCLUDES += external/stlport/stlport
|
||||
LOCAL_C_INCLUDES += external/stlport/stlport external/openssl/include
|
||||
else
|
||||
LOCAL_C_INCLUDES += external/boringssl/include
|
||||
endif
|
||||
|
||||
LOCAL_STATIC_LIBRARIES :=
|
||||
@@ -122,10 +121,11 @@ LOCAL_SHARED_LIBRARIES :=
|
||||
|
||||
LOCAL_STATIC_LIBRARIES += libguitwrp
|
||||
LOCAL_SHARED_LIBRARIES += libaosprecovery libz libc libcutils libstdc++ libtar libblkid libminuitwrp libminadbd libmtdutils libminzip libtwadbbu libbootloader_message
|
||||
LOCAL_SHARED_LIBRARIES += libcrecovery
|
||||
LOCAL_SHARED_LIBRARIES += libcrecovery libtwadbbu libtwrpdigest
|
||||
|
||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
|
||||
LOCAL_SHARED_LIBRARIES += libstlport
|
||||
LOCAL_CFLAGS += -DTW_NO_SHA2_LIBRARY
|
||||
endif
|
||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
|
||||
LOCAL_SHARED_LIBRARIES += libmincrypttwrp
|
||||
@@ -159,10 +159,8 @@ ifeq ($(TARGET_USERIMAGES_USE_EXT4), true)
|
||||
#LOCAL_STATIC_LIBRARIES += liblz4
|
||||
endif
|
||||
endif
|
||||
|
||||
LOCAL_C_INCLUDES += external/libselinux/include
|
||||
LOCAL_SHARED_LIBRARIES += libselinux
|
||||
LOCAL_CFLAGS += -g
|
||||
ifneq ($(TARGET_USERIMAGES_USE_EXT4), true)
|
||||
LOCAL_CFLAGS += -DUSE_EXT4
|
||||
LOCAL_C_INCLUDES += system/extras/ext4_utils
|
||||
@@ -682,6 +680,7 @@ include $(commands_recovery_local_path)/injecttwrp/Android.mk \
|
||||
$(commands_recovery_local_path)/simg2img/Android.mk \
|
||||
$(commands_recovery_local_path)/adbbu/Android.mk \
|
||||
$(commands_recovery_local_path)/libpixelflinger/Android.mk \
|
||||
$(commands_recovery_local_path)/twrpDigest/Android.mk \
|
||||
$(commands_recovery_local_path)/attr/Android.mk
|
||||
|
||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
|
||||
|
||||
+3
-4
@@ -2,10 +2,9 @@ LOCAL_PATH:= $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES:= \
|
||||
twrpback.cpp \
|
||||
../twrpDigest.cpp \
|
||||
../digest/md5.c
|
||||
LOCAL_SHARED_LIBRARIES += libstdc++ libz libselinux
|
||||
twrpback.cpp
|
||||
|
||||
LOCAL_SHARED_LIBRARIES += libstdc++ libz libtwrpdigest
|
||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
|
||||
LOCAL_C_INCLUDES += external/stlport/stlport
|
||||
LOCAL_SHARED_LIBRARIES += libstlport
|
||||
|
||||
+15
-23
@@ -34,9 +34,8 @@
|
||||
|
||||
#include "twadbstream.h"
|
||||
#include "twrpback.hpp"
|
||||
#include "../variables.h"
|
||||
#include "../twcommon.h"
|
||||
#include "../twrpDigest.hpp"
|
||||
#include "../twrpDigest/twrpDigest.hpp"
|
||||
#include "../twrpDigest/twrpMD5.hpp"
|
||||
|
||||
twrpback::twrpback(void) {
|
||||
read_fd = 0;
|
||||
@@ -94,7 +93,7 @@ void twrpback::close_restore_fds() {
|
||||
}
|
||||
|
||||
int twrpback::backup(std::string command) {
|
||||
twrpDigest adb_md5;
|
||||
twrpMD5 digest;
|
||||
bool breakloop = false;
|
||||
int bytes = 0, errctr = 0;
|
||||
char result[MAX_ADB_READ];
|
||||
@@ -215,8 +214,7 @@ int twrpback::backup(std::string command) {
|
||||
struct twfilehdr twimghdr;
|
||||
|
||||
adblogwrite("Writing TWIMG\n");
|
||||
adb_md5.initMD5();
|
||||
|
||||
digest.init();
|
||||
memset(&twimghdr, 0, sizeof(twimghdr));
|
||||
memcpy(&twimghdr, cmd, sizeof(cmd));
|
||||
md5fnsize = twimghdr.size;
|
||||
@@ -234,7 +232,7 @@ int twrpback::backup(std::string command) {
|
||||
struct twfilehdr twfilehdr;
|
||||
|
||||
adblogwrite("Writing TWFN\n");
|
||||
adb_md5.initMD5();
|
||||
digest.init();
|
||||
|
||||
ADBSTRUCT_STATIC_ASSERT(sizeof(twfilehdr) == MAX_ADB_READ);
|
||||
|
||||
@@ -269,8 +267,7 @@ int twrpback::backup(std::string command) {
|
||||
totalbytes += bytes;
|
||||
char *writeresult = new char [bytes];
|
||||
memcpy(writeresult, result, bytes);
|
||||
if (adb_md5.updateMD5stream((unsigned char *) writeresult, bytes) == -1)
|
||||
adblogwrite("failed to update md5 stream\n");
|
||||
digest.update((unsigned char *) writeresult, bytes);
|
||||
if (fwrite(writeresult, 1, bytes, adbd_fp) != bytes) {
|
||||
adblogwrite("Error writing backup data to adbd\n");
|
||||
close_backup_fds();
|
||||
@@ -290,8 +287,7 @@ int twrpback::backup(std::string command) {
|
||||
close_backup_fds();
|
||||
return -1;
|
||||
}
|
||||
if (adb_md5.updateMD5stream((unsigned char *) padding, sizeof(padding)) == -1)
|
||||
adblogwrite("failed to update md5 stream\n");
|
||||
digest.update((unsigned char *) padding, sizeof(padding));
|
||||
fflush(adbd_fp);
|
||||
totalbytes = 0;
|
||||
}
|
||||
@@ -299,9 +295,8 @@ int twrpback::backup(std::string command) {
|
||||
AdbBackupFileTrailer md5trailer;
|
||||
|
||||
memset(&md5trailer, 0, sizeof(md5trailer));
|
||||
adb_md5.finalizeMD5stream();
|
||||
|
||||
std::string md5string = adb_md5.createMD5string();
|
||||
std::string md5string = digest.return_digest_string();
|
||||
|
||||
strncpy(md5trailer.start_of_trailer, TWRP, sizeof(md5trailer.start_of_trailer));
|
||||
strncpy(md5trailer.type, MD5TRAILER, sizeof(md5trailer.type));
|
||||
@@ -350,8 +345,7 @@ int twrpback::backup(std::string command) {
|
||||
char *writeresult = new char [bytes];
|
||||
memcpy(writeresult, result, bytes);
|
||||
|
||||
if (adb_md5.updateMD5stream((unsigned char *) writeresult, bytes) == -1)
|
||||
adblogwrite("failed to update md5 stream\n");
|
||||
digest.update((unsigned char *) writeresult, bytes);
|
||||
|
||||
totalbytes += bytes;
|
||||
dataChunkBytes += bytes;
|
||||
@@ -399,7 +393,8 @@ int twrpback::backup(std::string command) {
|
||||
}
|
||||
|
||||
int twrpback::restore(void) {
|
||||
twrpDigest adb_md5;
|
||||
twrpMD5 digest;
|
||||
char cmd[MAX_ADB_READ];
|
||||
char result[MAX_ADB_READ];
|
||||
struct AdbBackupControlType structcmd;
|
||||
int adb_control_twrp_fd, errctr = 0;
|
||||
@@ -591,8 +586,8 @@ int twrpback::restore(void) {
|
||||
struct twfilehdr twimghdr;
|
||||
uint32_t crc, twimghdrcrc;
|
||||
|
||||
digest.init();
|
||||
totalbytes -= sizeof(result);
|
||||
adb_md5.initMD5();
|
||||
adblogwrite("Restoring TWIMG\n");
|
||||
memset(&twimghdr, 0, sizeof(twimghdr));
|
||||
memcpy(&twimghdr, result, sizeof(result));
|
||||
@@ -623,9 +618,9 @@ int twrpback::restore(void) {
|
||||
else if (cmdtype == TWFN) {
|
||||
struct twfilehdr twfilehdr;
|
||||
uint32_t crc, twfilehdrcrc;
|
||||
digest.init();
|
||||
|
||||
totalbytes -= sizeof(result);
|
||||
adb_md5.initMD5();
|
||||
adblogwrite("Restoring TWFN\n");
|
||||
memset(&twfilehdr, 0, sizeof(twfilehdr));
|
||||
memcpy(&twfilehdr, result, sizeof(result));
|
||||
@@ -703,15 +698,13 @@ int twrpback::restore(void) {
|
||||
close_restore_fds();
|
||||
return -1;
|
||||
}
|
||||
adblogwrite("md5 finalize stream\n");
|
||||
adb_md5.finalizeMD5stream();
|
||||
|
||||
AdbBackupFileTrailer md5;
|
||||
|
||||
memset(&md5, 0, sizeof(md5));
|
||||
strncpy(md5.start_of_trailer, TWRP, sizeof(md5.start_of_trailer));
|
||||
strncpy(md5.type, TWMD5, sizeof(md5.type));
|
||||
std::string md5string = adb_md5.createMD5string();
|
||||
std::string md5string = digest.return_digest_string();
|
||||
strncpy(md5.md5, md5string.c_str(), sizeof(md5.md5));
|
||||
|
||||
adblogwrite("Sending MD5Check\n");
|
||||
@@ -726,8 +719,7 @@ int twrpback::restore(void) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (adb_md5.updateMD5stream((unsigned char*)result, sizeof(result)) == -1)
|
||||
adblogwrite("failed to update md5 stream\n");
|
||||
digest.update((unsigned char*)result, sizeof(result));
|
||||
dataChunkBytes += readbytes;
|
||||
|
||||
if (write(adb_write_fd, result, sizeof(result)) < 0) {
|
||||
|
||||
@@ -679,14 +679,14 @@ void DataManager::SetDefaultValues()
|
||||
|
||||
mPersist.SetValue(TW_INSTALL_REBOOT_VAR, "0");
|
||||
mPersist.SetValue(TW_SIGNED_ZIP_VERIFY_VAR, "0");
|
||||
mPersist.SetValue(TW_FORCE_MD5_CHECK_VAR, "0");
|
||||
mPersist.SetValue(TW_DISABLE_FREE_SPACE_VAR, "0");
|
||||
mPersist.SetValue(TW_FORCE_DIGEST_CHECK_VAR, "0");
|
||||
mPersist.SetValue(TW_USE_COMPRESSION_VAR, "0");
|
||||
mPersist.SetValue(TW_TIME_ZONE_VAR, "CST6CDT,M3.2.0,M11.1.0");
|
||||
mPersist.SetValue(TW_GUI_SORT_ORDER, "1");
|
||||
mPersist.SetValue(TW_RM_RF_VAR, "0");
|
||||
mPersist.SetValue(TW_SKIP_MD5_CHECK_VAR, "0");
|
||||
mPersist.SetValue(TW_SKIP_MD5_GENERATE_VAR, "0");
|
||||
mPersist.SetValue(TW_SKIP_DIGEST_CHECK_VAR, "0");
|
||||
mPersist.SetValue(TW_SKIP_DIGEST_GENERATE_VAR, "0");
|
||||
mPersist.SetValue(TW_SDEXT_SIZE, "0");
|
||||
mPersist.SetValue(TW_SWAP_SIZE, "0");
|
||||
mPersist.SetValue(TW_SDPART_FILE_SYSTEM, "ext3");
|
||||
@@ -708,6 +708,14 @@ void DataManager::SetDefaultValues()
|
||||
mData.SetValue("tw_background_thread_running", "0");
|
||||
mData.SetValue(TW_RESTORE_FILE_DATE, "0");
|
||||
mPersist.SetValue("tw_military_time", "0");
|
||||
|
||||
#ifdef TW_INCLUDE_CRYPTO
|
||||
mConst.SetValue(TW_USE_SHA2, "1");
|
||||
mConst.SetValue(TW_NO_SHA2, "0");
|
||||
#else
|
||||
mConst.SetValue(TW_NO_SHA2, "1");
|
||||
#endif
|
||||
|
||||
#ifdef TW_NO_SCREEN_TIMEOUT
|
||||
mConst.SetValue("tw_screen_timeout_secs", "0");
|
||||
mConst.SetValue("tw_no_screen_timeout", "1");
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ extern "C" {
|
||||
#include "blanktimer.hpp"
|
||||
|
||||
// version 2 requires theme to handle power button as action togglebacklight
|
||||
#define TW_THEME_VERSION 2
|
||||
#define TW_THEME_VERSION 3
|
||||
|
||||
#define TW_THEME_VER_ERR -2
|
||||
|
||||
|
||||
@@ -1676,8 +1676,8 @@
|
||||
|
||||
<checkbox>
|
||||
<placement x="%col1_x_right%" y="%row7a_y%"/>
|
||||
<text>{@skip_md5_backup_chk=Skip MD5 generation during backup}</text>
|
||||
<data variable="tw_skip_md5_generate"/>
|
||||
<text>{@skip_digest_backup_chk=Skip Digest generation during backup}</text>
|
||||
<data variable="tw_skip_digest_generate"/>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
@@ -2272,8 +2272,8 @@
|
||||
|
||||
<checkbox>
|
||||
<placement x="%col1_x_right%" y="%row6_y%"/>
|
||||
<text>{@restore_enable_md5_chk=Enable MD5 Verification of Backup Files}</text>
|
||||
<data variable="tw_skip_md5_check"/>
|
||||
<text>{@restore_enable_digest_chk=Enable Digest Verification of Backup Files}</text>
|
||||
<data variable="tw_skip_digest_check"/>
|
||||
</checkbox>
|
||||
|
||||
<button style="main_button_half_width">
|
||||
@@ -2866,11 +2866,11 @@
|
||||
<listitem name="{@disable_backup_space_chk=Disable free space check before backup}">
|
||||
<data variable="tw_disable_free_space"/>
|
||||
</listitem>
|
||||
<listitem name="{@skip_md5_backup_chk=Skip MD5 generation during backup}">
|
||||
<data variable="tw_skip_md5_generate"/>
|
||||
<listitem name="{@skip_digest_backup_chk=Skip Digest generation during backup}">
|
||||
<data variable="tw_skip_digest_generate"/>
|
||||
</listitem>
|
||||
<listitem name="{@restore_enable_md5_chk=Enable MD5 verification of backup files}">
|
||||
<data variable="tw_skip_md5_check"/>
|
||||
<listitem name="{@restore_enable_digest_chk=Enable Digest verification of backup files}">
|
||||
<data variable="tw_skip_digest_check"/>
|
||||
</listitem>
|
||||
<listitem name="{@use24clock_chk=Use 24-hour clock}">
|
||||
<data variable="tw_military_time"/>
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
<string name="enc_disabled">zakázané - pro povolení zadejte heslo</string>
|
||||
<string name="enc_enabled">povolené</string>
|
||||
<string name="enable_backup_comp_chk">Povolit kompresi</string>
|
||||
<string name="skip_md5_backup_chk">Vynechat generovaní MD5 během zálohy</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Vynechat generovaní Digest během zálohy</string>
|
||||
<string name="disable_backup_space_chk">Nekontrolovat volné místo</string>
|
||||
<string name="refresh_sizes_btn">Obnovit velikosti</string>
|
||||
<string name="swipe_backup">Potáhnout pro zálohu</string>
|
||||
@@ -232,7 +232,7 @@
|
||||
<string name="restore_try_decrypt_s">Pokus o dešifrovaní</string>
|
||||
<string name="restore_backup_date">Záloha hotová %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Vybrat oddíl pro obnovu:</string>
|
||||
<string name="restore_enable_md5_chk">Povolit kontrolu MD5 na zálohovaných souborech</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Povolit kontrolu Digest na zálohovaných souborech</string>
|
||||
<string name="restore_complete">Obnova dokočená</string>
|
||||
<string name="swipe_restore">Potáhnout pro obnovu</string>
|
||||
<string name="swipe_restore_s"> Obnovit</string>
|
||||
@@ -458,11 +458,11 @@
|
||||
<string name="mtp_crash">MTP selhalo, MTP nebude spuštěné při startu.</string>
|
||||
<string name="decrypt_success">Úspešně dešifrované s přednastaveným heslem.</string>
|
||||
<string name="unable_to_decrypt">Nelze dešifrovat s přednastaveným heslem. Možná budete muset naformátovat Data.</string>
|
||||
<string name="generating_md51">Generuje se MD5</string>
|
||||
<string name="generating_md52"> *Generuje se Md5...</string>
|
||||
<string name="md5_created"> *MD5 vygenerované.</string>
|
||||
<string name="md5_error"> * chyba MD5!</string>
|
||||
<string name="md5_compute_error"> * chyba při výpočtu MD5.</string>
|
||||
<string name="generating_digest1" version="2">Generuje se Digest</string>
|
||||
<string name="generating_digest2" version="2"> *Generuje se Digest...</string>
|
||||
<string name="digest_created" version="2"> *Digest vygenerované.</string>
|
||||
<string name="digest_error" version="2"> * chyba Digest!</string>
|
||||
<string name="digest_compute_error" version="2"> * chyba při výpočtu Digest.</string>
|
||||
<string name="current_date">(Aktuální datum)</string>
|
||||
<string name="auto_generate">(Generovat automaticky)</string>
|
||||
<string name="unable_to_locate_partition">Nelze najít oddíl \'{1}\' pro výpočet zálohy.</string>
|
||||
@@ -481,8 +481,8 @@
|
||||
<string name="backup_completed">[ZÁLOHA DOKONČENÁ ZA {1} SEKUND]</string>
|
||||
<string name="restore_started">[ZAČÁTEK OBNOVY]</string>
|
||||
<string name="restore_folder">Obnovit adresář: \'{1}\'</string>
|
||||
<string name="verifying_md5">Kontrolování MD5</string>
|
||||
<string name="skip_md5">Vynechání kontroly MD5 na základě uživatelského nastavení.</string>
|
||||
<string name="verifying_digest" version="2">Kontrolování Digest</string>
|
||||
<string name="skip_digest" version="2">Vynechání kontroly Digest na základě uživatelského nastavení.</string>
|
||||
<string name="calc_restore">Počítání detailů obnovy...</string>
|
||||
<string name="restore_read_only">Nelze obnovit {1} -- připojené jen na čtení.</string>
|
||||
<string name="restore_unable_locate">Nelze najít oddíl \'{1}\' pro obnovu.</string>
|
||||
@@ -540,9 +540,9 @@
|
||||
<string name="cannot_resize">Nelze natáhnout {1}.</string>
|
||||
<string name="repair_resize">Opravování {1} před natáhnutím.</string>
|
||||
<string name="unable_resize">Nelze natáhnout {1}.</string>
|
||||
<string name="no_md5_found">Soubor MD5 se nenašel pro \'{1}\'. Prosím zvolte Vypnout kontrolu MD5 během obnovy.</string>
|
||||
<string name="md5_fail_match">MD5 neodpovídá souboru \'{1}\'.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Soubor Digest se nenašel pro \'{1}\'. Prosím zvolte Vypnout kontrolu Digest během obnovy.</string>
|
||||
<string name="digest_fail_match" version="2">Digest neodpovídá souboru \'{1}\'.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Nelze dešifrovat soubor tar \'{1}\'</string>
|
||||
<string name="format_data_msg">Měli by jste restartovat recovery aby jste mohli znova používat /data.</string>
|
||||
<string name="format_data_err">Nelze formátovat pro zrušení šifrování.</string>
|
||||
@@ -563,7 +563,7 @@
|
||||
<string name="backup_folder_set">Adresář záloh nastavený na: \'{1}\'</string>
|
||||
<string name="locate_backup_err">Zálohu \'{1}\' nelze najít</string>
|
||||
<string name="set_restore_opt">Nastavení možností obnovy: \'{1}\':</string>
|
||||
<string name="md5_check_skip">Vynechání kontroly MD5 zapnuté</string>
|
||||
<string name="digest_check_skip" version="2">Vynechání kontroly Digest zapnuté</string>
|
||||
<string name="ors_encrypt_restore_err">Nelze použít OpenRecoveryScript na obnovu zašifrované zálohy.</string>
|
||||
<string name="mounting">Připojení</string>
|
||||
<string name="unmounting">Odpojení</string>
|
||||
@@ -584,7 +584,7 @@
|
||||
<string name="installing_zip">Instalace zip souboru \'{1}\'</string>
|
||||
<string name="select_backup_opt">Nastavení možností zálohy:</string>
|
||||
<string name="comprossion_on">Komprese zapnutá</string>
|
||||
<string name="md5_off">Generovaní MD5 vypnuté</string>
|
||||
<string name="digest_off" version="2">Generovaní Digest vypnuté</string>
|
||||
<string name="backup_fail">Zálohování selhalo</string>
|
||||
<string name="backup_clean">Zálohování selhalo. Čistění adresáře záloh.</string>
|
||||
<string name="running_recovery_commands">Spouštění příkazů recovery</string>
|
||||
@@ -592,15 +592,15 @@
|
||||
<string name="running_ors">Spouštění OpenRecoveryScript</string>
|
||||
<string name="ors_complete">OpenRecoveryScript dokončený</string>
|
||||
<string name="no_updater_binary">Nelze nájít \'{1}\' v souboru zip.</string>
|
||||
<string name="check_for_md5">Kontrola MD5 souboru...</string>
|
||||
<string name="check_for_digest" version="2">Kontrola Digest souboru...</string>
|
||||
<string name="fail_sysmap">Nelze namapovat soubor \'{1}\'</string>
|
||||
<string name="verify_zip_sig">Ověřování podpisu zip souboru...</string>
|
||||
<string name="verify_zip_fail">Ověřování podpisu zip souboru selhalo!</string>
|
||||
<string name="verify_zip_done">Podpis souboru zip úspešně ověřený.</string>
|
||||
<string name="zip_corrupt">Soubor zip je poškozený!</string>
|
||||
<string name="no_md5">Vynechání kontroly MD5: soubor s MD5 nenalezen</string>
|
||||
<string name="md5_fail">MD5 nesedí</string>
|
||||
<string name="md5_match">MD5 sedí</string>
|
||||
<string name="no_digest" version="2">Vynechání kontroly Digest: soubor s Digest nenalezen</string>
|
||||
<string name="digest_fail" version="2">Digest nesedí</string>
|
||||
<string name="digest_match" version="2">Digest sedí</string>
|
||||
<string name="pid_signal">Proces {1} skončil se signálem: {2}</string>
|
||||
<string name="pid_error">Proces {1} skončil s CHYBOU: {2}</string>
|
||||
<string name="install_dumlock">Instalování HTC Dumlock do systému...</string>
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
<string name="enc_disabled">deaktiviert - Passwort festlegen um zu aktivieren</string>
|
||||
<string name="enc_enabled">aktiviert</string>
|
||||
<string name="enable_backup_comp_chk">Komprimierung aktivieren</string>
|
||||
<string name="skip_md5_backup_chk">MD5-Erstellung für die Sicherung überspringen</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Digest-Erstellung für die Sicherung überspringen</string>
|
||||
<string name="disable_backup_space_chk">Prüfung auf freien Speicher deaktivieren</string>
|
||||
<string name="current_boot_slot">Aktiver Slot: %tw_active_slot%</string>
|
||||
<string name="boot_slot_a">Slot A</string>
|
||||
@@ -253,7 +253,7 @@
|
||||
<string name="restore_try_decrypt_s">Versuche Entschlüsselung</string>
|
||||
<string name="restore_backup_date">Sicherung am %tw_restore_file_date% erstellt</string>
|
||||
<string name="restore_sel_part">Wiederherzustellende Partitionen:</string>
|
||||
<string name="restore_enable_md5_chk">MD5-Prüfung von Sicherungs-Dateien aktivieren</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Digest-Prüfung von Sicherungs-Dateien aktivieren</string>
|
||||
<string name="restore_complete">Wiederherstellen abgeschlossen</string>
|
||||
<string name="swipe_restore">Sicherung wiederherstellen</string>
|
||||
<string name="swipe_restore_s">Wiederherstellen</string>
|
||||
@@ -494,12 +494,12 @@
|
||||
<string name="mtp_crash">MTP abgestürzt, MTP wird künftig während Bootvorgang nicht gestartet.</string>
|
||||
<string name="decrypt_success">Erfolgreich mit dem Standardpasswort entschlüsselt.</string>
|
||||
<string name="unable_to_decrypt">Entschlüsselung mit Standardpasswort nicht möglich. Eventuell muss die Daten-Partition formatiert werden.</string>
|
||||
<string name="generating_md51">Generiere MD5</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * generiere MD5...</string>
|
||||
<string name="md5_created"> * MD5 erstellt.</string>
|
||||
<string name="md5_error"> * MD5-Fehler!</string>
|
||||
<string name="md5_compute_error"> * Fehler bei MD5-Berechnung.</string>
|
||||
<string name="generating_digest1" version="2">Generiere Digest</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="2"> * generiere Digest...</string>
|
||||
<string name="digest_created" version="2"> * Digest erstellt.</string>
|
||||
<string name="digest_error" version="2"> * Digest-Fehler!</string>
|
||||
<string name="digest_compute_error" version="2"> * Fehler bei Digest-Berechnung.</string>
|
||||
<string name="current_date">(Aktuelles Datum)</string>
|
||||
<string name="auto_generate">(Automatisch generiert)</string>
|
||||
<string name="unable_to_locate_partition">Kann '{1}' Partition für Sicherungsberechnungen nicht finden.</string>
|
||||
@@ -520,8 +520,8 @@
|
||||
<string name="restore_folder">Wiederherstellen aus Ordner: '{1}'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} fertiggestellt ({2} Sekunden)]</string>
|
||||
<string name="verifying_md5">Überprüfe MD5</string>
|
||||
<string name="skip_md5">Überspringe MD5-Prüfung aufgrund Benutzereinstellungen.</string>
|
||||
<string name="verifying_digest" version="2">Überprüfe Digest</string>
|
||||
<string name="skip_digest" version="2">Überspringe Digest-Prüfung aufgrund Benutzereinstellungen.</string>
|
||||
<string name="calc_restore">Berechne Wiederherstellungsinformationen...</string>
|
||||
<string name="restore_read_only">Kann {1} nicht wiederherstellen -- Partition schreibgeschützt.</string>
|
||||
<string name="restore_unable_locate">Kann wiederherzustellende '{1}'-Partition nicht finden.</string>
|
||||
@@ -584,9 +584,9 @@
|
||||
<string name="cannot_resize">Größe von {1} kann nicht geändert werden.</string>
|
||||
<string name="repair_resize">{1} wird repariert. Danach wird die Größe geändert.</string>
|
||||
<string name="unable_resize">Größe von {1} kann nicht geändert werden.</string>
|
||||
<string name="no_md5_found">Keine MD5-Datei für '{1}' gefunden. Bitte MD5-Prüfung für Wiederherstellung deaktivieren.</string>
|
||||
<string name="md5_fail_match">MD5-Prüfung für '{1}' fehlgeschlagen.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Keine Digest-Datei für '{1}' gefunden. Bitte Digest-Prüfung für Wiederherstellung deaktivieren.</string>
|
||||
<string name="digest_fail_match" version="2">Digest-Prüfung für '{1}' fehlgeschlagen.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">TAR-Datei '{1}' konnte nicht entschlüsselt werden.</string>
|
||||
<string name="format_data_msg">Ein Neustart von TWRP kann notwendig sein, damit /data wieder verwendet werden kann.</string>
|
||||
<string name="format_data_err">Formatierung zum Entfernen der Verschlüsselung kann nicht durchgeführt werden.</string>
|
||||
@@ -608,7 +608,7 @@
|
||||
<string name="backup_folder_set"> * Ordner für Sicherung: {1}</string>
|
||||
<string name="locate_backup_err">Sicherung '{1}' nicht gefunden</string>
|
||||
<string name="set_restore_opt">Setze Wiederherstellungs-Optionen: '{1}':</string>
|
||||
<string name="md5_check_skip">MD5-Prüfung ist deaktiviert</string>
|
||||
<string name="digest_check_skip" version="2">Digest-Prüfung ist deaktiviert</string>
|
||||
<string name="ors_encrypt_restore_err">Eine verschlüsselte Sicherung kann nicht per OpenRecoveryScript wiederhergestellt werden.</string>
|
||||
<string name="mounting">Einhängen</string>
|
||||
<string name="unmounting">Auswerfen</string>
|
||||
@@ -629,7 +629,7 @@
|
||||
<string name="installing_zip">Installiere Zip '{1}'</string>
|
||||
<string name="select_backup_opt">Setze Sicherungs-Optionen:</string>
|
||||
<string name="compression_on">Komprimierung ist aktiviert</string>
|
||||
<string name="md5_off">MD5-Generierung ist deaktiviert</string>
|
||||
<string name="digest_off" version="2">Digest-Generierung ist deaktiviert</string>
|
||||
<string name="backup_fail">Sicherung fehlgeschlagen</string>
|
||||
<string name="backup_clean">Sicherung fehlgeschlagen, bereinige Sicherungs-Verzeichnis</string>
|
||||
<string name="running_recovery_commands">Führe Recovery-Befehle aus</string>
|
||||
@@ -637,15 +637,15 @@
|
||||
<string name="running_ors">Führe OpenRecoveryScript aus</string>
|
||||
<string name="ors_complete">OpenRecoveryScript ausgeführt</string>
|
||||
<string name="invalid_zip_format">Invalid zip file format!</string>
|
||||
<string name="check_for_md5">Suche nach MD5-Datei...</string>
|
||||
<string name="check_for_digest" version="2">Suche nach Digest-Datei...</string>
|
||||
<string name="fail_sysmap">'{1}' kann nicht zugeordnet werden</string>
|
||||
<string name="verify_zip_sig">Überprüfe ZIP-Signatur...</string>
|
||||
<string name="verify_zip_fail">Prüfung der ZIP-Signatur fehlgeschlagen!</string>
|
||||
<string name="verify_zip_done">Prüfung der ZIP-Signatur erfolgreich.</string>
|
||||
<string name="zip_corrupt">ZIP-Datei ist beschädigt!</string>
|
||||
<string name="no_md5">MD5-Prüfung übersprungen: keine MD5-Datei gefunden</string>
|
||||
<string name="md5_fail">MD5 stimmt nicht überein</string>
|
||||
<string name="md5_match">MD5 stimmt überein</string>
|
||||
<string name="no_digest" version="2">Digest-Prüfung übersprungen: keine Digest-Datei gefunden</string>
|
||||
<string name="digest_fail" version="2">Digest stimmt nicht überein</string>
|
||||
<string name="digest_match" version="2">Digest stimmt überein</string>
|
||||
<string name="pid_signal">Prozess {1} endete mit Meldung: {2}</string>
|
||||
<string name="pid_error">Prozess {1} endete mit FEHLER: {2}</string>
|
||||
<string name="install_dumlock">Installiere HTC Dumlock in System-Partition...</string>
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
<string name="enc_disabled">απενεργοποιημένο - ορίσετε έναν κωδικό για να ενεργοποιήσετε</string>
|
||||
<string name="enc_enabled">ενεργοποιημένο</string>
|
||||
<string name="enable_backup_comp_chk">Ενεργοποιήσετε τη συμπίεση</string>
|
||||
<string name="skip_md5_backup_chk">Παράλ. δημιουργ. MD5 κατά την δημ. αντιγρ. ασφ.</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Παράλ. δημιουργ. Digest κατά την δημ. αντιγρ. ασφ.</string>
|
||||
<string name="disable_backup_space_chk">Απενεργοποίηση Ελέγχου Ελεύθερου Χώρου</string>
|
||||
<string name="refresh_sizes_btn">Ανανέωση Μεγεθών</string>
|
||||
<string name="swipe_backup">Σύρετε για δημιουργ. Αντιγρ. Ασφαλ.</string>
|
||||
@@ -230,7 +230,7 @@
|
||||
<string name="restore_try_decrypt_s">Προσπάθεια αποκρυπτογράφησης</string>
|
||||
<string name="restore_backup_date">Το Αντίγραφο ασφαλείας δημιουργήθηκε στο %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Επιλέξτε Τομείς για Επαναφορά:</string>
|
||||
<string name="restore_enable_md5_chk">Ενεργ. την επαλήθευση MD5 στα αντίγρ. ασφαλ.</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Ενεργ. την επαλήθευση Digest στα αντίγρ. ασφαλ.</string>
|
||||
<string name="restore_complete">Η Eπαναφορά ολοκληρώθηκε</string>
|
||||
<string name="swipe_restore">Σύρετε για Eπαναφορά</string>
|
||||
<string name="swipe_restore_s"> Επαναφορά</string>
|
||||
@@ -467,11 +467,11 @@
|
||||
<string name="mtp_crash">MTP συνετρίβη, δεν αρχίζει το MTP κατά την εκκίνηση.</string>
|
||||
<string name="decrypt_success">Αποκρυπτογραφήθηκε με επιτυχία με τον προεπιλεγμένο κωδικό.</string>
|
||||
<string name="unable_to_decrypt">Δεν είναι δυνατή η αποκρυπτογράφηση με τον προεπιλεγμένο κωδικός. Ίσως χρειαστεί να εκτελέσετε εκκαθάριση δεδομένων.</string>
|
||||
<string name="generating_md51">Δημιουργία MD5</string>
|
||||
<string name="generating_md52"> * Δημιουργία md5...</string>
|
||||
<string name="md5_created"> * MD5 δημιουργήθηκε.</string>
|
||||
<string name="md5_error"> * Σφάλμα MD5!</string>
|
||||
<string name="md5_compute_error"> * Σφάλμα υπολογισμού MD5.</string>
|
||||
<string name="generating_digest1" version="2">Δημιουργία Digest</string>
|
||||
<string name="generating_digest2" version="2"> * Δημιουργία Digest...</string>
|
||||
<string name="digest_created" version="2"> * Digest δημιουργήθηκε.</string>
|
||||
<string name="digest_error" version="2"> * Σφάλμα Digest!</string>
|
||||
<string name="digest_compute_error" version="2"> * Σφάλμα υπολογισμού Digest.</string>
|
||||
<string name="current_date">(Τρέχουσα ημερομηνία)</string>
|
||||
<string name="auto_generate">(Αυτόματη δημιουργία)</string>
|
||||
<string name="unable_to_locate_partition">Δεν μπορεί να εντοπιστεί ο '{1}' τομέας για υπολογισμούς αντ. ασφαλ.</string>
|
||||
@@ -491,8 +491,8 @@
|
||||
<string name="restore_started">[ΕΠΑΝΑΦΟΡΑ ΞΕΚΙΗΣΕ]</string>
|
||||
<string name="restore_folder">Επαναφορά φακέλου: '{1}'</string>
|
||||
<string name="restore_part_done">[{1} ολοκληρώθηκαν ({2} δευτερόλεπτα)]</string>
|
||||
<string name="verifying_md5">Επαλήθευση MD5</string>
|
||||
<string name="skip_md5">Παράλειψη ελέγχου MD5 βάση τις ρυθμίσεις χρήστη.</string>
|
||||
<string name="verifying_digest" version="2">Επαλήθευση Digest</string>
|
||||
<string name="skip_digest" version="2">Παράλειψη ελέγχου Digest βάση τις ρυθμίσεις χρήστη.</string>
|
||||
<string name="calc_restore">Υπολογισμός λεπτομερειών επαναφοράς...</string>
|
||||
<string name="restore_read_only">Δεν είναι δυνατό να επαναφέρετε {1} -- τοποθέτηση μόνο για ανάγνωση.</string>
|
||||
<string name="restore_unable_locate">Δεν εντοπίζετε το διαμέρισμα «{1}» για αποκατάσταση.</string>
|
||||
@@ -550,9 +550,9 @@
|
||||
<string name="cannot_resize">Δεν μπορεί να αλλαχθεί το μέγεθος {1}.</string>
|
||||
<string name="repair_resize">Επιδιόρθωση {1} πριν την αλλαγή μεγέθους.</string>
|
||||
<string name="unable_resize">Δεν είναι δυνατή η αλλαγή μεγέθους {1}.</string>
|
||||
<string name="no_md5_found">Δεν βρέθηκε MD5 αρχείο για το '{1}'. Παρακαλώ απεπηλέξτε την επαλήθευση MD5 για επαναφορά.</string>
|
||||
<string name="md5_fail_match">Το MD5 απέτυχε να ταυτίσει με το '{1}'.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Δεν βρέθηκε Digest αρχείο για το '{1}'. Παρακαλώ απεπηλέξτε την επαλήθευση Digest για επαναφορά.</string>
|
||||
<string name="digest_fail_match" version="2">Το Digest απέτυχε να ταυτίσει με το '{1}'.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Αποτυχία αποκρυπτογράφησης του αρχείου tar '{1}'</string>
|
||||
<string name="format_data_msg">Ίσως χρειαστεί να επανεκκινήσετε στο recovery για να ξαναχρησιμοποιήσετε το /data.</string>
|
||||
<string name="format_data_err">Αδύνατη η διαμόρφωση για να καταργήσετε την κρυπτογράφηση.</string>
|
||||
@@ -573,7 +573,7 @@
|
||||
<string name="backup_folder_set">Φάκελος αντιγρ. ασφ. ορίστηκε το '{1}'</string>
|
||||
<string name="locate_backup_err">Δεν μπόρεσενα εντοπιστεί το αντιγρ. ασφ. '{1}'</string>
|
||||
<string name="set_restore_opt">Ρύθμιση επιλογών επαναφοράς: '{1}':</string>
|
||||
<string name="md5_check_skip">Η παράλειψη ελέγχου MD5 είναι ενεργή</string>
|
||||
<string name="digest_check_skip" version="2">Η παράλειψη ελέγχου Digest είναι ενεργή</string>
|
||||
<string name="ors_encrypt_restore_err">Δεν μπορεί να χρησιμοποιηθεί το OpenRecoveryScript για να επαναφέρετε ένα κρυπτογραφημένο αντίγραφο ασφαλείας.</string>
|
||||
<string name="mounting">Προσάρτηση</string>
|
||||
<string name="unmounting">Αποπροσάρτηση</string>
|
||||
@@ -594,7 +594,7 @@
|
||||
<string name="installing_zip">Εγκατάσταση αρχείου zip '{1}'</string>
|
||||
<string name="select_backup_opt">Ρύθμιση της δημιουργίας αντιγράφων ασφαλείας:</string>
|
||||
<string name="compression_on">Η συμπίεση είναι ενεργή</string>
|
||||
<string name="md5_off">Η δημιουργία MD5 είναι απενεργοποιημένη</string>
|
||||
<string name="digest_off" version="2">Η δημιουργία Digest είναι απενεργοποιημένη</string>
|
||||
<string name="backup_fail">Η δημιουργία Αντίγραφου Ασφαλείας απέτυχε</string>
|
||||
<string name="backup_clean">Η δημιουργία Αντίγρ. Ασφαλ. απέτυχε. Εκκαθάριση φακέλου.</string>
|
||||
<string name="running_recovery_commands">Εκτέλεση Eντολών Recovery</string>
|
||||
@@ -602,15 +602,15 @@
|
||||
<string name="running_ors">Εκτέλεση OpenRecoveryScript</string>
|
||||
<string name="ors_complete">OpenRecoveryScript Ολοκληρώθηκε</string>
|
||||
<string name="no_updater_binary">Δεν βρέθηκε το '{1}' στο αρχείο zip.</string>
|
||||
<string name="check_for_md5">Έλεγχος για MD5 αρχείο...</string>
|
||||
<string name="check_for_digest" version="2">Έλεγχος για Digest αρχείο...</string>
|
||||
<string name="fail_sysmap">Αποτυχία αντιστ. αρχείου '{1}'</string>
|
||||
<string name="verify_zip_sig">Επαλήθευση υπογραφής zip...</string>
|
||||
<string name="verify_zip_fail">Η επαλήθευση της υπογραφής zip απέτυχε!</string>
|
||||
<string name="verify_zip_done">Η επαλήθευση της υπογραφής zip ολοκληρώθηκε.</string>
|
||||
<string name="zip_corrupt">Το αρχείο zip είναι κατεστραμμένο!</string>
|
||||
<string name="no_md5">Παράλειψη ελέγχου MD5: δεν βρέθηκε αρχείο MD5</string>
|
||||
<string name="md5_fail">Τα MD5 δεν ταυτίζονται</string>
|
||||
<string name="md5_match">Τα MD5 ταυτίζονται</string>
|
||||
<string name="no_digest" version="2">Παράλειψη ελέγχου Digest: δεν βρέθηκε αρχείο Digest</string>
|
||||
<string name="digest_fail" version="2">Τα Digest δεν ταυτίζονται</string>
|
||||
<string name="digest_match" version="2">Τα Digest ταυτίζονται</string>
|
||||
<string name="pid_signal">{1} διαδικασία τερματίστηκε με σήμα: {2}</string>
|
||||
<string name="pid_error">{1} διαδικασία τερματίστηκε με ΣΦΑΛΜΑ: {2}</string>
|
||||
<string name="install_dumlock">Εγκατάσταση HTC Dumlock στο σύστημα...</string>
|
||||
@@ -649,4 +649,4 @@
|
||||
<string name="up_a_level">(προηγ. επίπεδο)</string>
|
||||
<string name="install_reboot">Επανεκκίνηση σε 5 δευτ.</string>
|
||||
</resources>
|
||||
</language>
|
||||
</language>
|
||||
|
||||
@@ -215,7 +215,8 @@
|
||||
<string name="enc_disabled">disabled - set a password to enable</string>
|
||||
<string name="enc_enabled">enabled</string>
|
||||
<string name="enable_backup_comp_chk">Enable compression</string>
|
||||
<string name="skip_md5_backup_chk">Skip MD5 generation during backup</string>
|
||||
<string name="disable_backup_space_chk" version="2">Disable free space check before backup</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Skip Digest generation during backup</string>
|
||||
<string name="disable_backup_space_chk" version="2">Disable free space check before backup</string>
|
||||
<string name="current_boot_slot">Current Slot: %tw_active_slot%</string>
|
||||
<string name="boot_slot_a">Slot A</string>
|
||||
@@ -253,7 +254,7 @@
|
||||
<string name="restore_try_decrypt_s">Trying Decryption</string>
|
||||
<string name="restore_backup_date">Backup made on %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Select Partitions to Restore:</string>
|
||||
<string name="restore_enable_md5_chk">Enable MD5 Verification of Backup Files</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Enable Digest Verification of Backup Files</string>
|
||||
<string name="restore_complete">Restore Complete</string>
|
||||
<string name="swipe_restore">Swipe to Restore</string>
|
||||
<string name="swipe_restore_s"> Restore</string>
|
||||
@@ -495,12 +496,12 @@
|
||||
<string name="mtp_crash">MTP Crashed, not starting MTP on boot.</string>
|
||||
<string name="decrypt_success">Successfully decrypted with default password.</string>
|
||||
<string name="unable_to_decrypt">Unable to decrypt with default password. You may need to perform a Format Data.</string>
|
||||
<string name="generating_md51">Generating MD5</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * Generating md5...</string>
|
||||
<string name="md5_created"> * MD5 Created.</string>
|
||||
<string name="md5_error"> * MD5 Error!</string>
|
||||
<string name="md5_compute_error"> * Error computing MD5.</string>
|
||||
<string name="generating_digest1" version="2">Generating Digest</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="2"> * Generating digest...</string>
|
||||
<string name="digest_created" version="2"> * Digest Created.</string>
|
||||
<string name="digest_error" version="2"> * Digest Error!</string>
|
||||
<string name="digest_compute_error" version="2"> * Error computing Digest.</string>
|
||||
<string name="current_date">(Current Date)</string>
|
||||
<string name="auto_generate">(Auto Generate)</string>
|
||||
<string name="unable_to_locate_partition">Unable to locate '{1}' partition for backup calculations.</string>
|
||||
@@ -521,8 +522,8 @@
|
||||
<string name="restore_folder">Restore folder: '{1}'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} done ({2} seconds)]</string>
|
||||
<string name="verifying_md5">Verifying MD5</string>
|
||||
<string name="skip_md5">Skipping MD5 check based on user setting.</string>
|
||||
<string name="verifying_digest" version="2">Verifying Digest</string>
|
||||
<string name="skip_digest" version="2">Skipping Digest check based on user setting.</string>
|
||||
<string name="calc_restore">Calculating restore details...</string>
|
||||
<string name="restore_read_only">Cannot restore {1} -- mounted read only.</string>
|
||||
<string name="restore_unable_locate">Unable to locate '{1}' partition for restoring.</string>
|
||||
@@ -585,9 +586,9 @@
|
||||
<string name="cannot_resize">Cannot resize {1}.</string>
|
||||
<string name="repair_resize">Repairing {1} before resizing.</string>
|
||||
<string name="unable_resize">Unable to resize {1}.</string>
|
||||
<string name="no_md5_found">No md5 file found for '{1}'. Please unselect Enable MD5 verification to restore.</string>
|
||||
<string name="md5_fail_match">MD5 failed to match on '{1}'.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">No digest file found for '{1}'. Please unselect Enable Digest verification to restore.</string>
|
||||
<string name="digest_fail_match" version="2">Digest failed to match on '{1}'.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Failed to decrypt tar file '{1}'</string>
|
||||
<string name="format_data_msg">You may need to reboot recovery to be able to use /data again.</string>
|
||||
<string name="format_data_err">Unable to format to remove encryption.</string>
|
||||
@@ -609,7 +610,7 @@
|
||||
<string name="backup_folder_set">Backup folder set to '{1}'</string>
|
||||
<string name="locate_backup_err">Unable to locate backup '{1}'</string>
|
||||
<string name="set_restore_opt">Setting restore options: '{1}':</string>
|
||||
<string name="md5_check_skip">MD5 check skip is on</string>
|
||||
<string name="digest_check_skip" version="2">Digest check skip is on</string>
|
||||
<string name="ors_encrypt_restore_err">Unable to use OpenRecoveryScript to restore an encrypted backup.</string>
|
||||
<string name="mounting">Mounting</string>
|
||||
<string name="unmounting">Unmounting</string>
|
||||
@@ -630,23 +631,23 @@
|
||||
<string name="installing_zip">Installing zip file '{1}'</string>
|
||||
<string name="select_backup_opt">Setting backup options:</string>
|
||||
<string name="compression_on">Compression is on</string>
|
||||
<string name="md5_off">MD5 Generation is off</string>
|
||||
<string name="digest_off" version="2">Digest Generation is off</string>
|
||||
<string name="backup_fail">Backup Failed</string>
|
||||
<string name="backup_clean">Backup Failed. Cleaning Backup Folder.</string>
|
||||
<string name="running_recovery_commands">Running Recovery Commands</string>
|
||||
<string name="recovery_commands_complete">Recovery Commands Complete</string>
|
||||
<string name="running_ors">Running OpenRecoveryScript</string>
|
||||
<string name="ors_complete">OpenRecoveryScript Complete</string>
|
||||
<string name="check_for_digest" version="2">Checking for Digest file...</string>
|
||||
<string name="invalid_zip_format">Invalid zip file format!</string>
|
||||
<string name="check_for_md5">Checking for MD5 file...</string>
|
||||
<string name="fail_sysmap">Failed to map file '{1}'</string>
|
||||
<string name="verify_zip_sig">Verifying zip signature...</string>
|
||||
<string name="verify_zip_fail">Zip signature verification failed!</string>
|
||||
<string name="verify_zip_done">Zip signature verified successfully.</string>
|
||||
<string name="zip_corrupt">Zip file is corrupt!</string>
|
||||
<string name="no_md5">Skipping MD5 check: no MD5 file found</string>
|
||||
<string name="md5_fail">MD5 does not match</string>
|
||||
<string name="md5_match">MD5 matched</string>
|
||||
<string name="no_digest" version="2">Skipping Digest check: no Digest file found</string>
|
||||
<string name="digest_fail" version="2">Digest does not match</string>
|
||||
<string name="digest_match" version="2">Digest matched</string>
|
||||
<string name="pid_signal">{1} process ended with signal: {2}</string>
|
||||
<string name="pid_error">{1} process ended with ERROR: {2}</string>
|
||||
<string name="install_dumlock">Installing HTC Dumlock to system...</string>
|
||||
@@ -691,6 +692,7 @@
|
||||
<string name="partition_not_found">path: {1} not found in partititon list</string>
|
||||
<string name="copy_kernel_log">Copied kernel log to {1}</string>
|
||||
<string name="include_kernel_log">Include Kernel Log</string>
|
||||
<string name="sha2_chk">Use SHA2 for hashing</string>
|
||||
<string name="unable_set_boot_slot">Error changing bootloader boot slot to {1}</string>
|
||||
</resources>
|
||||
</language>
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
<string name="enc_disabled">desactivado - establezca una contraseña para activar</string>
|
||||
<string name="enc_enabled">activado</string>
|
||||
<string name="enable_backup_comp_chk">Habilitar compresión</string>
|
||||
<string name="skip_md5_backup_chk">Saltar generación MD5 durante respaldo</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Saltar generación Digest durante respaldo</string>
|
||||
<string name="disable_backup_space_chk">Desactivar comprobación de Espacio Libre</string>
|
||||
<string name="refresh_sizes_btn">Refrescar Tamaños</string>
|
||||
<string name="swipe_backup">Desliza para Respaldar</string>
|
||||
@@ -233,7 +233,7 @@
|
||||
<string name="restore_try_decrypt_s">Intentando Desencriptarla</string>
|
||||
<string name="restore_backup_date">Copia de seguridad creada en %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Selecciona las Particiones para Restaurar:</string>
|
||||
<string name="restore_enable_md5_chk">Activar Verificación MD5 de la copia de seguridad</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Activar Verificación Digest de la copia de seguridad</string>
|
||||
<string name="restore_complete">Restauración Completa</string>
|
||||
<string name="swipe_restore">Desliza para Restaurar</string>
|
||||
<string name="swipe_restore_s"> Restaurar</string>
|
||||
@@ -470,11 +470,11 @@
|
||||
<string name="mtp_crash">MTP falló, no se iniciará MTP en el arranque.</string>
|
||||
<string name="decrypt_success">Datos descifrados exitosamente, nuevo dispositivo de bloque: \'{1}\'</string>
|
||||
<string name="unable_to_decrypt">Incapaz de descifrar con la contraseña actual. Quizás necesites realizar un Formateo de Datos.</string>
|
||||
<string name="generating_md51">Generando MD5</string>
|
||||
<string name="generating_md52"> * Generando md5...</string>
|
||||
<string name="md5_created"> * MD5 Creado.</string>
|
||||
<string name="md5_error"> * ¡MD5 Error!</string>
|
||||
<string name="md5_compute_error"> * Error creando MD5.</string>
|
||||
<string name="generating_digest1" version="2">Generando Digest</string>
|
||||
<string name="generating_digest2" version="2"> * Generando Digest...</string>
|
||||
<string name="digest_created" version="2"> * Digest Creado.</string>
|
||||
<string name="digest_error" version="2"> * ¡Digest Error!</string>
|
||||
<string name="digest_compute_error" version="2"> * Error creando Digest.</string>
|
||||
<string name="current_date">(Fecha Actual)</string>
|
||||
<string name="auto_generate">(Autogenerar)</string>
|
||||
<string name="unable_to_locate_partition">Incapaz de localizar la partición’{1}’ para los cálculos de la copia de seguridad.</string>
|
||||
@@ -494,8 +494,8 @@
|
||||
<string name="restore_started">[RESTAURACIÓN COMENZADA]</string>
|
||||
<string name="restore_folder">Restaurar carpeta: \'{1}\'</string>
|
||||
<string name="restore_part_done">[{1} completado ({2} segundos)]</string>
|
||||
<string name="verifying_md5">Verificando MD5</string>
|
||||
<string name="skip_md5">Saltando checkeo de MD5 basado en ajustes del usuario.</string>
|
||||
<string name="verifying_digest" version="2">Verificando Digest</string>
|
||||
<string name="skip_digest" version="2">Saltando checkeo de Digest basado en ajustes del usuario.</string>
|
||||
<string name="calc_restore">Calculando detalles de la restauración...</string>
|
||||
<string name="restore_read_only">No se puede restaurar {1} -- montado en modo leer.</string>
|
||||
<string name="restore_unable_locate">Incapaz de localizar la partición \'{1}\' para la restauración.</string>
|
||||
@@ -553,9 +553,9 @@
|
||||
<string name="cannot_resize">No se puede cambiar el tamaño de {1}.</string>
|
||||
<string name="repair_resize">Reparando {1} antes de cambiar de tamaño.</string>
|
||||
<string name="unable_resize">Incapaz de cambiar el tamaño de archivo de {1}.</string>
|
||||
<string name="no_md5_found">No se encuentra archivo md5 para \'{1}\'. Por favor, deselecciona Activar verificación de MD5 para restaurar.</string>
|
||||
<string name="md5_fail_match">MD5 no coincide en \'{1}\'.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">No se encuentra archivo Digest para \'{1}\'. Por favor, deselecciona Activar verificación de Digest para restaurar.</string>
|
||||
<string name="digest_fail_match" version="2">Digest no coincide en \'{1}\'.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Fallo al desencriptar el archivo tar '{1}'</string>
|
||||
<string name="format_data_msg">Quizás necesites reiniciar el recovery para ser capaz de usar /data de nuevo.</string>
|
||||
<string name="format_data_err">Incapaz de formatear para remover encriptación.</string>
|
||||
@@ -576,7 +576,7 @@
|
||||
<string name="backup_folder_set">Copia de Seguridad establecida en '{1}'</string>
|
||||
<string name="locate_backup_err">Incapaz de localizar copia de seguridad \'{1}\'</string>
|
||||
<string name="set_restore_opt">Ajustando opciones de restauración: \'{1}\':</string>
|
||||
<string name="md5_check_skip">El salto de checkeo de MD5 está activado</string>
|
||||
<string name="digest_check_skip" version="2">El salto de checkeo de Digest está activado</string>
|
||||
<string name="ors_encrypt_restore_err">Incapaz de usar OpenRecoveryScript para restaurar una copia de seguridad encriptada.</string>
|
||||
<string name="mounting">Montando</string>
|
||||
<string name="unmounting">Desmontando</string>
|
||||
@@ -597,7 +597,7 @@
|
||||
<string name="installing_zip">Instalando archivo zip '{1}'</string>
|
||||
<string name="select_backup_opt">Ajustando opciones de copia de seguridad:</string>
|
||||
<string name="compression_on">La compresión está activada</string>
|
||||
<string name="md5_off">La generación de MD5 está desactivada</string>
|
||||
<string name="digest_off" version="2">La generación de Digest está desactivada</string>
|
||||
<string name="backup_fail">Copia de seguridad fallida</string>
|
||||
<string name="backup_clean">La copia de seguridad falló. Limpiando carpeta de la copia de seguridad.</string>
|
||||
<string name="running_recovery_commands">Corriendo Comandos de Recovery</string>
|
||||
@@ -605,15 +605,15 @@
|
||||
<string name="running_ors">Corriendo OpenRecoveryScript</string>
|
||||
<string name="ors_complete">OpenRecoveryScript Completo</string>
|
||||
<string name="no_updater_binary">No fue posible encontrar \'{1}\' en el archivo zip.</string>
|
||||
<string name="check_for_md5">Buscando archivo MD5...</string>
|
||||
<string name="check_for_digest" version="2">Buscando archivo Digest...</string>
|
||||
<string name="fail_sysmap">Error al mapear archivo \'{1}\'</string>
|
||||
<string name="verify_zip_sig">Verificando firma de zip…</string>
|
||||
<string name="verify_zip_fail">¡Verificación de firma de Zip fallida!</string>
|
||||
<string name="verify_zip_done">Firma de Zip verificada exitosamente.</string>
|
||||
<string name="zip_corrupt">¡Este archivo Zip es corrupto!</string>
|
||||
<string name="no_md5">Saltando verificación de MD5: no se ha encontrado archivo MD5</string>
|
||||
<string name="md5_fail">MD5 no coincide</string>
|
||||
<string name="md5_match">MD5 coincide</string>
|
||||
<string name="no_digest" version="2">Saltando verificación de Digest: no se ha encontrado archivo Digest</string>
|
||||
<string name="digest_fail" version="2">Digest no coincide</string>
|
||||
<string name="digest_match" version="2">Digest coincide</string>
|
||||
<string name="pid_signal">Proceso {1} terminó con señal: {2}</string>
|
||||
<string name="pid_error">Proceso {1} terminó con ERROR: {2}</string>
|
||||
<string name="install_dumlock">Instalando HTC Dumlock en el sistema…</string>
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
<string name="enc_disabled">désactivé - définir un mot de passe pour activer</string>
|
||||
<string name="enc_enabled">activé</string>
|
||||
<string name="enable_backup_comp_chk">Activer la compression</string>
|
||||
<string name="skip_md5_backup_chk">Ne pas générer de MD5 pendant la sauvegarde</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Ne pas générer de Digest pendant la sauvegarde</string>
|
||||
<string name="disable_backup_space_chk">Désactiver la vérification de l'espace libre</string>
|
||||
<string name="refresh_sizes_btn">Actualiser l'espace disponible</string>
|
||||
<string name="swipe_backup">Glisser pour Sauvegarder</string>
|
||||
@@ -228,7 +228,7 @@
|
||||
<string name="restore_try_decrypt_s">Tentative de décryptage</string>
|
||||
<string name="restore_backup_date">Sauvegarde effectuée sur %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Sélectionner les Partitions à restaurer :</string>
|
||||
<string name="restore_enable_md5_chk">Activer la vérification MD5 des fichiers de sauvegarde</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Activer la vérification Digest des fichiers de sauvegarde</string>
|
||||
<string name="restore_completed">Restauration terminée</string>
|
||||
<string name="swipe_restore">Glisser pour Restaurer</string>
|
||||
<string name="swipe_restore_s">Restaurer</string>
|
||||
@@ -468,12 +468,12 @@
|
||||
<string name="rebooting">Redémarrage...</string>
|
||||
<string name="decrypt_success">Décryption réussie avec le mot de passe par défaut.</string>
|
||||
<string name="unable_to_decrypt">Incapable de décrypter avec le mot de passe par défaut. Vous devrez peut-être formater la partition Données.</string>
|
||||
<string name="generating_md51">Génération du MD5</string>
|
||||
<string name="generating_md52">* Génération du MD5...</string>
|
||||
<string name="md5_created">* MD5 créé.</string>
|
||||
<string name="md5_error">* Erreur MD5 !</string>
|
||||
<string name="md5_compute_error">* Erreur dans le calcul du MD5.</string>
|
||||
<string name="md5_created">* MD5 créé.</string>
|
||||
<string name="generating_digest1" version="2">Génération du Digest</string>
|
||||
<string name="generating_digest2" version="2">* Génération du Digest...</string>
|
||||
<string name="digest_created" version="2">* Digest créé.</string>
|
||||
<string name="digest_error" version="2">* Erreur Digest !</string>
|
||||
<string name="digest_compute_error" version="2">* Erreur dans le calcul du Digest.</string>
|
||||
<string name="digest_created" version="2">* Digest créé.</string>
|
||||
<string name="current_date">(Date du jour)</string>
|
||||
<string name="auto_generate">(Génération automatisée)</string>
|
||||
<string name="unable_to_locate_partition">Impossible de localiser la partition '{1}' pour le calcul de la sauvegarde.</string>
|
||||
@@ -493,8 +493,8 @@
|
||||
<string name="restore_started">[RESTAURATION COMMENCÉE]</string>
|
||||
<string name="restore_folder">Restauration du dossier: '{1}'</string>
|
||||
<string name="restore_part_done">[{1} complété ({2} secondes)]</string>
|
||||
<string name="verifying_md5">Vérification du MD5</string>
|
||||
<string name="skip_md5">Omission de la vérification des MD5 selon le réglage utilisateur.</string>
|
||||
<string name="verifying_digest" version="2">Vérification du Digest</string>
|
||||
<string name="skip_digest" version="2">Omission de la vérification des Digest selon le réglage utilisateur.</string>
|
||||
<string name="calc_restore">Calcul des détails de la restauration...</string>
|
||||
<string name="restore_read_only">Impossible de restaurer {1} -- monté en lecture seule.</string>
|
||||
<string name="restore_unable_locate">Impossible de localiser la partition '{1}' pour la restauration.</string>
|
||||
@@ -552,9 +552,9 @@
|
||||
<string name="cannot_resize">Incapable de redimensionner {1}.</string>
|
||||
<string name="repair_resize">Réparation de {1} avant de redimensionner.</string>
|
||||
<string name="unable_resize">Incapable de redimensionner {1}.</string>
|
||||
<string name="no_md5_found">Pas de fichier md5 trouvé pour '{1}'. Veuillez désactiver la vérification MD5 pour effectuer la restauration.</string>
|
||||
<string name="md5_fail_match">Le MD5 ne correspond pas pour '{1}'.</string>
|
||||
<string name="md5_matched">Le MD5 correspond pour '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Pas de fichier Digest trouvé pour '{1}'. Veuillez désactiver la vérification Digest pour effectuer la restauration.</string>
|
||||
<string name="digest_fail_match" version="2">Le Digest ne corresponds pas pour '{1}'.</string>
|
||||
<string name="digest_matched" version="2">Le Digest correspond pour '{1}'.</string>
|
||||
<string name="restoring">Restauration en cours</string>
|
||||
<string name="format_data_msg">Vous aurez peut-être à redémarrer pour pouvoir utiliser /data à nouveau.</string>
|
||||
<string name="format_data_err">Incapable de formater pour enlever l'encryption.</string>
|
||||
@@ -574,7 +574,7 @@
|
||||
<string name="backup_folder">Dossier de sauvegarde à '{1}'</string>
|
||||
<string name="locate_backup_err">Impossible de localiser la sauvegarde '{1}'</string>
|
||||
<string name="set_restore_opt">Définition des options de restauration: '{1}':</string>
|
||||
<string name="md5_check_skip">La vérification MD5 est omise</string>
|
||||
<string name="digest_check_skip" version="2">La vérification Digest est omise</string>
|
||||
<string name="ors_encrypt_restore_err">Impossible d'utiliser OpenRecoveryScript pour restaurer une sauvegarde chiffrée.</string>
|
||||
<string name="mounting">Montage</string>
|
||||
<string name="unmounting">Démontage</string>
|
||||
@@ -595,7 +595,7 @@
|
||||
<string name="installing_zip">Installation du fichier zip '{1}'</string>
|
||||
<string name="select_backup_opt">Définition des options de sauvegarde:</string>
|
||||
<string name="compression_on">Compression activée</string>
|
||||
<string name="md5_off">La génération de MD5 est désactivée</string>
|
||||
<string name="digest_off" version="2">La génération de Digest est désactivée</string>
|
||||
<string name="backup_fail">Échec de la sauvegarde</string>
|
||||
<string name="backup_complete">Sauvegarde terminée!</string>
|
||||
<string name="running_recovery_commands">Exécution des commandes de récupération</string>
|
||||
@@ -603,15 +603,15 @@
|
||||
<string name="running_ors">OpenRecoveryScript en cours d'exécution</string>
|
||||
<string name="ors_complete">OpenRecoveryScript complété</string>
|
||||
<string name="no_updater_binary">'{1}' introuvable dans le fichier zip.</string>
|
||||
<string name="check_for_md5">Vérification des fichiers MD5...</string>
|
||||
<string name="check_for_digest" version="2">Vérification des fichiers Digest...</string>
|
||||
<string name="fail_sysmap">Impossible de mapper le fichier '{1}'</string>
|
||||
<string name="verify_zip_sig">Vérification de la signature du zip...</string>
|
||||
<string name="verify_zip_fail">Échec de la vérification des signatures du zip!</string>
|
||||
<string name="verify_zip_done">Signature du zip vérifiée correctement.</string>
|
||||
<string name="zip_corrupt">Le fichier zip est corrompu!</string>
|
||||
<string name="no_md5">Pas de vérification MD5: aucun fichier MD5 trouvé</string>
|
||||
<string name="md5_fail">Le MD5 ne correspond pas</string>
|
||||
<string name="md5_match">Le MD5 correspond</string>
|
||||
<string name="no_digest" version="2">Pas de vérification Digest: aucun fichier Digest trouvé</string>
|
||||
<string name="digest_fail" version="2">Le Digest ne correspond pas</string>
|
||||
<string name="digest_match" version="2">Le Digest correspond</string>
|
||||
<string name="pid_signal">Le processus {1} s'est terminé avec le signal: {2}</string>
|
||||
<string name="pid_error">Le processus {1} s'est terminé avec ERREUR: {2}</string>
|
||||
<string name="install_dumlock">Installation de HTC Dumlock...</string>
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
<string name="enc_disabled">letiltva - állítson be jelszót az engedélyezéshez</string>
|
||||
<string name="enc_enabled">engedélyezve</string>
|
||||
<string name="enable_backup_comp_chk">Tömörítés engedélyezése</string>
|
||||
<string name="skip_md5_backup_chk">Mentés közbeni MD5 generálás kihagyása</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Mentés közbeni Digest generálás kihagyása</string>
|
||||
<string name="disable_backup_space_chk" version="2">Szabad hely ellenőrzésének letiltása</string>
|
||||
<string name="current_boot_slot">Jelenlegi Slot: %tw_active_slot%</string>
|
||||
<string name="boot_slot_a">Slot A</string>
|
||||
@@ -253,7 +253,7 @@
|
||||
<string name="restore_try_decrypt_s">Dekódolás megpróbálása</string>
|
||||
<string name="restore_backup_date">Biztonsági mentés ideje: %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Válassza ki a visszaállítandó partíciókat:</string>
|
||||
<string name="restore_enable_md5_chk">A biztonsági mentési fájlok MD5 ellenőrzésének engedélyezése</string>
|
||||
<string name="restore_enable_digest_chk" version="3">A biztonsági mentési fájlok Digest ellenőrzésének engedélyezése</string>
|
||||
<string name="restore_complete">Mentés helyreállítása kész</string>
|
||||
<string name="swipe_restore">Csúsztasson a visszaállításhoz</string>
|
||||
<string name="swipe_restore_s"> Visszaállítás</string>
|
||||
@@ -494,12 +494,12 @@
|
||||
<string name="mtp_crash">MTP összeomlott, MTP nem indul bootoláskor.</string>
|
||||
<string name="decrypt_success">Sikeresen visszafejtve az alapértelmezett jelszóval.</string>
|
||||
<string name="unable_to_decrypt">Visszafejtés sikertelen az alapértelmezett jelszóval. Szükség lehet az adatok formázására.</string>
|
||||
<string name="generating_md51">MD5 generálása</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * MD5 generálása...</string>
|
||||
<string name="md5_created"> * MD5 létrehozva.</string>
|
||||
<string name="md5_error"> * MD5 hiba!</string>
|
||||
<string name="md5_compute_error"> * MD5 számítási hiba.</string>
|
||||
<string name="generating_digest1" version="3">Digest generálása</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="3"> * Digest generálása...</string>
|
||||
<string name="digest_created" version="3"> * Digest létrehozva.</string>
|
||||
<string name="digest_error" version="3"> * Digest hiba!</string>
|
||||
<string name="digest_compute_error" version="3"> * Digest számítási hiba.</string>
|
||||
<string name="current_date">(Aktuális dátum)</string>
|
||||
<string name="auto_generate">(Automatikus létrehozás)</string>
|
||||
<string name="unable_to_locate_partition">'{1}' partíció nem található a biztonsági mentési számításokhoz.</string>
|
||||
@@ -520,8 +520,8 @@
|
||||
<string name="restore_folder">Mappa visszaállítása: '{1}'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} kész ({2} másodperc)]</string>
|
||||
<string name="verifying_md5">MD5 ellenőrzése</string>
|
||||
<string name="skip_md5">MD5 ellenőrzés átugrása felhasználói beállítás alapján.</string>
|
||||
<string name="verifying_digest" version="3">Digest ellenőrzése</string>
|
||||
<string name="skip_digest" version="3">Digest ellenőrzés átugrása felhasználói beállítás alapján.</string>
|
||||
<string name="calc_restore">Visszaállítási részletek számítása...</string>
|
||||
<string name="restore_read_only">{1} nem állítható vissza -- csak olvashatóként csatolva.</string>
|
||||
<string name="restore_unable_locate">Nem található a(z) '{1}' partíció a visszaállításhoz.</string>
|
||||
@@ -584,9 +584,9 @@
|
||||
<string name="cannot_resize">{1} átméretezése sikertelen.</string>
|
||||
<string name="repair_resize">{1} javítása az átméretezés előtt.</string>
|
||||
<string name="unable_resize">Nem lehet átméretezni: {1}.</string>
|
||||
<string name="no_md5_found">Nem található MD5 fájl ehhez: '{1}'. Kérjük, a visszaállításhoz szüntesse meg a kijelölést: \"MD5 ellenőrzés engedélyezése\".</string>
|
||||
<string name="md5_fail_match">MD5 nem egyezik ezzel: '{1}'.</string>
|
||||
<string name="md5_matched">MD5 egyezik ezzel: '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Nem található Digest fájl ehhez: '{1}'. Kérjük, a visszaállításhoz szüntesse meg a kijelölést: \"MD5 ellenőrzés engedélyezése\".</string>
|
||||
<string name="digest_fail_match" version="2">Digest nem egyezik ezzel: '{1}'.</string>
|
||||
<string name="digest_matched" version="2">Digest egyezik ezzel: '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Nem sikerült visszafejteni a(z) '{1}' tar fájlt</string>
|
||||
<string name="format_data_msg">Lehet, hogy a recovery-be kell újraindítania ahhoz, hogy képes legyen használni az /adat partíciót.</string>
|
||||
<string name="format_data_err">Nem sikerült formázni a titkosítás eltávolításához.</string>
|
||||
@@ -608,7 +608,7 @@
|
||||
<string name="backup_folder_set">Biztonsági mentés mappája beállítva erre: '{1}'</string>
|
||||
<string name="locate_backup_err">Nem található a(z) '{1}' biztonsági mentés</string>
|
||||
<string name="set_restore_opt">Visszaállítási beállítások beállítása: '{1}':</string>
|
||||
<string name="md5_check_skip">MD5 ellenőrzés kihagyása bekapcsolva</string>
|
||||
<string name="digest_check_skip" version="2">Digest ellenőrzés kihagyása bekapcsolva</string>
|
||||
<string name="ors_encrypt_restore_err">Nem sikerült az OpenRecoveryScript futtatása egy titkosított biztonsági mentés visszaállításához.</string>
|
||||
<string name="mounting">Csatolás</string>
|
||||
<string name="unmounting">Leválasztás</string>
|
||||
@@ -629,7 +629,7 @@
|
||||
<string name="installing_zip">'{1}' zip fájl telepítése</string>
|
||||
<string name="select_backup_opt">Biztonsági mentési beállítások:</string>
|
||||
<string name="compression_on">Tömörítés bekapcsolva</string>
|
||||
<string name="md5_off">MD5 generálás kikapcsolva</string>
|
||||
<string name="digest_off" version="3">Digest generálás kikapcsolva</string>
|
||||
<string name="backup_fail">Biztonsági mentés készítése sikertelen</string>
|
||||
<string name="backup_clean">Biztonsági mentés nem sikerült. Mentési mappa tisztítása.</string>
|
||||
<string name="running_recovery_commands">Recovery parancsok futtatása</string>
|
||||
@@ -637,15 +637,15 @@
|
||||
<string name="running_ors">OpenRecoveryScript futtatása</string>
|
||||
<string name="ors_complete">OpenRecoveryScript kész</string>
|
||||
<string name="invalid_zip_format">Érvénytelen zip fájlformátum!</string>
|
||||
<string name="check_for_md5">MD5 fájl ellenőrzése...</string>
|
||||
<string name="check_for_digest" version="2">Digest fájl ellenőrzése...</string>
|
||||
<string name="fail_sysmap">'{1}' fájl feltérképezése sikertelen</string>
|
||||
<string name="verify_zip_sig">Zip aláírás ellenőrzése...</string>
|
||||
<string name="verify_zip_fail">Zip aláírás ellenőrzése nem sikerült!</string>
|
||||
<string name="verify_zip_done">Zip aláírás ellenőrzése sikeres.</string>
|
||||
<string name="zip_corrupt">Zip fájl sérült!</string>
|
||||
<string name="no_md5">MD5 ellenőrzés kihagyása: nem található MD5 fájl</string>
|
||||
<string name="md5_fail">MD5 nem egyezik meg</string>
|
||||
<string name="md5_match">MD5 egyezik</string>
|
||||
<string name="no_digest" version="3">Digest ellenőrzés kihagyása: nem található Digest fájl</string>
|
||||
<string name="digest_fail" version="3">Digest nem egyezik meg</string>
|
||||
<string name="digest_match" version="3">Digest egyezik</string>
|
||||
<string name="pid_signal">{1} folyamat véget ért a következő jellel: {2}</string>
|
||||
<string name="pid_error">{1} folyamat véget ért a következő HIBÁVAL: {2}</string>
|
||||
<string name="install_dumlock">HTC Dumlock telepítése a rendszerbe...</string>
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
<string name="enc_disabled">disabilitata - imposta una password per abilitarla</string>
|
||||
<string name="enc_enabled">abilitata</string>
|
||||
<string name="enable_backup_comp_chk">Abilita compressione</string>
|
||||
<string name="skip_md5_backup_chk">Salta la generazione di MD5 durante il backup</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Salta la generazione di Digest durante il backup</string>
|
||||
<string name="disable_backup_space_chk" version="2">Disabilita controllo dello spazio libero prima del backup</string>
|
||||
<string name="current_boot_slot">Slot attuale: %tw_active_slot%</string>
|
||||
<string name="boot_slot_a">Slot A</string>
|
||||
@@ -253,7 +253,7 @@
|
||||
<string name="restore_try_decrypt_s">Tentativo di decriptazione</string>
|
||||
<string name="restore_backup_date">Backup creato il %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Seleziona le partizioni da ripristinare:</string>
|
||||
<string name="restore_enable_md5_chk">Abilita verifica MD5</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Abilita verifica Digest</string>
|
||||
<string name="restore_complete">Ripristino completato</string>
|
||||
<string name="swipe_restore">Scorri per ripristinare</string>
|
||||
<string name="swipe_restore_s"> Ripristina</string>
|
||||
@@ -494,12 +494,12 @@
|
||||
<string name="mtp_crash">MTP si è arrestato. Non sarà più inizializzato all'avvio.</string>
|
||||
<string name="decrypt_success">Decriptazione con password predefinita avvenuta con successo.</string>
|
||||
<string name="unable_to_decrypt">Impossibile decriptare con password predefinita. Potresti dover formattare Data.</string>
|
||||
<string name="generating_md51">Generazione MD5 in corso...</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * Generazione MD5 in corso...</string>
|
||||
<string name="md5_created"> * MD5 creato.</string>
|
||||
<string name="md5_error"> * Errore nell'MD5!</string>
|
||||
<string name="md5_compute_error"> * Errore nel calcolo dell'MD5.</string>
|
||||
<string name="generating_digest1" version="2">Generazione Digest in corso...</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="2"> * Generazione Digest in corso...</string>
|
||||
<string name="digest_created" version="2"> * Digest creato.</string>
|
||||
<string name="digest_error" version="2"> * Errore nell'Digest!</string>
|
||||
<string name="digest_compute_error" version="2"> * Errore nel calcolo dell'Digest.</string>
|
||||
<string name="current_date">(Data attuale)</string>
|
||||
<string name="auto_generate">(Genera automaticamente)</string>
|
||||
<string name="unable_to_locate_partition">Impossibile localizzare la partizione '{1}' per il calcolo delle dimensioni del backup.</string>
|
||||
@@ -520,8 +520,8 @@
|
||||
<string name="restore_folder">Cartella da cui ripristinare: '{1}'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[Partizione {1} ripristinata ({2} secondi)]</string>
|
||||
<string name="verifying_md5">Verifica MD5 in corso...</string>
|
||||
<string name="skip_md5">Saltando la verifica del MD5 in base alle impostazioni stabilite.</string>
|
||||
<string name="verifying_digest" version="2">Verifica Digest in corso...</string>
|
||||
<string name="skip_digest" version="2">Saltando la verifica del Digest in base alle impostazioni stabilite.</string>
|
||||
<string name="calc_restore">Calcolo dei dettagli del ripristino in corso...</string>
|
||||
<string name="restore_read_only">Impossibile ripristinare {1} -- partizione montata in sola lettura.</string>
|
||||
<string name="restore_unable_locate">Impossibile localizzare la partizione '{1}' per il ripristino.</string>
|
||||
@@ -584,9 +584,9 @@
|
||||
<string name="cannot_resize">Impossibile ridimensionare {1}.</string>
|
||||
<string name="repair_resize">Riparazione di {1} prima del ridimensionamento.</string>
|
||||
<string name="unable_resize">Impossibile ridimensionare {1}.</string>
|
||||
<string name="no_md5_found">Nessun MD5 trovato per '{1}'. Deseleziona "Abilita verifica MD5" per procedere con il ripristino.</string>
|
||||
<string name="md5_fail_match">Il valore MD5 non corrisponde per '{1}'.</string>
|
||||
<string name="md5_matched">MD5 trovato per '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Nessun Digest trovato per '{1}'. Deseleziona "Abilita verifica Digest" per procedere con il ripristino.</string>
|
||||
<string name="digest_fail_match" version="2">Il valore Digest non corrisponde per '{1}'.</string>
|
||||
<string name="digest_matched" version="2">Digest trovato per '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Decriptazione fallita per il file Tar '{1}'</string>
|
||||
<string name="format_data_msg">Potresti dover riavviare la Recovery per accedere nuovamente a Data.</string>
|
||||
<string name="format_data_err">Impossibile formattare al fine di rimuovere la crittografia.</string>
|
||||
@@ -608,7 +608,7 @@
|
||||
<string name="backup_folder_set">Cartella dei backup impostata in '{1}'</string>
|
||||
<string name="locate_backup_err">Impossibile localizzare il backup '{1}'</string>
|
||||
<string name="set_restore_opt">Impostazione opzioni di ripristino: '{1}':</string>
|
||||
<string name="md5_check_skip">Tralascia controllo MD5: attivo</string>
|
||||
<string name="digest_check_skip" version="2">Tralascia controllo Digest: attivo</string>
|
||||
<string name="ors_encrypt_restore_err">Impossibile utilizzare OpenRecoveryScript per ripristinare un backup criptato.</string>
|
||||
<string name="mounting">Montaggio</string>
|
||||
<string name="unmounting">Smontaggio</string>
|
||||
@@ -629,7 +629,7 @@
|
||||
<string name="installing_zip">Installazione dello Zip '{1}' in corso...</string>
|
||||
<string name="select_backup_opt">Impostazione opzioni di backup:</string>
|
||||
<string name="compression_on">La compressione è attiva</string>
|
||||
<string name="md5_off">La generazione di MD5 è disattiva</string>
|
||||
<string name="digest_off" version="2">La generazione di Digest è disattiva</string>
|
||||
<string name="backup_fail">Backup non riuscito</string>
|
||||
<string name="backup_clean">Backup non riuscito. Pulizia della cartella dei backup in corso...</string>
|
||||
<string name="running_recovery_commands">Esecuzione dei comandi di ripristino...</string>
|
||||
@@ -637,15 +637,15 @@
|
||||
<string name="running_ors">Esecuzione di OpenRecoveryScript...</string>
|
||||
<string name="ors_complete">Esecuzione di OpenRecoveryScript completata</string>
|
||||
<string name="invalid_zip_format">File zip non valido!</string>
|
||||
<string name="check_for_md5">Controllo sull'MD5 in corso...</string>
|
||||
<string name="check_for_digest" version="2">Controllo sull'Digest in corso...</string>
|
||||
<string name="fail_sysmap">Impossibile mappare '{1}'</string>
|
||||
<string name="verify_zip_sig">Verifica della firma dello Zip in corso...</string>
|
||||
<string name="verify_zip_fail">Verifica della firma non riuscita!</string>
|
||||
<string name="verify_zip_done">Verifica della firma completata con successo.</string>
|
||||
<string name="zip_corrupt">Il file Zip è corrotto!</string>
|
||||
<string name="no_md5">Nessun MD5 trovato: la verifica non sarà eseguita</string>
|
||||
<string name="md5_fail">L'MD5 non corrisponde</string>
|
||||
<string name="md5_match">L'MD5 corrisponde</string>
|
||||
<string name="no_digest" version="2">Nessun Digest trovato: la verifica non sarà eseguita</string>
|
||||
<string name="digest_fail" version="2">L'Digest non corrisponde</string>
|
||||
<string name="digest_match" version="2">L'Digest corrisponde</string>
|
||||
<string name="pid_signal">Il processo {1} è terminato con segnale: {2}</string>
|
||||
<string name="pid_error">Il processo {1} è terminato con ERRORE: {2}</string>
|
||||
<string name="install_dumlock">Installazione di HTC Dumlock in System...</string>
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
<string name="enc_disabled">uitgeschakeld - stel een wachtwoord in om in te schakelen</string>
|
||||
<string name="enc_enabled">ingeschakeld</string>
|
||||
<string name="enable_backup_comp_chk">Compressie inschakelen</string>
|
||||
<string name="skip_md5_backup_chk">MD5 generatie tijdens back-up overslaan</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Digest generatie tijdens back-up overslaan</string>
|
||||
<string name="disable_backup_space_chk">Vrije ruimte controle uitschakelen</string>
|
||||
<string name="refresh_sizes_btn">Grootte vernieuwen</string>
|
||||
<string name="swipe_backup">Veeg voor back-up</string>
|
||||
@@ -240,7 +240,7 @@
|
||||
<string name="restore_try_decrypt_s">Decodering proberen</string>
|
||||
<string name="restore_backup_date">Back-up gemaakt op %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Selecteer partities om te herstellen:</string>
|
||||
<string name="restore_enable_md5_chk">MD5 controle van back-up bestanden Inschakelen</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Digest controle van back-up bestanden Inschakelen</string>
|
||||
<string name="restore_complete">Herstellen voltooid</string>
|
||||
<string name="swipe_restore">Veeg om te herstellen</string>
|
||||
<string name="swipe_restore_s"> Herstellen</string>
|
||||
@@ -481,12 +481,12 @@
|
||||
<string name="mtp_crash">MTP crashte, MTP niet starten tijdens boot.</string>
|
||||
<string name="decrypt_success">Succesvol gedecodeerd met standaardwachtwoord.</string>
|
||||
<string name="unable_to_decrypt">Kan niet decoderen met het standaardwachtwoord. U zal wellicht een Data format moeten uitvoeren.</string>
|
||||
<string name="generating_md51">MD5 genereren</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * md5 genereren...</string>
|
||||
<string name="md5_created"> * MD5 gemaakt.</string>
|
||||
<string name="md5_error"> * MD5 fout!</string>
|
||||
<string name="md5_compute_error"> * Fout tijdens het genereren van de MD5.</string>
|
||||
<string name="generating_digest1" version="2">Digest genereren</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="2"> * Digest genereren...</string>
|
||||
<string name="digest_created" version="2"> * Digest gemaakt.</string>
|
||||
<string name="digest_error" version="2"> * Digest fout!</string>
|
||||
<string name="digest_compute_error" version="2"> * Fout tijdens het genereren van de Digest.</string>
|
||||
<string name="current_date">(Huidige datum)</string>
|
||||
<string name="auto_generate">(Automatisch genereren)</string>
|
||||
<string name="unable_to_locate_partition">Kan partitie \'{1}\' niet vinden voor back-up berekeningen.</string>
|
||||
@@ -507,8 +507,8 @@
|
||||
<string name="restore_folder">Herstel map: \'{1}\'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} gereed ({2} seconden)]</string>
|
||||
<string name="verifying_md5">MD5 Controleren</string>
|
||||
<string name="skip_md5">MD5 controle op basis van gebruikersinstelling overslaan.</string>
|
||||
<string name="verifying_digest" version="2">Digest Controleren</string>
|
||||
<string name="skip_digest" version="2">Digest controle op basis van gebruikersinstelling overslaan.</string>
|
||||
<string name="calc_restore">Herstel details berekenen...</string>
|
||||
<string name="restore_read_only">Kan {1} niet herstellen -- Als alleen lezen gekoppeld.</string>
|
||||
<string name="restore_unable_locate">Kan \'{1}\' niet vinden voor herstellen.</string>
|
||||
@@ -570,9 +570,9 @@
|
||||
<string name="cannot_resize">Kan het formaat van {1} niet wijzigen.</string>
|
||||
<string name="repair_resize">Herstellen van {1} vóór het vergroten/verkleinen.</string>
|
||||
<string name="unable_resize">Kan de grootte van {1} niet wijzigen.</string>
|
||||
<string name="no_md5_found">Geen md5 bestand gevonden voor \'{1}\'. Gelieve MD5 controle inschakelen uitzetten om te herstellen.</string>
|
||||
<string name="md5_fail_match">MD5 vergelijken mislukt op \'{1}\'.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Geen Digest bestand gevonden voor \'{1}\'. Gelieve Digest controle inschakelen uitzetten om te herstellen.</string>
|
||||
<string name="digest_fail_match" version="2">Digest vergelijken mislukt op \'{1}\'.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Het decoderen van tar bestand \'{1}\' is mislukt</string>
|
||||
<string name="format_data_msg">U zou in recovery moeten herstarten om /data opnieuw te kunnen gebruiken.</string>
|
||||
<string name="format_data_err">Kan niet formatteren om encryptie te verwijderen.</string>
|
||||
@@ -593,7 +593,7 @@
|
||||
<string name="backup_folder_set">Back-up map ingesteld op \'{1}\'</string>
|
||||
<string name="locate_backup_err">Kan de back-up niet vinden \'{1}\'</string>
|
||||
<string name="set_restore_opt">Opties voor terugzetten instellen: \'{1}\':</string>
|
||||
<string name="md5_check_skip">MD5 controle overslaan staat aan</string>
|
||||
<string name="digest_check_skip" version="2">Digest controle overslaan staat aan</string>
|
||||
<string name="ors_encrypt_restore_err">Kan OpenRecoveryScript niet gebruiken om een versleutelde back-up te herstellen.</string>
|
||||
<string name="mounting">Koppelen</string>
|
||||
<string name="unmounting">Ontkoppelen</string>
|
||||
@@ -614,7 +614,7 @@
|
||||
<string name="installing_zip">Installeren van zip-bestand \'{1}\'</string>
|
||||
<string name="select_backup_opt">Back-up opties instellen:</string>
|
||||
<string name="compression_on">Compressie staat aan</string>
|
||||
<string name="md5_off">MD5 Generatie is uitgeschakeld</string>
|
||||
<string name="digest_off" version="2">Digest Generatie is uitgeschakeld</string>
|
||||
<string name="backup_fail">Back-up mislukt</string>
|
||||
<string name="backup_clean">Back-up mislukt. Back-up map schoonmaken.</string>
|
||||
<string name="running_recovery_commands">Herstel commando\'s uitvoeren</string>
|
||||
@@ -622,15 +622,15 @@
|
||||
<string name="running_ors">OpenRecoveryScript is bezig</string>
|
||||
<string name="ors_complete">OpenRecoveryScript is voltooid</string>
|
||||
<string name="no_updater_binary">Kan \'{1}\' niet vinden in het zip-bestand.</string>
|
||||
<string name="check_for_md5">Controle voor een MD5 bestand...</string>
|
||||
<string name="check_for_digest" version="2">Controle voor een Digest bestand...</string>
|
||||
<string name="fail_sysmap">Toewijzen van bestand \'{1}\' is mislukt</string>
|
||||
<string name="verify_zip_sig">Zip handtekening controleren...</string>
|
||||
<string name="verify_zip_fail">Zip handtekeningverificatie is mislukt!</string>
|
||||
<string name="verify_zip_done">De handtekening van de zip met succes geverifieerd.</string>
|
||||
<string name="zip_corrupt">Zip-bestand is beschadigd!</string>
|
||||
<string name="no_md5">MD5 controle overslaan: geen MD5 bestand gevonden</string>
|
||||
<string name="md5_fail">MD5 komt niet overeen</string>
|
||||
<string name="md5_match">MD5 komt overeen</string>
|
||||
<string name="no_digest" version="2">Digest controle overslaan: geen Digest bestand gevonden</string>
|
||||
<string name="digest_fail" version="2">Digest komt niet overeen</string>
|
||||
<string name="digest_match" version="2">Digest komt overeen</string>
|
||||
<string name="pid_signal">{1} proces eindigde met signaal: {2}</string>
|
||||
<string name="pid_error">{1} proces beëindigd met fout: {2}</string>
|
||||
<string name="install_dumlock">HTC Dumlock installeren op het systeem...</string>
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
<string name="enc_disabled">wyłączone - ustaw hasło, aby włączyć</string>
|
||||
<string name="enc_enabled">włączone</string>
|
||||
<string name="enable_backup_comp_chk">Włącz kompresję</string>
|
||||
<string name="skip_md5_backup_chk">Pomiń generowanie MD5 kopii zapasowej</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Pomiń generowanie Digest kopii zapasowej</string>
|
||||
<string name="disable_backup_space_chk">Wyłącz sprawdzanie wolnego miejsca</string>
|
||||
<string name="refresh_sizes_btn">Odśwież rozmiary</string>
|
||||
<string name="swipe_backup">Przesuń, aby wykonać kopię</string>
|
||||
@@ -240,7 +240,7 @@
|
||||
<string name="restore_try_decrypt_s">Spróbuj rozszyfrować</string>
|
||||
<string name="restore_backup_date">Kopia zapasowa utworzona %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Wybierz partycje do przywrócenia:</string>
|
||||
<string name="restore_enable_md5_chk">Włącz weryfikację MD5 kopii zapasowych</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Włącz weryfikację Digest kopii zapasowych</string>
|
||||
<string name="restore_complete">Przywracanie zakończone</string>
|
||||
<string name="swipe_restore">Przesuń, aby przywrócić</string>
|
||||
<string name="swipe_restore_s"> Przywróć</string>
|
||||
@@ -481,12 +481,12 @@
|
||||
<string name="mtp_crash">MTP uległo awarii, wyłączczam MTP przy starcie.</string>
|
||||
<string name="decrypt_success">Pomyślnie rozszyfrowano z domyślnym hasłem.</string>
|
||||
<string name="unable_to_decrypt">Nie można odszyfrować z domyślnym hasłem. Może trzeba będzie wykonać Format Data.</string>
|
||||
<string name="generating_md51">Generowanie MD5</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * Generowanie md5...</string>
|
||||
<string name="md5_created"> * MD5 utworzone.</string>
|
||||
<string name="md5_error"> * Błąd MD5!</string>
|
||||
<string name="md5_compute_error"> * Błąd przetwarzania MD5.</string>
|
||||
<string name="generating_digest1" version="2">Generowanie Digest</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="2"> * Generowanie Digest...</string>
|
||||
<string name="digest_created" version="2"> * Digest utworzone.</string>
|
||||
<string name="digest_error" version="2"> * Błąd Digest!</string>
|
||||
<string name="digest_compute_error" version="2"> * Błąd przetwarzania Digest.</string>
|
||||
<string name="current_date">(Obecna data)</string>
|
||||
<string name="auto_generate">(Generuj automatycznie)</string>
|
||||
<string name="unable_to_locate_partition">Nie można zlokalizować partycji '{1}' do obliczenia kopii zapasowej.</string>
|
||||
@@ -507,8 +507,8 @@
|
||||
<string name="restore_folder">Folder przywracania: '{1}'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} zakończono ({2} sekund)]</string>
|
||||
<string name="verifying_md5">Weryfikowanie MD5</string>
|
||||
<string name="skip_md5">Pomijanie sprawdzania MD5 włączone przez użytkownika.</string>
|
||||
<string name="verifying_digest" version="2">Weryfikowanie Digest</string>
|
||||
<string name="skip_digest" version="2">Pomijanie sprawdzania Digest włączone przez użytkownika.</string>
|
||||
<string name="calc_restore">Obliczanie danych przywracania...</string>
|
||||
<string name="restore_read_only">Nie można przywrócić {1} -- zamontowane tylko do odczytu.</string>
|
||||
<string name="restore_unable_locate">Nie można zlokalizować partycji '{1}' do przywrócenia.</string>
|
||||
@@ -570,9 +570,9 @@
|
||||
<string name="cannot_resize">Nie można zmienić rozmiaru {1}.</string>
|
||||
<string name="repair_resize">Naprawianie {1} przed zmianą rozmiaru.</string>
|
||||
<string name="unable_resize">Nie można zmienić rozmiaru {1}.</string>
|
||||
<string name="no_md5_found">Nie znaleziono pliku MD5 '{1}'. Proszę wyłączyć weryfikację MD5, aby przywrócić.</string>
|
||||
<string name="md5_fail_match">MD5 nie pasuje do '{1}'.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Nie znaleziono pliku Digest '{1}'. Proszę wyłączyć weryfikację Digest, aby przywrócić.</string>
|
||||
<string name="digest_fail_match" version="2">Digest nie pasuje do '{1}'.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Nie udało się odszyfrować pliku tar '{1}'</string>
|
||||
<string name="format_data_msg">Może być konieczne ponowne uruchomienie recovery, aby móc ponownie użyć /date.</string>
|
||||
<string name="format_data_err">Nie można sformatować, aby usunąć szyfrowanie.</string>
|
||||
@@ -593,7 +593,7 @@
|
||||
<string name="backup_folder_set">'{1}' ustawiony jako folder kopii zapasowych</string>
|
||||
<string name="locate_backup_err">Nie udało się zlokalizować kopii '{1}'</string>
|
||||
<string name="set_restore_opt">Ustawienia przywracania: '{1}':</string>
|
||||
<string name="md5_check_skip">Sprawdzanie MD5 jest włączone</string>
|
||||
<string name="digest_check_skip" version="2">Sprawdzanie Digest jest włączone</string>
|
||||
<string name="ors_encrypt_restore_err">Nie można użyć OpenRecoveryScript do przywrócenia zaszyfrowanej kopii zapasowej.</string>
|
||||
<string name="mounting">Montowanie</string>
|
||||
<string name="unmounting">Odmontowywanie</string>
|
||||
@@ -614,7 +614,7 @@
|
||||
<string name="installing_zip">Instalowanie pliku zip '{1}'</string>
|
||||
<string name="select_backup_opt">Ustawienia kopii zapasowych:</string>
|
||||
<string name="compression_on">Kompresja jest włączona</string>
|
||||
<string name="md5_off">Generowanie MD5 jest wyłączone</string>
|
||||
<string name="digest_off" version="2">Generowanie Digest jest wyłączone</string>
|
||||
<string name="backup_fail">Niepowodzenie wykonywania kopii zapasowej</string>
|
||||
<string name="backup_clean">Niepowodzenie wykonywania kopii zapasowej. Oczyszczanie folderu kopii zapasowej.</string>
|
||||
<string name="running_recovery_commands">Wykonywanie komend trybu odzyskiwania</string>
|
||||
@@ -622,15 +622,15 @@
|
||||
<string name="running_ors">Wykonywanie Skryptu OpenRecovery</string>
|
||||
<string name="ors_complete">Ukończono Skrypt OpenRecovery</string>
|
||||
<string name="no_updater_binary">Nie można znaleźć '{1}' w pliku zip.</string>
|
||||
<string name="check_for_md5">Sprawdzanie pliku MD5...</string>
|
||||
<string name="check_for_digest" version="2">Sprawdzanie pliku Digest...</string>
|
||||
<string name="fail_sysmap">Nieudane mapowanie pliku '{1}'</string>
|
||||
<string name="verify_zip_sig">Weryfikowanie sygnatury pliku zip...</string>
|
||||
<string name="verify_zip_fail">Niewłaściwa sygnatura pliku zip!</string>
|
||||
<string name="verify_zip_done">Sygnatura pliku zip zweryfikowana pomyślnie.</string>
|
||||
<string name="zip_corrupt">Plik zip uszkodzony!</string>
|
||||
<string name="no_md5">Pomijanie sprawdzania MD5: brak pliku MD5</string>
|
||||
<string name="md5_fail">MD5 niezgodne</string>
|
||||
<string name="md5_match">MD5 zgodne</string>
|
||||
<string name="no_digest" version="2">Pomijanie sprawdzania Digest: brak pliku Digest</string>
|
||||
<string name="digest_fail" version="2">Digest niezgodne</string>
|
||||
<string name="digest_match" version="2">Digest zgodne</string>
|
||||
<string name="pid_signal">Proces {1} zakończony z sygnałem: {2}</string>
|
||||
<string name="pid_error">Proces {1} zakończony z błędem: {2}</string>
|
||||
<string name="install_dumlock">Instalowanie HTC Dumlock do systemu...</string>
|
||||
@@ -670,4 +670,4 @@
|
||||
<string name="up_a_level">(Cofnij)</string>
|
||||
<string name="install_reboot">Ponowne uruchomienie za 5 sekund</string>
|
||||
</resources>
|
||||
</language>
|
||||
</language>
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
<string name="enc_disabled">desativado - definir uma senha para habilitar</string>
|
||||
<string name="enc_enabled">ativado</string>
|
||||
<string name="enable_backup_comp_chk">Habilitar a compactação</string>
|
||||
<string name="skip_md5_backup_chk">Geração de Skip MD5 durante a cópia de segurança</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Geração de Skip Digest durante a cópia de segurança</string>
|
||||
<string name="disable_backup_space_chk">Desativar a verificação de espaço livre</string>
|
||||
<string name="refresh_sizes_btn">Atualizar os tamanhos</string>
|
||||
<string name="swipe_backup">Deslize para a Cópia de Segurança</string>
|
||||
@@ -232,7 +232,7 @@
|
||||
<string name="restore_try_decrypt_s">Tentando a descriptografia</string>
|
||||
<string name="restore_backup_date">Cópia de Segurança feita em %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Selecione partições a restaurar:</string>
|
||||
<string name="restore_enable_md5_chk">Habilitar verificação de MD5 dos arquivos de Cópia de Segurança</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Habilitar verificação de Digest dos arquivos de Cópia de Segurança</string>
|
||||
<string name="restore_complete">Restauração completa</string>
|
||||
<string name="swipe_restore">Deslize para restaurar</string>
|
||||
<string name="swipe_restore_s"> Restauração</string>
|
||||
@@ -458,11 +458,11 @@
|
||||
<string name="mtp_crash">MTP caiu, não começando MTP na inicialização.</string>
|
||||
<string name="decrypt_success">Com êxito descriptografada com a senha padrão.</string>
|
||||
<string name="unable_to_decrypt">Não é possível descriptografar com senha padrão. Você pode precisar executar um formato de dados.</string>
|
||||
<string name="generating_md51">Gerar o MD5</string>
|
||||
<string name="generating_md52"> * Gerar o md5...</string>
|
||||
<string name="md5_created"> * MD5 criado.</string>
|
||||
<string name="md5_error"> * MD5 erro!</string>
|
||||
<string name="md5_compute_error"> * Erro MD5 de computação.</string>
|
||||
<string name="generating_digest1" version="2">Gerar o Digest</string>
|
||||
<string name="generating_digest2" version="2"> * Gerar o Digest...</string>
|
||||
<string name="digest_created" version="2"> * Digest criado.</string>
|
||||
<string name="digest_error" version="2"> * Digest erro!</string>
|
||||
<string name="digest_compute_error" version="2"> * Erro Digest de computação.</string>
|
||||
<string name="current_date">(Data atual)</string>
|
||||
<string name="auto_generate">(Auto gerar)</string>
|
||||
<string name="unable_to_locate_partition">Não é possível localizar a partição \'{1}\' para cálculos de cópia de segurança.</string>
|
||||
@@ -481,8 +481,8 @@
|
||||
<string name="backup_completed">[CÓPIA DE SEGURANÇA CONCLUÍDO EM {1} SEGUNDOS]</string>
|
||||
<string name="restore_started">[RESTAURAÇÃO COMEÇADA]</string>
|
||||
<string name="restore_folder">Restaurar a pasta: \'{1}\'</string>
|
||||
<string name="verifying_md5">Verificando o MD5</string>
|
||||
<string name="skip_md5">Saltando de verificação MD5 com base na configuração de usuário.</string>
|
||||
<string name="verifying_digest" version="2">Verificando o Digest</string>
|
||||
<string name="skip_digest" version="2">Saltando de verificação Digest com base na configuração de usuário.</string>
|
||||
<string name="calc_restore">Cálculo de restauração de detalhes...</string>
|
||||
<string name="restore_read_only">Não é possível restaurar {1}..--montada somente leitura.</string>
|
||||
<string name="restore_unable_locate">Não é possível localizar a partição \'{1}\' para restaurar.</string>
|
||||
@@ -540,9 +540,9 @@
|
||||
<string name="cannot_resize">Não é possível redimensionar {1}.</string>
|
||||
<string name="repair_resize">Reparação de {1} antes de redimensionamento.</string>
|
||||
<string name="unable_resize">Não é possível redimensionar {1}.</string>
|
||||
<string name="no_md5_found">Nenhum arquivo md5 foi encontrado para \'{1}\'. Por favor, cancelar a seleção de verificação MD5 habilitar para restaurar.</string>
|
||||
<string name="md5_fail_match">MD5 não conseguiram corresponder na \'{1}\'.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Nenhum arquivo Digest foi encontrado para \'{1}\'. Por favor, cancelar a seleção de verificação Digest habilitar para restaurar.</string>
|
||||
<string name="digest_fail_match" version="2">Digest não conseguiram corresponder na \'{1}\'.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Falha ao descriptografar arquivo tar \'{1}\'</string>
|
||||
<string name="format_data_msg">Você pode precisar reiniciar recuperação para ser capaz de usar /data novamente.</string>
|
||||
<string name="format_data_err">Não é possível formatar para remover a criptografia.</string>
|
||||
@@ -563,7 +563,7 @@
|
||||
<string name="backup_folder_set">Pasta da cópia de segurança definida como \'{1}\'</string>
|
||||
<string name="locate_backup_err">Não é possível localizar a cópia de segurança \'{1}\'</string>
|
||||
<string name="set_restore_opt">Definir opções de restauração: \'{1}\':</string>
|
||||
<string name="md5_check_skip">Ignorar verificação de MD5 é na</string>
|
||||
<string name="digest_check_skip" version="2">Ignorar verificação de Digest é na</string>
|
||||
<string name="ors_encrypt_restore_err">Não é possível usar OpenRecoveryScript para restaurar uma cópia de segurança criptografada.</string>
|
||||
<string name="mounting">Montando</string>
|
||||
<string name="unmounting">Desmontando</string>
|
||||
@@ -584,7 +584,7 @@
|
||||
<string name="installing_zip">Instalando o arquivo zip \'{1}\'</string>
|
||||
<string name="select_backup_opt">Definir opções da cópia de segurança:</string>
|
||||
<string name="compression_on">Compressão é na</string>
|
||||
<string name="md5_off">Geração de MD5 está fora</string>
|
||||
<string name="digest_off" version="2">Geração de Digest está fora</string>
|
||||
<string name="backup_fail">Cópia de segurança falhou</string>
|
||||
<string name="backup_clean">Falha de backup. Limpar a pasta de Backup.</string>
|
||||
<string name="running_recovery_commands">Executando comandos de recuperação</string>
|
||||
@@ -592,15 +592,15 @@
|
||||
<string name="running_ors">OpenRecoveryScript em execução</string>
|
||||
<string name="ors_complete">OpenRecoveryScript completa</string>
|
||||
<string name="no_updater_binary">Não foi possível encontrar \'{1}\' no arquivo zip.</string>
|
||||
<string name="check_for_md5">Verificação de arquivo MD5...</string>
|
||||
<string name="check_for_digest" version="2">Verificação de arquivo Digest...</string>
|
||||
<string name="fail_sysmap">Falha ao mapear o arquivo \'{1}\'</string>
|
||||
<string name="verify_zip_sig">Verificar a assinatura do zip...</string>
|
||||
<string name="verify_zip_fail">Falha de verificação de assinatura do arquivo zip!</string>
|
||||
<string name="verify_zip_done">Assinatura zip é verificada com êxito.</string>
|
||||
<string name="zip_corrupt">O arquivo zip está corrompido!</string>
|
||||
<string name="no_md5">Saltando de verificação MD5: nenhum arquivo MD5 encontrado</string>
|
||||
<string name="md5_fail">Não coincide com MD5</string>
|
||||
<string name="md5_match">Correspondência de MD5</string>
|
||||
<string name="no_digest" version="2">Saltando de verificação Digest: nenhum arquivo Digest encontrado</string>
|
||||
<string name="digest_fail" version="2">Não coincide com Digest</string>
|
||||
<string name="digest_match" version="2">Correspondência de Digest</string>
|
||||
<string name="pid_signal">{1} processo terminou com sinal: {2}</string>
|
||||
<string name="pid_error">{1} processo terminou com erro: {2}</string>
|
||||
<string name="install_dumlock">Instalação HTC Dumlock sistema...</string>
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
<string name="enc_disabled">выключено - установите пароль для включения</string>
|
||||
<string name="enc_enabled">включено</string>
|
||||
<string name="enable_backup_comp_chk">Использовать сжатие</string>
|
||||
<string name="skip_md5_backup_chk">Пропустить вычисление MD5</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Пропустить вычисление MD5</string>
|
||||
<string name="disable_backup_space_chk" version="2">Отключить проверку свободного места</string>
|
||||
<string name="current_boot_slot">Текущий слот: %tw_active_slot%</string>
|
||||
<string name="boot_slot_a">Слот A</string>
|
||||
@@ -250,7 +250,7 @@
|
||||
<string name="restore_try_decrypt_s">Попытка расшифровки</string>
|
||||
<string name="restore_backup_date">Резервная копия создана: %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Выбор раздела для восстановления:</string>
|
||||
<string name="restore_enable_md5_chk">Включить проверку MD5 файлов резервной копии</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Включить проверку Digest файлов резервной копии</string>
|
||||
<string name="restore_complete">Восстановление завершено</string>
|
||||
<string name="swipe_restore">Свайп для восстановления</string>
|
||||
<string name="swipe_restore_s"> Восстановление</string>
|
||||
@@ -490,12 +490,12 @@
|
||||
<string name="mtp_crash">Сбой MTP: MTP не запущен при загрузке.</string>
|
||||
<string name="decrypt_success">Расшифровка выполнена успешно с паролем по умолчанию.</string>
|
||||
<string name="unable_to_decrypt">Невозможно расшифровать с паролем по умолчанию. Возможно потребуется выполнить форматирование Data.</string>
|
||||
<string name="generating_md51">Вычисление MD5</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * Вычисление md5...</string>
|
||||
<string name="md5_created"> * MD5 создана.</string>
|
||||
<string name="md5_error"> * Ошибка MD5!</string>
|
||||
<string name="md5_compute_error"> * Ошибка вычисления MD5.</string>
|
||||
<string name="generating_digest1" version="2">Вычисление Digest</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="2"> * Вычисление Digest...</string>
|
||||
<string name="digest_created" version="2"> * Digest создана.</string>
|
||||
<string name="digest_error" version="2"> * Ошибка Digest!</string>
|
||||
<string name="digest_compute_error" version="2"> * Ошибка вычисления Digest.</string>
|
||||
<string name="current_date">(Текущая дата)</string>
|
||||
<string name="auto_generate">(Создать автоматически)</string>
|
||||
<string name="unable_to_locate_partition">Не удается найти '{1}' раздел для расчета копирования.</string>
|
||||
@@ -516,8 +516,8 @@
|
||||
<string name="restore_folder">Папка для восстановления: '{1}'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} выполнено за {2} секунд(ы)]</string>
|
||||
<string name="verifying_md5">Проверка MD5</string>
|
||||
<string name="skip_md5">Пропуск проверки MD5 согласно настройкам.</string>
|
||||
<string name="verifying_digest" version="2">Проверка Digest</string>
|
||||
<string name="skip_digest" version="2">Пропуск проверки Digest согласно настройкам.</string>
|
||||
<string name="calc_restore">Вычисление информации о восстановлении...</string>
|
||||
<string name="restore_read_only">Невозможно восстановить {1} -- смонтировано только для чтения.</string>
|
||||
<string name="restore_unable_locate">Не удается найти '{1}' раздел для восстановления.</string>
|
||||
@@ -580,9 +580,9 @@
|
||||
<string name="cannot_resize">Невозможно изменить размер {1}.</string>
|
||||
<string name="repair_resize">Восстановление {1} перед изменением размера.</string>
|
||||
<string name="unable_resize">Не удается изменить размер {1}.</string>
|
||||
<string name="no_md5_found">Отсутствует файл md5 для '{1}'. Пожалуйста отмените выбор проверки MD5 при восстановлении.</string>
|
||||
<string name="md5_fail_match">MD5 не соответствует '{1}'.</string>
|
||||
<string name="md5_matched">MD5 соответствует '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Отсутствует файл digest для '{1}'. Пожалуйста отмените выбор проверки Digest при восстановлении.</string>
|
||||
<string name="digest_fail_match" version="2">Digest не соответствует '{1}'.</string>
|
||||
<string name="digest_matched" version="2">Digest соответствует '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Не удается расшифровать tar-файл '{1}'</string>
|
||||
<string name="format_data_msg">Вам, возможно, потребуется перезагрузись рекавери, чтобы иметь возможность использовать /data снова.</string>
|
||||
<string name="format_data_err">Невозможно отформатировать и удалить шифрование.</string>
|
||||
@@ -604,7 +604,7 @@
|
||||
<string name="backup_folder_set">Папка для резервной копии установлена в '{1}'</string>
|
||||
<string name="locate_backup_err">Не удается найти резервную копию '{1}'</string>
|
||||
<string name="set_restore_opt">Установки опций восстановления: '{1}':</string>
|
||||
<string name="md5_check_skip">Пропуск проверки MD5 включен</string>
|
||||
<string name="digest_check_skip" version="2">Пропуск проверки Digest включен</string>
|
||||
<string name="ors_encrypt_restore_err">Не удается использовать OpenRecoveryScript для восстановления зашифрованной резервной копии.</string>
|
||||
<string name="mounting">Монтирование</string>
|
||||
<string name="unmounting">Размонтирование</string>
|
||||
@@ -625,7 +625,7 @@
|
||||
<string name="installing_zip">Установка zip файла '{1}'</string>
|
||||
<string name="select_backup_opt">Установка опций резервного копирования:</string>
|
||||
<string name="compression_on">Сжатие включено</string>
|
||||
<string name="md5_off">Вычисление MD5 выключено</string>
|
||||
<string name="digest_off" version="2">Вычисление Digest выключено</string>
|
||||
<string name="backup_fail">Ошибка резервного копирования</string>
|
||||
<string name="backup_clean">Ошибка резервного копирования. Очистка папки с резервной копией.</string>
|
||||
<string name="running_recovery_commands">Выполнение команд рекавери</string>
|
||||
@@ -633,15 +633,15 @@
|
||||
<string name="running_ors">Выполнение OpenRecoveryScript</string>
|
||||
<string name="ors_complete">OpenRecoveryScript выполнен</string>
|
||||
<string name="invalid_zip_format">Неверный формат zip файла!</string>
|
||||
<string name="check_for_md5">Проверка MD5-файлов...</string>
|
||||
<string name="check_for_digest" version="2">Проверка Digest-файлов...</string>
|
||||
<string name="fail_sysmap">Не удалось отобразить в память файл '{1}'</string>
|
||||
<string name="verify_zip_sig">Проверка подписи zip...</string>
|
||||
<string name="verify_zip_fail">Подпись Zip не прошла проверку!</string>
|
||||
<string name="verify_zip_done">Подпись Zip проверена успешно.</string>
|
||||
<string name="zip_corrupt">Zip-файл поврежден!</string>
|
||||
<string name="no_md5">Пропуск проверки MD5: не найден MD5-файл</string>
|
||||
<string name="md5_fail">MD5 не соответствует</string>
|
||||
<string name="md5_match">MD5 соответствует</string>
|
||||
<string name="no_digest" version="2">Пропуск проверки Digest: не найден Digest-файл</string>
|
||||
<string name="digest_fail" version="2">Digest не соответствует</string>
|
||||
<string name="digest_match" version="2">Digest соответствует</string>
|
||||
<string name="pid_signal">Процесс {1} завершился с кодом {2}</string>
|
||||
<string name="pid_error">Процесс {1} завершился с ОШИБКОЙ: {2}</string>
|
||||
<string name="install_dumlock">Установка HTC Dumlock в систему...</string>
|
||||
|
||||
+640
-640
File diff suppressed because it is too large
Load Diff
@@ -199,7 +199,7 @@
|
||||
<string name="enc_disabled">onemogočeno - nastavite geslo za omogočanje</string>
|
||||
<string name="enc_enabled">omogočeno</string>
|
||||
<string name="enable_backup_comp_chk">Omogoči stiskanje</string>
|
||||
<string name="skip_md5_backup_chk">Preskoči ustvarjanje razpršila MD5 med varnostnim kopiranjem</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Preskoči ustvarjanje razpršila Digest med varnostnim kopiranjem</string>
|
||||
<string name="disable_backup_space_chk">Onemogoči preverjanje nezasedenega prostora</string>
|
||||
<string name="refresh_sizes_btn">Osveži velikosti</string>
|
||||
<string name="swipe_backup">Povlecite za var. kopiranje</string>
|
||||
@@ -232,7 +232,7 @@
|
||||
<string name="restore_try_decrypt_s">Poizkušanje odšifriranja</string>
|
||||
<string name="restore_backup_date">Varnostna kopija ustvarjena %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Izberite razdelke za obnovitev:</string>
|
||||
<string name="restore_enable_md5_chk">Omogoči preverjanje razpršila MD5 varnostnih kopij</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Omogoči preverjanje razpršila Digest varnostnih kopij</string>
|
||||
<string name="restore_complete">Obnavljanje končano</string>
|
||||
<string name="swipe_restore">Povlecite za obnovitev</string>
|
||||
<string name="swipe_restore_s"> Obnovi</string>
|
||||
@@ -458,11 +458,11 @@
|
||||
<string name="mtp_crash">MTP se je sesul, MTP se ob zagonu ne bo začel.</string>
|
||||
<string name="decrypt_success">Uspešno odšifrirano s privzetim geslom.</string>
|
||||
<string name="unable_to_decrypt">Odšifriranje s privzetim geslom ni mogoče. Morda boste moral sformatirati podatke.</string>
|
||||
<string name="generating_md51">Ustvarjanje razpršila MD5</string>
|
||||
<string name="generating_md52"> * Ustvarjanje razpršila MD5 …</string>
|
||||
<string name="md5_created"> * Razpršilo MD5 ustvarjeno.</string>
|
||||
<string name="md5_error"> * Napaka razpršila MD5!</string>
|
||||
<string name="md5_compute_error"> * Napaka pri računanju razpršila MD5.</string>
|
||||
<string name="generating_digest1" version="2">Ustvarjanje razpršila Digest</string>
|
||||
<string name="generating_digest2" version="2"> * Ustvarjanje razpršila Digest …</string>
|
||||
<string name="digest_created" version="2"> * Razpršilo Digest ustvarjeno.</string>
|
||||
<string name="digest_error" version="2"> * Napaka razpršila Digest!</string>
|
||||
<string name="digest_compute_error" version="2"> * Napaka pri računanju razpršila Digest.</string>
|
||||
<string name="current_date">(trenutni datum)</string>
|
||||
<string name="auto_generate">(samodejno ustvari)</string>
|
||||
<string name="unable_to_locate_partition">Razdelka \'{1}\' za računanje varnostnih kopij ni mogoče najti.</string>
|
||||
@@ -481,8 +481,8 @@
|
||||
<string name="backup_completed">[VARNOSTNO KOPIRANJE KONČANO V {1} S]</string>
|
||||
<string name="restore_started">[OBNOVITEV SE JE ZAČELA]</string>
|
||||
<string name="restore_folder">Mapa obnovitve: \'{1}\'</string>
|
||||
<string name="verifying_md5">Preverjanje razpršila MD5</string>
|
||||
<string name="skip_md5">Preskakovanje preverjanja razpršila MD5 glede na uporabniško nastavitev.</string>
|
||||
<string name="verifying_digest" version="2">Preverjanje razpršila Digest</string>
|
||||
<string name="skip_digest" version="2">Preskakovanje preverjanja razpršila Digest glede na uporabniško nastavitev.</string>
|
||||
<string name="calc_restore">Računanje podrobnosti obnovitve …</string>
|
||||
<string name="restore_read_only">{1} ni mogoče obnoviti -- priklopljen je samo za branje.</string>
|
||||
<string name="restore_unable_locate">Razdelka \'{1}\' za obnovitev ni mogoče najti.</string>
|
||||
@@ -540,9 +540,9 @@
|
||||
<string name="cannot_resize">Velikosti {1} ni mogoče spremeniti.</string>
|
||||
<string name="repair_resize">Popravljanje {1} pred spremembo velikosti.</string>
|
||||
<string name="unable_resize">Velikosti {1} ni mogoče spremeniti.</string>
|
||||
<string name="no_md5_found">Za \'{1}\' ni bilo najdene datoteke MD5. Odstranite izbiro \'Omogoči preverjanje razpršila MD5\' za obnovitev.</string>
|
||||
<string name="md5_fail_match">Ujemanje razpršila MD5 na \'{1}\' je spodletelo.</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found" version="2">Za \'{1}\' ni bilo najdene datoteke Digest. Odstranite izbiro \'Omogoči preverjanje razpršila Digest\' za obnovitev.</string>
|
||||
<string name="digest_fail_match" version="2">Ujemanje razpršila Digest na \'{1}\' je spodletelo.</string>
|
||||
<string name="digest_matched" version="2">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">Odšifriranje datoteke TAR \'{1}\' je spodletelo</string>
|
||||
<string name="format_data_msg">Za ponovno uporabo /data boste morda morali ponovno zagnati obnovitev.</string>
|
||||
<string name="format_data_err">Formatiranje za odstranitev šifriranja ni mogoče.</string>
|
||||
@@ -563,7 +563,7 @@
|
||||
<string name="backup_folder_set">Mapa varnostnega kopiranja nastavljena na \'{1}\'</string>
|
||||
<string name="locate_backup_err">Varnostne kopije \'{1}\' ni mogoče najti</string>
|
||||
<string name="set_restore_opt">Nastavljanje možnosti za varnostno kopiranje: \'{1}\':</string>
|
||||
<string name="md5_check_skip">Preskak. preverjanja raz. MD5 je vkl.</string>
|
||||
<string name="digest_check_skip" version="2">Preskak. preverjanja raz. Digest je vkl.</string>
|
||||
<string name="ors_encrypt_restore_err">OpenRecoveryScript ni mogoče uporabiti za obnavljanje šifriranih varnostnih kopij.</string>
|
||||
<string name="mounting">Priklapljanje</string>
|
||||
<string name="unmounting">Odklapljanje</string>
|
||||
@@ -584,7 +584,7 @@
|
||||
<string name="installing_zip">Nameščanje datoteke ZIP \'{1}\'</string>
|
||||
<string name="select_backup_opt">Nastavljanje možnosti varnostnega kopiranja:</string>
|
||||
<string name="compression_on">Stiskanje je vklopljeno</string>
|
||||
<string name="md5_off">Ustvarjanje razpršila MD5 je izklopljeno</string>
|
||||
<string name="digest_off" version="2">Ustvarjanje razpršila Digest je izklopljeno</string>
|
||||
<string name="backup_fail">Var. kop. je spodletelo</string>
|
||||
<string name="backup_clean">Varnostno kopiranje je spodletelo. Čiščenje mape varnostnega kopiranja.</string>
|
||||
<string name="running_recovery_commands">Izvajanje ukazov za obnovitev</string>
|
||||
@@ -592,15 +592,15 @@
|
||||
<string name="running_ors">Izvajanje OpenRecoveryScript</string>
|
||||
<string name="ors_complete">OpenRecoveryScript končan</string>
|
||||
<string name="no_updater_binary">V datoteki ZIP ni bilo mogoče najti \'{1}\'</string>
|
||||
<string name="check_for_md5">Preverjanje za datoteko razpršila MD5 …</string>
|
||||
<string name="check_for_digest" version="2">Preverjanje za datoteko razpršila Digest …</string>
|
||||
<string name="fail_sysmap">Preslikava datoteke \'{1}\' je spodletela</string>
|
||||
<string name="verify_zip_sig">Preverjanje podpisa ZIP</string>
|
||||
<string name="verify_zip_fail">Preverjanje podpisa ZIP je spodletelo!</string>
|
||||
<string name="verify_zip_done">Preverjanje podpisa ZIP je bilo uspešno!</string>
|
||||
<string name="zip_corrupt">Datoteka ZIP je poškodovana!</string>
|
||||
<string name="no_md5">Preskakovanje preverjanja razpršila MD5: datoteka MD5 ni bila najdena</string>
|
||||
<string name="md5_fail">MD5 se ne ujema</string>
|
||||
<string name="md5_match">MD5 se ujema</string>
|
||||
<string name="no_digest" version="2">Preskakovanje preverjanja razpršila Digest: datoteka Digest ni bila najdena</string>
|
||||
<string name="digest_fail" version="2">Digest se ne ujema</string>
|
||||
<string name="digest_match" version="2">Digest se ujema</string>
|
||||
<string name="pid_signal">{1} opravilo se je končalo s signalom: {2}</string>
|
||||
<string name="pid_error">{1} opravilo se je končalo z NAPAKO: {2}</string>
|
||||
<string name="install_dumlock">Nameščanje HTC Dumlocka na sistem …</string>
|
||||
|
||||
@@ -181,14 +181,14 @@
|
||||
<string name="su_installing">Installerar SuperSU</string>
|
||||
<string name="sel_storage_list">Välj lagring</string>
|
||||
<string name="ok_btn">OK</string>
|
||||
<string name="generating_md51">Genererar MD5</string>
|
||||
<string name="generating_md52"> * Genererar MD5...</string>
|
||||
<string name="md5_created"> * MD5 skapad.</string>
|
||||
<string name="md5_error"> * MD5-fel!</string>
|
||||
<string name="generating_digest1" version="2">Genererar Digest</string>
|
||||
<string name="generating_digest2" version="2"> * Genererar Digest...</string>
|
||||
<string name="digest_created" version="2"> * Digest skapad.</string>
|
||||
<string name="digest_error" version="2"> * Digest-fel!</string>
|
||||
<string name="current_date">(Dagens datum)</string>
|
||||
<string name="auto_generate">(Auto-generera)</string>
|
||||
<string name="available_space"> * Tillgängligt utrymme: {1}MB</string>
|
||||
<string name="verifying_md5">Verifierar MD5</string>
|
||||
<string name="verifying_digest" version="2">Verifierar Digest</string>
|
||||
<string name="update_part_details_done">...klar</string>
|
||||
<string name="done">Klar.</string>
|
||||
<string name="create_part">Skapar {1} partition...</string>
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
<string name="enc_disabled">devre dışı - etkinleştirmek için bir şifre ayarlayın</string>
|
||||
<string name="enc_enabled">etkin</string>
|
||||
<string name="enable_backup_comp_chk">Sıkıştırmayı etkinleştir</string>
|
||||
<string name="skip_md5_backup_chk">Yedekleme sırasında MD5 oluşturmayı geç</string>
|
||||
<string name="skip_digest_backup_chk" version="2">Yedekleme sırasında Digest oluşturmayı geç</string>
|
||||
<string name="disable_backup_space_chk">Boş Alan Denetimini Devre Dışı Bırak</string>
|
||||
<string name="refresh_sizes_btn">Boyutları Yenile</string>
|
||||
<string name="swipe_backup">Yedeklemek için Kaydır</string>
|
||||
@@ -232,7 +232,7 @@
|
||||
<string name="restore_try_decrypt_s">Çözülmeye Çalışılıyor</string>
|
||||
<string name="restore_backup_date">Yedek tarihi %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">Geri Yüklenecek Bölümleri Seç:</string>
|
||||
<string name="restore_enable_md5_chk">Yedek Dosyalarının MD5 Doğrulamasını Etkinleştir</string>
|
||||
<string name="restore_enable_digest_chk" version="2">Yedek Dosyalarının Digest Doğrulamasını Etkinleştir</string>
|
||||
<string name="restore_complete">Geri Yükleme Tamamlandı</string>
|
||||
<string name="swipe_restore">Geri Yüklemek için Kaydır</string>
|
||||
<string name="swipe_restore_s"> Geri Yükle</string>
|
||||
@@ -458,11 +458,11 @@
|
||||
<string name="mtp_crash">MTP Çöktü, açılışta başlatılmıyor.</string>
|
||||
<string name="decrypt_success">Varsayılan şifre ile çözüldü.</string>
|
||||
<string name="unable_to_decrypt">Varsayılan şifre ile çözülemedi. Veri Biçimlendirmesi yapmanız gerekebilir.</string>
|
||||
<string name="generating_md51">MD5 Oluşturuluyor</string>
|
||||
<string name="generating_md52"> * Md5 oluşturuluyor...</string>
|
||||
<string name="md5_created"> * MD5 Oluşturuldu.</string>
|
||||
<string name="md5_error"> * MD5 Hatası!</string>
|
||||
<string name="md5_compute_error"> * MD5 hesaplama hatası.</string>
|
||||
<string name="generating_digest1" version="2">Digest Oluşturuluyor</string>
|
||||
<string name="generating_digest2" version="2"> * Digest oluşturuluyor...</string>
|
||||
<string name="digest_created" version="2"> * Digest Oluşturuldu.</string>
|
||||
<string name="digest_error" version="2"> * Digest Hatası!</string>
|
||||
<string name="digest_compute_error" version="2"> * Digest hesaplama hatası.</string>
|
||||
<string name="current_date">(Geçerli Tarih)</string>
|
||||
<string name="auto_generate">(Otomatik Oluştur)</string>
|
||||
<string name="unable_to_locate_partition">Yedekleme hesaplamaları için \'{1}\' bölümü bulunamıyor.</string>
|
||||
@@ -481,8 +481,8 @@
|
||||
<string name="backup_completed">[YEDEKLEME {1} SANİYEDE TAMAMLANDI]</string>
|
||||
<string name="restore_started">[GERİ YÜKLEME BAŞLATILDI]</string>
|
||||
<string name="restore_folder">Geri yükleme klasörü: \'{1}\'</string>
|
||||
<string name="verifying_md5">MD5 Doğrulanıyor</string>
|
||||
<string name="skip_md5">Kullanıcı ayarına göre MD5 denetimi geçiliyor.</string>
|
||||
<string name="verifying_digest" version="2">Digest Doğrulanıyor</string>
|
||||
<string name="skip_digest" version="2">Kullanıcı ayarına göre Digest denetimi geçiliyor.</string>
|
||||
<string name="calc_restore">Geri yükleme ayrıntıları hesaplanıyor...</string>
|
||||
<string name="restore_read_only">{1} geri yüklenemiyor -- salt okunur bağlanmış.</string>
|
||||
<string name="restore_unable_locate">Geri yüklemek için \'{1}\' bölümü bulunamıyor.</string>
|
||||
@@ -547,4 +547,4 @@
|
||||
<string name="backing_up">{1} yedekleniyor...</string>
|
||||
<string name="backup_cancel">Yedekleme İptal Edildi</string>
|
||||
</resources>
|
||||
</language>
|
||||
</language>
|
||||
|
||||
+670
-681
File diff suppressed because it is too large
Load Diff
@@ -1711,8 +1711,8 @@
|
||||
|
||||
<checkbox>
|
||||
<placement x="%indent%" y="%row5_y%"/>
|
||||
<text>{@skip_md5_backup_chk=Skip MD5 generation during backup}</text>
|
||||
<data variable="tw_skip_md5_generate"/>
|
||||
<text>{@skip_digest_backup_chk=Skip Digest generation during backup}</text>
|
||||
<data variable="tw_skip_digest_generate"/>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
@@ -2429,8 +2429,8 @@
|
||||
|
||||
<checkbox>
|
||||
<placement x="%indent%" y="%row17_y%"/>
|
||||
<text>{@restore_enable_md5_chk=Enable MD5 Verification of Backup Files}</text>
|
||||
<data variable="tw_skip_md5_check"/>
|
||||
<text>{@restore_enable_digest_chk=Enable Digest Verification of Backup Files}</text>
|
||||
<data variable="tw_skip_digest_check"/>
|
||||
</checkbox>
|
||||
|
||||
<button style="main_button_half_height">
|
||||
@@ -3076,11 +3076,11 @@
|
||||
<listitem name="{@disable_backup_space_chk=Disable free space check before backup}">
|
||||
<data variable="tw_disable_free_space"/>
|
||||
</listitem>
|
||||
<listitem name="{@skip_md5_backup_chk=Skip MD5 generation during backup}">
|
||||
<data variable="tw_skip_md5_generate"/>
|
||||
<listitem name="{@skip_digest_backup_chk=Skip Digest generation during backup}">
|
||||
<data variable="tw_skip_digest_generate"/>
|
||||
</listitem>
|
||||
<listitem name="{@restore_enable_md5_chk=Enable MD5 verification of backup files}">
|
||||
<data variable="tw_skip_md5_check"/>
|
||||
<listitem name="{@restore_enable_digest_chk=Enable Digest verification of backup files}">
|
||||
<data variable="tw_skip_digest_check"/>
|
||||
</listitem>
|
||||
<listitem name="{@use24clock_chk=Use 24-hour clock}">
|
||||
<data variable="tw_military_time"/>
|
||||
@@ -3098,6 +3098,10 @@
|
||||
<condition var1="tw_simulate_actions" var2="1"/>
|
||||
<data variable="tw_simulate_fail"/>
|
||||
</listitem>
|
||||
<listitem name="{@sha2_chk=Use SHA2 for hashing}">
|
||||
<condition var1="tw_no_sha2" var2="0"/>
|
||||
<data variable="tw_use_sha2"/>
|
||||
</listitem>
|
||||
</listbox>
|
||||
|
||||
<button style="main_button_half_height">
|
||||
|
||||
+12
-12
@@ -2025,8 +2025,8 @@
|
||||
<listitem name="{@enable_backup_comp_chk=Enable compression}">
|
||||
<data variable="tw_use_compression"/>
|
||||
</listitem>
|
||||
<listitem name="{@skip_md5_backup_chk=Skip MD5 generation during backup}">
|
||||
<data variable="tw_skip_md5_generate"/>
|
||||
<listitem name="{@skip_digest_backup_chk=Skip Digest generation during backup}">
|
||||
<data variable="tw_skip_digest_generate"/>
|
||||
</listitem>
|
||||
<listitem name="{@disable_backup_space_chk=Disable free space check before backup}">
|
||||
<data variable="tw_disable_free_space"/>
|
||||
@@ -2214,8 +2214,8 @@
|
||||
<listitem name="{@enable_backup_comp_chk=Enable compression}">
|
||||
<data variable="tw_use_compression"/>
|
||||
</listitem>
|
||||
<listitem name="{@skip_md5_backup_chk=Skip MD5 generation during backup}">
|
||||
<data variable="tw_skip_md5_generate"/>
|
||||
<listitem name="{@skip_digest_backup_chk=Skip Digest generation during backup}">
|
||||
<data variable="tw_skip_digest_generate"/>
|
||||
</listitem>
|
||||
<listitem name="{@disable_backup_space_chk=Disable free space check before backup}">
|
||||
<data variable="tw_disable_free_space"/>
|
||||
@@ -2807,8 +2807,8 @@
|
||||
|
||||
<listbox style="scrolllist">
|
||||
<placement x="%col1_x_left%" y="%row2_header_y%" w="%content_width%" h="%partitionlist_wipe_height%"/>
|
||||
<listitem name="{@restore_enable_md5_chk=Enable MD5 Verification of Backup Files}">
|
||||
<data variable="tw_skip_md5_check"/>
|
||||
<listitem name="{@restore_enable_digest_chk=Enable Digest Verification of Backup Files}">
|
||||
<data variable="tw_skip_digest_check"/>
|
||||
</listitem>
|
||||
</listbox>
|
||||
|
||||
@@ -2972,8 +2972,8 @@
|
||||
|
||||
<listbox style="listbox_options">
|
||||
<placement x="%col1_x_right%" y="%row4a_y%" w="%content_half_width%" h="80"/>
|
||||
<listitem name="{@restore_enable_md5_chk=Enable MD5 Verification of Backup Files}">
|
||||
<data variable="tw_skip_md5_check"/>
|
||||
<listitem name="{@restore_enable_digest_chk=Enable Digest Verification of Backup Files}">
|
||||
<data variable="tw_skip_digest_check"/>
|
||||
</listitem>
|
||||
</listbox>
|
||||
|
||||
@@ -3584,11 +3584,11 @@
|
||||
<listitem name="{@disable_backup_space_chk=Disable free space check before backup}">
|
||||
<data variable="tw_disable_free_space"/>
|
||||
</listitem>
|
||||
<listitem name="{@skip_md5_backup_chk=Skip MD5 generation during backup}">
|
||||
<data variable="tw_skip_md5_generate"/>
|
||||
<listitem name="{@skip_digest_backup_chk=Skip Digest generation during backup}">
|
||||
<data variable="tw_skip_digest_generate"/>
|
||||
</listitem>
|
||||
<listitem name="{@restore_enable_md5_chk=Enable MD5 verification of backup files}">
|
||||
<data variable="tw_skip_md5_check"/>
|
||||
<listitem name="{@restore_enable_digest_chk=Enable Digest verification of backup files}">
|
||||
<data variable="tw_skip_digest_check"/>
|
||||
</listitem>
|
||||
<listitem name="{@use24clock_chk=Use 24-hour clock}">
|
||||
<data variable="tw_military_time"/>
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
<string name="enc_disabled">無効 - パスワード設定で有効化します</string>
|
||||
<string name="enc_enabled">有効</string>
|
||||
<string name="enable_backup_comp_chk">圧縮する</string>
|
||||
<string name="skip_md5_backup_chk">バックアップ時に MD5 を生成しない</string>
|
||||
<string name="skip_digest_backup_chk">バックアップ時に Digest を生成しない</string>
|
||||
<string name="disable_backup_space_chk">空き容量のチェックを無効化する</string>
|
||||
<string name="refresh_sizes_btn">サイズの更新</string>
|
||||
<string name="swipe_backup">スワイプでバックアップ</string>
|
||||
@@ -235,7 +235,7 @@
|
||||
<string name="restore_try_decrypt_s">復号の試行中</string>
|
||||
<string name="restore_backup_date">%tw_restore_file_date% に作成されたバックアップ</string>
|
||||
<string name="restore_sel_part">リストアするパーティションの選択:</string>
|
||||
<string name="restore_enable_md5_chk">バックアップファイルの MD5 検証を有効化する</string>
|
||||
<string name="restore_enable_digest_chk">バックアップファイルの Digest 検証を有効化する</string>
|
||||
<string name="restore_complete">リストアしました</string>
|
||||
<string name="swipe_restore">スワイプでリストア</string>
|
||||
<string name="swipe_restore_s"> リストア</string>
|
||||
@@ -475,12 +475,12 @@
|
||||
<string name="mtp_crash">MTP がクラッシュしました。起動時に開始しません。</string>
|
||||
<string name="decrypt_success">デフォルトのパスワードで復号しました。</string>
|
||||
<string name="unable_to_decrypt">デフォルトのパスワードで復号できません。data の初期化が必要です。</string>
|
||||
<string name="generating_md51">MD5 の生成中</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * MD5 の生成中...</string>
|
||||
<string name="md5_created"> * MD5 を生成しました。</string>
|
||||
<string name="md5_error"> * MD5 エラー!</string>
|
||||
<string name="md5_compute_error"> * MD5の計算エラーが起きました。</string>
|
||||
<string name="generating_digest1">Digest の生成中</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2"> * Digest の生成中...</string>
|
||||
<string name="digest_created"> * Digest を生成しました。</string>
|
||||
<string name="digest_error"> * Digest エラー!</string>
|
||||
<string name="digest_compute_error"> * Digestの計算エラーが起きました。</string>
|
||||
<string name="current_date">(現在の日付)</string>
|
||||
<string name="auto_generate">(自動生成)</string>
|
||||
<string name="unable_to_locate_partition">バックアップの計算で \'{1}\' パーティションが見つかりません。</string>
|
||||
@@ -501,8 +501,8 @@
|
||||
<string name="restore_folder">リストアフォルダ: \'{1}\'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} 完了 ({2} 秒)]</string>
|
||||
<string name="verifying_md5">MD5 の検証中</string>
|
||||
<string name="skip_md5">ユーザー設定に基づき MD5 の検証をスキップします。</string>
|
||||
<string name="verifying_digest">Digest の検証中</string>
|
||||
<string name="skip_digest">ユーザー設定に基づき Digest の検証をスキップします。</string>
|
||||
<string name="calc_restore">リストアの詳細を計算中...</string>
|
||||
<string name="restore_read_only">{1} をリストアできません -- 読み取り専用でマウントされています。</string>
|
||||
<string name="restore_unable_locate">リストアする \'{1}\' パーティションが見つかりません。</string>
|
||||
@@ -564,9 +564,9 @@
|
||||
<string name="cannot_resize">{1} をリサイズできません。</string>
|
||||
<string name="repair_resize">リサイズの前に {1} を修復しています。</string>
|
||||
<string name="unable_resize">{1} をリサイズできません。</string>
|
||||
<string name="no_md5_found">\'{1}\' の MD5 ファイルが見つかりません。リストアするには MD5 の検証を無効化してください。</string>
|
||||
<string name="md5_fail_match">\'{1}\' で MD5 が一致しません。</string>
|
||||
<string name="md5_matched">MD5 matched for '{1}'.</string>
|
||||
<string name="no_digest_found">\'{1}\' の Digest ファイルが見つかりません。リストアするには Digest の検証を無効化してください。</string>
|
||||
<string name="digest_fail_match">\'{1}\' で Digest が一致しません。</string>
|
||||
<string name="digest_matched">Digest matched for '{1}'.</string>
|
||||
<string name="fail_decrypt_tar">tar ファイル '{1}' を復号できませんでした</string>
|
||||
<string name="format_data_msg">/data を再度使用するにはリカバリを再起動してください。</string>
|
||||
<string name="format_data_err">暗号化を解除するための初期化ができません。</string>
|
||||
@@ -587,7 +587,7 @@
|
||||
<string name="backup_folder_set">バックアップフォルダを '{1}' に設定しました</string>
|
||||
<string name="locate_backup_err">バックアップ \'{1}\' が見つかりません</string>
|
||||
<string name="set_restore_opt">リストアオプションの設定中: \'{1}\':</string>
|
||||
<string name="md5_check_skip">MD5 チェックのスキップが有効です</string>
|
||||
<string name="digest_check_skip">Digest チェックのスキップが有効です</string>
|
||||
<string name="ors_encrypt_restore_err">OpenRecoveryScript を使用して暗号化されたバックアップをリストアできません。</string>
|
||||
<string name="mounting">マウント中</string>
|
||||
<string name="unmounting">マウント解除中</string>
|
||||
@@ -608,7 +608,7 @@
|
||||
<string name="installing_zip">ZIP ファイル \'{1}\' をインストール中</string>
|
||||
<string name="select_backup_opt">バックアップオプションの設定中:</string>
|
||||
<string name="compression_on">圧縮は有効です</string>
|
||||
<string name="md5_off">MD5 生成は無効です</string>
|
||||
<string name="digest_off">Digest 生成は無効です</string>
|
||||
<string name="backup_fail">バックアップに失敗しました</string>
|
||||
<string name="backup_clean">バックアップに失敗しました。バックアップフォルダを掃除中です。</string>
|
||||
<string name="running_recovery_commands">リカバリコマンドの実行中</string>
|
||||
@@ -616,15 +616,15 @@
|
||||
<string name="running_ors">OpenRecoveryScript の実行中</string>
|
||||
<string name="ors_complete">OpenRecoveryScript を実行しました</string>
|
||||
<string name="no_updater_binary">ZIP ファイルの中で \'{1}\' が見つかりませんでした。</string>
|
||||
<string name="check_for_md5">MD5 ファイルをチェック中...</string>
|
||||
<string name="check_for_digest">Digest ファイルをチェック中...</string>
|
||||
<string name="fail_sysmap">ファイル \'{1}\' のマップに失敗しました</string>
|
||||
<string name="verify_zip_sig">ZIP の署名を検証中...</string>
|
||||
<string name="verify_zip_fail">ZIP の署名の検証に失敗しました!</string>
|
||||
<string name="verify_zip_done">ZIP の署名の検証に成功しました。</string>
|
||||
<string name="zip_corrupt">ZIP ファイルが破損しています!</string>
|
||||
<string name="no_md5">MD5 チェックをスキップ中: MD5 ファイルが見つかりません</string>
|
||||
<string name="md5_fail">MD5 が一致しません</string>
|
||||
<string name="md5_match">MD5 が一致しました</string>
|
||||
<string name="no_digest">Digest チェックをスキップ中: Digest ファイルが見つかりません</string>
|
||||
<string name="digest_fail">Digest が一致しません</string>
|
||||
<string name="digest_match">Digest が一致しました</string>
|
||||
<string name="pid_signal">{1} プロセスはこのシグナルで終了しました: {2}</string>
|
||||
<string name="pid_error">{1} プロセスはこのエラーで終了しました: {2}</string>
|
||||
<string name="install_dumlock">HTC Dumlock を system にインストール中...</string>
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
<string name="enc_disabled">已禁用 - 设置密码以启用</string>
|
||||
<string name="enc_enabled">已启用</string>
|
||||
<string name="enable_backup_comp_chk">启用压缩</string>
|
||||
<string name="skip_md5_backup_chk">当备份时跳过生成 MD5</string>
|
||||
<string name="skip_digest_backup_chk" version="2">当备份时跳过生成 Digest</string>
|
||||
<string name="disable_backup_space_chk">禁用剩余空间检查</string>
|
||||
<string name="current_boot_slot">当前分区:%tw_active_slot%</string>
|
||||
<string name="boot_slot_a">分区 A</string>
|
||||
@@ -253,7 +253,7 @@
|
||||
<string name="restore_try_decrypt_s">正在尝试解密</string>
|
||||
<string name="restore_backup_date">备份于 %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">选择要恢复的分区:</string>
|
||||
<string name="restore_enable_md5_chk">启用 MD5 校验备份文件</string>
|
||||
<string name="restore_enable_digest_chk" version="2">启用 Digest 校验备份文件</string>
|
||||
<string name="restore_complete">恢复完成</string>
|
||||
<string name="swipe_restore">滑动按钮确认恢复</string>
|
||||
<string name="swipe_restore_s"> 恢复</string>
|
||||
@@ -494,12 +494,12 @@
|
||||
<string name="mtp_crash">MTP 已崩溃。启动时不再加载 MTP。</string>
|
||||
<string name="decrypt_success">已使用默认密码解密成功。</string>
|
||||
<string name="unable_to_decrypt">无法使用默认密码来解密,您可能需要格式化 Data 分区。</string>
|
||||
<string name="generating_md51">正在生成 MD5</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * 正在生成 MD5…</string>
|
||||
<string name="md5_created"> * MD5 已生成。</string>
|
||||
<string name="md5_error"> * MD5 错误!</string>
|
||||
<string name="md5_compute_error"> * 计算 MD5 错误。</string>
|
||||
<string name="generating_digest1" version="2">正在生成 Digest</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="2"> * 正在生成 Digest…</string>
|
||||
<string name="digest_created" version="2"> * Digest 已生成。</string>
|
||||
<string name="digest_error" version="2"> * Digest 错误!</string>
|
||||
<string name="digest_compute_error" version="2"> * 计算 Digest 错误。</string>
|
||||
<string name="current_date">(Current Date)</string>
|
||||
<string name="auto_generate">(Auto Generate)</string>
|
||||
<string name="unable_to_locate_partition">未找到 '{1}' 分区。</string>
|
||||
@@ -520,8 +520,8 @@
|
||||
<string name="restore_folder">恢复文件夹:'{1}'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} 恢复完成({2} 秒)]</string>
|
||||
<string name="verifying_md5">正在校验 MD5</string>
|
||||
<string name="skip_md5">基于用户设置,已跳过 MD5 检查。</string>
|
||||
<string name="verifying_digest" version="2">正在校验 Digest</string>
|
||||
<string name="skip_digest" version="2">基于用户设置,已跳过 Digest 检查。</string>
|
||||
<string name="calc_restore">正在计算恢复详情…</string>
|
||||
<string name="restore_read_only">无法恢复 {1} -- 已挂载为只读。</string>
|
||||
<string name="restore_unable_locate">未找到 '{1}' 分区。</string>
|
||||
@@ -584,9 +584,9 @@
|
||||
<string name="cannot_resize">无法更改 {1} 大小。</string>
|
||||
<string name="repair_resize">在调整大小之前修复 {1}。</string>
|
||||
<string name="unable_resize">无法调整 {1} 大小。</string>
|
||||
<string name="no_md5_found">未找到 '{1}' 的 MD5 校验文件。请取消选中“启用 MD5 校验备份文件”复选框。</string>
|
||||
<string name="md5_fail_match">'{1}' MD5 校验失败。</string>
|
||||
<string name="md5_matched">MD5 匹配 '{1}'。</string>
|
||||
<string name="no_digest_found" version="2">未找到 '{1}' 的 Digest 校验文件。请取消选中“启用 Digest 校验备份文件”复选框。</string>
|
||||
<string name="digest_fail_match" version="2">'{1}' Digest 校验失败。</string>
|
||||
<string name="digest_matched" version="2">Digest 匹配 '{1}'。</string>
|
||||
<string name="fail_decrypt_tar">无法解密 tar 文件 '{1}'</string>
|
||||
<string name="format_data_msg">您可能需要重启 Recovery 才能使用/data。</string>
|
||||
<string name="format_data_err">无法格式化并删除加密。</string>
|
||||
@@ -608,7 +608,7 @@
|
||||
<string name="backup_folder">备份文件夹设置为:'{1}'</string>
|
||||
<string name="locate_backup_err">未找到备份文件 '{1}'</string>
|
||||
<string name="set_restore_opt">设置恢复选项:'{1}':</string>
|
||||
<string name="md5_check_skip">跳过校验 MD5 已开启</string>
|
||||
<string name="digest_check_skip" version="2">跳过校验 Digest 已开启</string>
|
||||
<string name="ors_encrypt_restore_err">无法使用 OpenRecoveryScript 脚本恢复加密备份。</string>
|
||||
<string name="mounting">正在挂载</string>
|
||||
<string name="unmounting">正在卸载</string>
|
||||
@@ -629,7 +629,7 @@
|
||||
<string name="installing_zip">正在安装 Zip 刷机包 '{1}'</string>
|
||||
<string name="select_backup_opt">设置备份选项:</string>
|
||||
<string name="compression_on">压缩选项已开启</string>
|
||||
<string name="md5_off">MD5 生成已关闭</string>
|
||||
<string name="digest_off" version="2">Digest 生成已关闭</string>
|
||||
<string name="backup_fail">备份失败</string>
|
||||
<string name="backup_clean">备份失败。正在清理备份文件夹。</string>
|
||||
<string name="running_recovery_commands">运行 Recovery 命令</string>
|
||||
@@ -637,15 +637,15 @@
|
||||
<string name="running_ors">运行 OpenRecoveryScript 脚本</string>
|
||||
<string name="ors_complete">运行 OpenRecoveryScript 脚本完成</string>
|
||||
<string name="invalid_zip_format">Zip 文件格式无效!</string>
|
||||
<string name="check_for_md5">正在检测 MD5…</string>
|
||||
<string name="check_for_digest" version="2">正在检测 Digest…</string>
|
||||
<string name="fail_sysmap">映射文件 '{1}' 失败</string>
|
||||
<string name="verify_zip_sig">正在校验 Zip 刷机包签名…</string>
|
||||
<string name="verify_zip_fail">刷机包签名校验失败!</string>
|
||||
<string name="verify_zip_done">刷机包签名校验成功。</string>
|
||||
<string name="zip_corrupt">刷机包已损坏!</string>
|
||||
<string name="no_md5">跳过 MD5 校验:未找到 MD5 文件</string>
|
||||
<string name="md5_fail">MD5 不匹配</string>
|
||||
<string name="md5_match">MD5 校验成功</string>
|
||||
<string name="no_digest" version="2">跳过 Digest 校验:未找到 Digest 文件</string>
|
||||
<string name="digest_fail" version="2">Digest 不匹配</string>
|
||||
<string name="digest_match" version="2">Digest 校验成功</string>
|
||||
<string name="pid_signal">{1} 过程结束,标志:{2}</string>
|
||||
<string name="pid_error">{1} 过程结束,错误:{2}</string>
|
||||
<string name="install_dumlock">安装 HTC Dumlock 到系统…</string>
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
<string name="enc_disabled">已禁用 - 設置密碼以啟用</string>
|
||||
<string name="enc_enabled">已啟用</string>
|
||||
<string name="enable_backup_comp_chk">啟用壓縮</string>
|
||||
<string name="skip_md5_backup_chk">備份時跳過生成 MD5</string>
|
||||
<string name="skip_digest_backup_chk" version="2">備份時跳過生成 Digest</string>
|
||||
<string name="disable_backup_space_chk">禁用剩餘空間檢查</string>
|
||||
<string name="current_boot_slot">當前分區:%tw_active_slot%</string>
|
||||
<string name="boot_slot_a">分區 A</string>
|
||||
@@ -253,7 +253,7 @@
|
||||
<string name="restore_try_decrypt_s">正在嘗試解密</string>
|
||||
<string name="restore_backup_date">備份於 %tw_restore_file_date%</string>
|
||||
<string name="restore_sel_part">選擇要恢復的分區:</string>
|
||||
<string name="restore_enable_md5_chk">啟用 MD5 校驗備份檔案</string>
|
||||
<string name="restore_enable_digest_chk" version="2">啟用 Digest 校驗備份檔案</string>
|
||||
<string name="restore_complete">恢復完成</string>
|
||||
<string name="swipe_restore">滑動按鈕確認恢復</string>
|
||||
<string name="swipe_restore_s"> 恢復</string>
|
||||
@@ -494,12 +494,12 @@
|
||||
<string name="mtp_crash">MTP 已崩潰。啟動時不再加載 MTP。</string>
|
||||
<string name="decrypt_success">已使用默認密碼解密成功。</string>
|
||||
<string name="unable_to_decrypt">無法使用默認密碼來解密,您可能需要格式化 Data 分區。</string>
|
||||
<string name="generating_md51">正在生成 MD5</string>
|
||||
<!-- Message displayed during a backup if we are generating an MD5, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_md52"> * 正在生成 MD5…</string>
|
||||
<string name="md5_created"> * MD5 已生成。</string>
|
||||
<string name="md5_error"> * MD5 錯誤!</string>
|
||||
<string name="md5_compute_error"> * 計算 MD5 錯誤。</string>
|
||||
<string name="generating_digest1" version="2">正在生成 Digest</string>
|
||||
<!-- Message displayed during a backup if we are generating an Digest, ideally, leave the leading " * " to help align and separate this text from other console text -->
|
||||
<string name="generating_digest2" version="2"> * 正在生成 Digest…</string>
|
||||
<string name="digest_created" version="2"> * Digest 已生成。</string>
|
||||
<string name="digest_error" version="2"> * Digest 錯誤!</string>
|
||||
<string name="digest_compute_error" version="2"> * 計算 Digest 錯誤。</string>
|
||||
<string name="current_date">(Current Date)</string>
|
||||
<string name="auto_generate">(Auto Generate)</string>
|
||||
<string name="unable_to_locate_partition">未找到 '{1}' 分區。</string>
|
||||
@@ -520,8 +520,8 @@
|
||||
<string name="restore_folder">恢復檔案夾:'{1}'</string>
|
||||
<!-- {1} is the partition display name and {2} is the number of seconds -->
|
||||
<string name="restore_part_done">[{1} 恢復完成({2} 秒)]</string>
|
||||
<string name="verifying_md5">正在校驗 MD5</string>
|
||||
<string name="skip_md5">基於用戶設置,已跳過 MD5 檢查。</string>
|
||||
<string name="verifying_digest" version="2">正在校驗 Digest</string>
|
||||
<string name="skip_digest" version="2">基於用戶設置,已跳過 Digest 檢查。</string>
|
||||
<string name="calc_restore">正在計算恢復詳情…</string>
|
||||
<string name="restore_read_only">無法恢復 {1} -- 已掛載為只讀。</string>
|
||||
<string name="restore_unable_locate">未找到 '{1}' 分區。</string>
|
||||
@@ -584,9 +584,9 @@
|
||||
<string name="cannot_resize">無法更改 {1} 大小。</string>
|
||||
<string name="repair_resize">在調整大小之前修復 {1}。</string>
|
||||
<string name="unable_resize">無法調整 {1} 大小。</string>
|
||||
<string name="no_md5_found">未找到 '{1}' 的 MD5 校驗檔案。請取消選中“啟用 MD5 校驗備份檔案”複選框。</string>
|
||||
<string name="md5_fail_match">'{1}' MD5 校驗失敗。</string>
|
||||
<string name="md5_matched">MD5 匹配 '{1}'。</string>
|
||||
<string name="no_digest_found" version="2">未找到 '{1}' 的 Digest 校驗檔案。請取消選中“啟用 Digest 校驗備份檔案”複選框。</string>
|
||||
<string name="digest_fail_match" version="2">'{1}' Digest 校驗失敗。</string>
|
||||
<string name="digest_matched" version="2">Digest 匹配 '{1}'。</string>
|
||||
<string name="fail_decrypt_tar">無法解密 tar 檔案 '{1}'</string>
|
||||
<string name="format_data_msg">您可能需要重啟 Recovery 才能使用/data。</string>
|
||||
<string name="format_data_err">無法格式化並刪除加密。</string>
|
||||
@@ -608,7 +608,7 @@
|
||||
<string name="backup_folder">備份檔案夾設置為:'{1}'</string>
|
||||
<string name="locate_backup_err">未找到備份檔案 '{1}'</string>
|
||||
<string name="set_restore_opt">設置恢復選項:'{1}':</string>
|
||||
<string name="md5_check_skip">跳過校驗 MD5 已開啟</string>
|
||||
<string name="digest_check_skip" version="2">跳過校驗 Digest 已開啟</string>
|
||||
<string name="ors_encrypt_restore_err">無法使用 OpenRecoveryScript 腳本恢復加密備份。</string>
|
||||
<string name="mounting">正在掛載</string>
|
||||
<string name="unmounting">正在卸載</string>
|
||||
@@ -629,7 +629,7 @@
|
||||
<string name="installing_zip">正在安裝 Zip 刷機包 '{1}'</string>
|
||||
<string name="select_backup_opt">設置備份選項:</string>
|
||||
<string name="compression_on">壓縮選項已開啟</string>
|
||||
<string name="md5_off">MD5 生成已關閉</string>
|
||||
<string name="digest_off" version="2">Digest 生成已關閉</string>
|
||||
<string name="backup_fail">備份失敗</string>
|
||||
<string name="backup_clean">備份失敗。正在清理備份檔案夾。</string>
|
||||
<string name="running_recovery_commands">運行 Recovery 命令</string>
|
||||
@@ -637,15 +637,15 @@
|
||||
<string name="running_ors">運行 OpenRecoveryScript 腳本</string>
|
||||
<string name="ors_complete">運行 OpenRecoveryScript 腳本完成</string>
|
||||
<string name="invalid_zip_format">Zip 檔案格式無效!</string>
|
||||
<string name="check_for_md5">正在檢測 MD5…</string>
|
||||
<string name="check_for_digest" version="2">正在檢測 Digest…</string>
|
||||
<string name="fail_sysmap">映射檔案 '{1}' 失敗</string>
|
||||
<string name="verify_zip_sig">正在校驗 Zip 刷機包簽名…</string>
|
||||
<string name="verify_zip_fail">刷機包簽名校驗失敗!</string>
|
||||
<string name="verify_zip_done">刷機包簽名校驗成功。</string>
|
||||
<string name="zip_corrupt">刷機包已損壞!</string>
|
||||
<string name="no_md5">跳過 MD5 校驗:未找到 MD5 檔案</string>
|
||||
<string name="md5_fail">MD5 不匹配</string>
|
||||
<string name="md5_match">MD5 校驗成功</string>
|
||||
<string name="no_digest" version="2">跳過 Digest 校驗:未找到 Digest 檔案</string>
|
||||
<string name="digest_fail" version="2">Digest 不匹配</string>
|
||||
<string name="digest_match" version="2">Digest 校驗成功</string>
|
||||
<string name="pid_signal">{1} 過程結束,標誌:{2}</string>
|
||||
<string name="pid_error">{1} 過程結束,錯誤:{2}</string>
|
||||
<string name="install_dumlock">安裝 HTC Dumlock 到系統…</string>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<author>TeamWin</author>
|
||||
<title>TWRP</title>
|
||||
<description>splash screen</description>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<resources>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.png</preview>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<author>TeamWin</author>
|
||||
<title>TWRP</title>
|
||||
<description>splash screen</description>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<resources>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.png</preview>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<author>TeamWin</author>
|
||||
<title>TWRP</title>
|
||||
<description>splash screen</description>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<resources>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.png</preview>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<author>TeamWin</author>
|
||||
<title>TWRP</title>
|
||||
<description>splash screen</description>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<resources>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.png</preview>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<author>TeamWin</author>
|
||||
<title>TWRP</title>
|
||||
<description>splash screen</description>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<resources>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<title>Backup Naowz</title>
|
||||
<description>Default basic theme</description>
|
||||
<preview>preview.png</preview>
|
||||
<themeversion>2</themeversion>
|
||||
<themeversion>3</themeversion>
|
||||
</details>
|
||||
|
||||
<include>
|
||||
|
||||
@@ -194,7 +194,7 @@ int OpenRecoveryScript::run_script_file(void) {
|
||||
// Restore
|
||||
DataManager::SetValue("tw_action_text2", gui_parse_text("{@restore}"));
|
||||
PartitionManager.Mount_All_Storage();
|
||||
DataManager::SetValue(TW_SKIP_MD5_CHECK_VAR, 0);
|
||||
DataManager::SetValue(TW_SKIP_DIGEST_CHECK_VAR, 0);
|
||||
char folder_path[512], partitions[512];
|
||||
|
||||
string val = value, restore_folder, restore_partitions;
|
||||
@@ -277,8 +277,8 @@ int OpenRecoveryScript::run_script_file(void) {
|
||||
Restore_List += "/sd-ext;";
|
||||
gui_msg("sdext=SD-EXT");
|
||||
} else if (value2[i] == 'M' || value2[i] == 'm') {
|
||||
DataManager::SetValue(TW_SKIP_MD5_CHECK_VAR, 1);
|
||||
gui_msg("md5_check_skip=MD5 check skip is on");
|
||||
DataManager::SetValue(TW_SKIP_DIGEST_CHECK_VAR, 1);
|
||||
gui_msg("digest_check_skip=Digest check skip is on");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -520,7 +520,7 @@ int OpenRecoveryScript::Backup_ADB_Command(std::string Options) {
|
||||
args = TWFunc::Split_String(Options, " ");
|
||||
|
||||
DataManager::SetValue(TW_USE_COMPRESSION_VAR, 0);
|
||||
DataManager::SetValue(TW_SKIP_MD5_GENERATE_VAR, 0);
|
||||
DataManager::SetValue(TW_SKIP_DIGEST_GENERATE_VAR, 0);
|
||||
|
||||
if (args[1].compare("--twrp") != 0) {
|
||||
gui_err("twrp_adbbu_option=--twrp option is required to enable twrp adb backup");
|
||||
@@ -608,7 +608,7 @@ int OpenRecoveryScript::Backup_Command(string Options) {
|
||||
strcpy(value1, Options.c_str());
|
||||
|
||||
DataManager::SetValue(TW_USE_COMPRESSION_VAR, 0);
|
||||
DataManager::SetValue(TW_SKIP_MD5_GENERATE_VAR, 0);
|
||||
DataManager::SetValue(TW_SKIP_DIGEST_GENERATE_VAR, 0);
|
||||
|
||||
gui_msg("select_backup_opt=Setting backup options:");
|
||||
line_len = Options.size();
|
||||
@@ -644,8 +644,8 @@ int OpenRecoveryScript::Backup_Command(string Options) {
|
||||
DataManager::SetValue(TW_USE_COMPRESSION_VAR, 1);
|
||||
gui_msg("compression_on=Compression is on");
|
||||
} else if (Options.substr(i, 1) == "M" || Options.substr(i, 1) == "m") {
|
||||
DataManager::SetValue(TW_SKIP_MD5_GENERATE_VAR, 1);
|
||||
gui_msg("md5_off=MD5 Generation is off");
|
||||
DataManager::SetValue(TW_SKIP_DIGEST_GENERATE_VAR, 1);
|
||||
gui_msg("digest_off=Digest Generation is off");
|
||||
}
|
||||
}
|
||||
DataManager::SetValue("tw_backup_list", Backup_List);
|
||||
@@ -756,7 +756,7 @@ int OpenRecoveryScript::Restore_ADB_Backup(void) {
|
||||
part_settings.total_restore_size = 0;
|
||||
|
||||
PartitionManager.Mount_All_Storage();
|
||||
DataManager::SetValue(TW_SKIP_MD5_CHECK_VAR, 0);
|
||||
DataManager::SetValue(TW_SKIP_DIGEST_CHECK_VAR, 0);
|
||||
|
||||
LOGINFO("opening TW_ADB_BU_CONTROL\n");
|
||||
adb_control_bu_fd = open(TW_ADB_BU_CONTROL, O_WRONLY | O_NONBLOCK);
|
||||
|
||||
+1
-46
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2013 to 2016 TeamWin
|
||||
Copyright 2013 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
@@ -41,7 +41,6 @@
|
||||
#include "partitions.hpp"
|
||||
#include "data.hpp"
|
||||
#include "twrp-functions.hpp"
|
||||
#include "twrpDigest.hpp"
|
||||
#include "twrpTar.hpp"
|
||||
#include "exclude.hpp"
|
||||
#include "infomanager.hpp"
|
||||
@@ -1657,50 +1656,6 @@ bool TWPartition::Backup(PartitionSettings *part_settings, pid_t *tar_fork_pid)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TWPartition::Check_Restore_File_MD5(const string& Filename) {
|
||||
twrpDigest md5sum;
|
||||
|
||||
md5sum.setfn(Filename);
|
||||
switch (md5sum.verify_md5digest()) {
|
||||
case MD5_OK:
|
||||
gui_msg(Msg("md5_matched=MD5 matched for '{1}'.")(Filename));
|
||||
return true;
|
||||
case MD5_FILE_UNREADABLE:
|
||||
case MD5_NOT_FOUND:
|
||||
gui_msg(Msg(msg::kError, "no_md5_found=No md5 file found for '{1}'. Please unselect Enable MD5 verification to restore.")(Filename));
|
||||
break;
|
||||
case MD5_MATCH_FAIL:
|
||||
gui_msg(Msg(msg::kError, "md5_fail_match=MD5 failed to match on '{1}'.")(Filename));
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TWPartition::Check_MD5(PartitionSettings *part_settings) {
|
||||
string Full_Filename;
|
||||
char split_filename[512];
|
||||
int index = 0;
|
||||
|
||||
sync();
|
||||
|
||||
Full_Filename = part_settings->Backup_Folder + "/" + Backup_FileName;
|
||||
if (!TWFunc::Path_Exists(Full_Filename)) {
|
||||
// This is a split archive, we presume
|
||||
memset(split_filename, 0, sizeof(split_filename));
|
||||
while (index < 1000) {
|
||||
sprintf(split_filename, "%s%03i", Full_Filename.c_str(), index);
|
||||
if (!TWFunc::Path_Exists(split_filename))
|
||||
break;
|
||||
LOGINFO("split_filename: %s\n", split_filename);
|
||||
if (!Check_Restore_File_MD5(split_filename))
|
||||
return false;
|
||||
index++;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return Check_Restore_File_MD5(Full_Filename); // Single file archive
|
||||
}
|
||||
|
||||
bool TWPartition::Restore(PartitionSettings *part_settings) {
|
||||
TWFunc::GUI_Operation_Text(TW_RESTORE_TEXT, Display_Name, gui_parse_text("{@restoring_hdr}"));
|
||||
LOGINFO("Restore filename is: %s/%s\n", part_settings->Backup_Folder.c_str(), Backup_FileName.c_str());
|
||||
|
||||
+42
-83
@@ -39,12 +39,12 @@
|
||||
#include "data.hpp"
|
||||
#include "twrp-functions.hpp"
|
||||
#include "fixContexts.hpp"
|
||||
#include "twrpDigest.hpp"
|
||||
#include "exclude.hpp"
|
||||
#include "set_metadata.h"
|
||||
#include "tw_atomic.hpp"
|
||||
#include "gui/gui.hpp"
|
||||
#include "progresstracking.hpp"
|
||||
#include "twrpDigestDriver.hpp"
|
||||
#include "adbbu/libtwadbbu.hpp"
|
||||
|
||||
#ifdef TW_HAS_MTP
|
||||
@@ -515,62 +515,6 @@ int TWPartitionManager::Check_Backup_Name(bool Display_Error) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool TWPartitionManager::Make_MD5(PartitionSettings *part_settings)
|
||||
{
|
||||
string command, result;
|
||||
|
||||
if (part_settings->Part == NULL)
|
||||
return false;
|
||||
string Full_File = part_settings->Backup_Folder + "/" + part_settings->Part->Backup_FileName;
|
||||
twrpDigest md5sum;
|
||||
|
||||
if (!part_settings->generate_md5)
|
||||
return true;
|
||||
|
||||
TWFunc::GUI_Operation_Text(TW_GENERATE_MD5_TEXT, gui_parse_text("{@generating_md51}"));
|
||||
gui_msg("generating_md52= * Generating md5...");
|
||||
if (TWFunc::Path_Exists(Full_File)) {
|
||||
md5sum.setfn(Full_File);
|
||||
if (md5sum.computeMD5() == 0)
|
||||
if (md5sum.write_md5digest() == 0)
|
||||
gui_msg("md5_created= * MD5 Created.");
|
||||
else
|
||||
return -1;
|
||||
else
|
||||
gui_err("md5_error= * MD5 Error!");
|
||||
} else {
|
||||
char filename[512];
|
||||
int index = 0;
|
||||
string strfn;
|
||||
sprintf(filename, "%s%03i", Full_File.c_str(), index);
|
||||
strfn = filename;
|
||||
while (index < 1000) {
|
||||
md5sum.setfn(filename);
|
||||
if (TWFunc::Path_Exists(filename)) {
|
||||
if (md5sum.computeMD5() == 0) {
|
||||
if (md5sum.write_md5digest() != 0)
|
||||
{
|
||||
gui_err("md5_error= * MD5 Error!");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
gui_err("md5_compute_error= * Error computing MD5.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
index++;
|
||||
sprintf(filename, "%s%03i", Full_File.c_str(), index);
|
||||
strfn = filename;
|
||||
}
|
||||
if (index == 0) {
|
||||
LOGERR("Backup file: '%s' not found!\n", filename);
|
||||
return false;
|
||||
}
|
||||
gui_msg("md5_created= * MD5 Created.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
|
||||
time_t start, stop;
|
||||
int use_compression;
|
||||
@@ -585,11 +529,15 @@ bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
|
||||
time(&start);
|
||||
|
||||
if (part_settings->Part->Backup(part_settings, &tar_fork_pid)) {
|
||||
bool md5Success = false;
|
||||
if (part_settings->adbbackup)
|
||||
md5Success = true;
|
||||
else
|
||||
md5Success = Make_MD5(part_settings);
|
||||
bool digestSuccess = false;
|
||||
string Full_Filename = part_settings->Backup_Folder + "/" + part_settings->Part->Backup_FileName;
|
||||
if (part_settings->generate_digest) {
|
||||
|
||||
if (part_settings->adbbackup)
|
||||
digestSuccess = true;
|
||||
else
|
||||
digestSuccess = twrpDigestDriver::Make_Digest(Full_Filename);
|
||||
}
|
||||
|
||||
if (part_settings->Part->Has_SubPartition) {
|
||||
std::vector<TWPartition*>::iterator subpart;
|
||||
@@ -607,8 +555,8 @@ bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
|
||||
}
|
||||
sync();
|
||||
sync();
|
||||
if (!part_settings->adbbackup) {
|
||||
if (!Make_MD5(part_settings)) {
|
||||
if (!part_settings->adbbackup && part_settings->generate_digest) {
|
||||
if (!twrpDigestDriver::Make_Digest(Full_Filename)) {
|
||||
TWFunc::SetPerformanceMode(false);
|
||||
return false;
|
||||
}
|
||||
@@ -616,6 +564,7 @@ bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
time(&stop);
|
||||
int backup_time = (int) difftime(stop, start);
|
||||
LOGINFO("Partition Backup time: %d\n", backup_time);
|
||||
@@ -628,7 +577,7 @@ bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
|
||||
}
|
||||
|
||||
TWFunc::SetPerformanceMode(false);
|
||||
return md5Success;
|
||||
return digestSuccess;
|
||||
} else {
|
||||
Clean_Backup_Folder(part_settings->Backup_Folder);
|
||||
TWFunc::copy_file("/tmp/recovery.log", backup_log, 0644);
|
||||
@@ -643,6 +592,13 @@ void TWPartitionManager::Clean_Backup_Folder(string Backup_Folder) {
|
||||
DIR *d = opendir(Backup_Folder.c_str());
|
||||
struct dirent *p;
|
||||
int r;
|
||||
vector<string> ext;
|
||||
|
||||
//extensions we should delete when cleaning
|
||||
ext.push_back("win");
|
||||
ext.push_back("md5");
|
||||
ext.push_back("sha2");
|
||||
ext.push_back("info");
|
||||
|
||||
gui_msg("backup_clean=Backup Failed. Cleaning Backup Folder.");
|
||||
|
||||
@@ -658,10 +614,11 @@ void TWPartitionManager::Clean_Backup_Folder(string Backup_Folder) {
|
||||
string path = Backup_Folder + "/" + p->d_name;
|
||||
|
||||
size_t dot = path.find_last_of(".") + 1;
|
||||
if (path.substr(dot) == "win" || path.substr(dot) == "md5" || path.substr(dot) == "info") {
|
||||
r = unlink(path.c_str());
|
||||
if (r != 0) {
|
||||
LOGINFO("Unable to unlink '%s: %s'\n", path.c_str(), strerror(errno));
|
||||
for (vector<string>::const_iterator i = ext.begin(); i != ext.end(); ++i) {
|
||||
if (path.substr(dot) == *i) {
|
||||
r = unlink(path.c_str());
|
||||
if (r != 0)
|
||||
LOGINFO("Unable to unlink '%s: %s'\n", path.c_str(), strerror(errno));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -697,7 +654,7 @@ int TWPartitionManager::Cancel_Backup() {
|
||||
|
||||
int TWPartitionManager::Run_Backup(bool adbbackup) {
|
||||
PartitionSettings part_settings;
|
||||
int partition_count = 0, disable_free_space_check = 0, do_md5 = 0;
|
||||
int partition_count = 0, disable_free_space_check = 0, skip_digest = 0;
|
||||
int gui_adb_backup;
|
||||
string Backup_Name, Backup_List, backup_path;
|
||||
unsigned long long total_bytes = 0, free_space = 0;
|
||||
@@ -730,11 +687,11 @@ int TWPartitionManager::Run_Backup(bool adbbackup) {
|
||||
if (!Mount_Current_Storage(true))
|
||||
return false;
|
||||
|
||||
DataManager::GetValue(TW_SKIP_MD5_GENERATE_VAR, do_md5);
|
||||
if (do_md5 == 0)
|
||||
part_settings.generate_md5 = true;
|
||||
DataManager::GetValue(TW_SKIP_DIGEST_GENERATE_VAR, skip_digest);
|
||||
if (skip_digest == 0)
|
||||
part_settings.generate_digest = true;
|
||||
else
|
||||
part_settings.generate_md5 = false;
|
||||
part_settings.generate_digest = false;
|
||||
|
||||
DataManager::GetValue(TW_BACKUPS_FOLDER_VAR, part_settings.Backup_Folder);
|
||||
DataManager::GetValue(TW_BACKUP_NAME, Backup_Name);
|
||||
@@ -951,7 +908,7 @@ bool TWPartitionManager::Restore_Partition(PartitionSettings *part_settings) {
|
||||
|
||||
int TWPartitionManager::Run_Restore(const string& Restore_Name) {
|
||||
PartitionSettings part_settings;
|
||||
int check_md5;
|
||||
int check_digest;
|
||||
|
||||
time_t rStart, rStop;
|
||||
time(&rStart);
|
||||
@@ -971,13 +928,13 @@ int TWPartitionManager::Run_Restore(const string& Restore_Name) {
|
||||
if (!Mount_Current_Storage(true))
|
||||
return false;
|
||||
|
||||
DataManager::GetValue(TW_SKIP_MD5_CHECK_VAR, check_md5);
|
||||
if (check_md5 > 0) {
|
||||
// Check MD5 files first before restoring to ensure that all of them match before starting a restore
|
||||
TWFunc::GUI_Operation_Text(TW_VERIFY_MD5_TEXT, gui_parse_text("{@verifying_md5}"));
|
||||
gui_msg("verifying_md5=Verifying MD5");
|
||||
DataManager::GetValue(TW_SKIP_DIGEST_CHECK_VAR, check_digest);
|
||||
if (check_digest > 0) {
|
||||
// Check Digest files first before restoring to ensure that all of them match before starting a restore
|
||||
TWFunc::GUI_Operation_Text(TW_VERIFY_DIGEST_TEXT, gui_parse_text("{@verifying_digest}"));
|
||||
gui_msg("verifying_digest=Verifying Digest");
|
||||
} else {
|
||||
gui_msg("skip_md5=Skipping MD5 check based on user setting.");
|
||||
gui_msg("skip_digest=Skipping Digest check based on user setting.");
|
||||
}
|
||||
gui_msg("calc_restore=Calculating restore details...");
|
||||
DataManager::GetValue("tw_restore_selected", Restore_List);
|
||||
@@ -993,7 +950,9 @@ int TWPartitionManager::Run_Restore(const string& Restore_Name) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (check_md5 > 0 && !part_settings.Part->Check_MD5(&part_settings))
|
||||
string Full_Filename = part_settings.Backup_Folder + "/" + part_settings.Part->Backup_FileName;
|
||||
|
||||
if (check_digest > 0 && !twrpDigestDriver::Check_Digest(Full_Filename))
|
||||
return false;
|
||||
part_settings.partition_count++;
|
||||
part_settings.total_restore_size += part_settings.Part->Get_Restore_Size(&part_settings);
|
||||
@@ -1004,7 +963,7 @@ int TWPartitionManager::Run_Restore(const string& Restore_Name) {
|
||||
for (subpart = Partitions.begin(); subpart != Partitions.end(); subpart++) {
|
||||
part_settings.Part = *subpart;
|
||||
if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == parentPart->Mount_Point) {
|
||||
if (check_md5 > 0 && !(*subpart)->Check_MD5(&part_settings))
|
||||
if (check_digest > 0 && !twrpDigestDriver::Check_Digest(Full_Filename))
|
||||
return false;
|
||||
part_settings.total_restore_size += (*subpart)->Get_Restore_Size(&part_settings);
|
||||
}
|
||||
|
||||
+1
-2
@@ -47,6 +47,7 @@ struct PartitionSettings {
|
||||
std::string Backup_Folder; // Path to restore folder
|
||||
bool adbbackup; // tell the system we are backing up over adb
|
||||
bool adb_compression; // 0 == uncompressed, 1 == compressed
|
||||
bool generate_digest; // tell system to create digest for partitions
|
||||
bool generate_md5; // tell system to create md5 for partitions
|
||||
uint64_t total_restore_size; // Total size of restored backup
|
||||
uint64_t img_bytes_remaining; // remaining img/emmc bytes to backup for progress indicator
|
||||
@@ -90,7 +91,6 @@ public:
|
||||
bool Can_Resize(); // Checks to see if we have everything needed to be able to resize the current file system
|
||||
bool Resize(); // Resizes the current file system
|
||||
bool Backup(PartitionSettings *part_settings, pid_t *tar_fork_pid); // Backs up the partition to the folder specified
|
||||
bool Check_MD5(PartitionSettings *part_settings); // Checks MD5 of a backup
|
||||
bool Restore(PartitionSettings *part_settings); // Restores the partition using the backup folder provided
|
||||
unsigned long long Get_Restore_Size(PartitionSettings *part_settings); // Returns the overall restore size of the backup
|
||||
string Backup_Method_By_Name(); // Returns a string of the backup method for human readable output
|
||||
@@ -302,7 +302,6 @@ public:
|
||||
private:
|
||||
void Setup_Settings_Storage_Partition(TWPartition* Part); // Sets up settings storage
|
||||
void Setup_Android_Secure_Location(TWPartition* Part); // Sets up .android_secure if needed
|
||||
bool Make_MD5(struct PartitionSettings *part_settings); // Generates an MD5 after a backup is made
|
||||
bool Backup_Partition(struct PartitionSettings *part_settings); // Backup the partitions based on type
|
||||
void Output_Partition(TWPartition* Part); // Outputs partition details to the log
|
||||
TWPartition* Find_Partition_By_MTP_Storage_ID(unsigned int Storage_ID); // Returns a pointer to a partition based on MTP Storage ID
|
||||
|
||||
@@ -80,6 +80,7 @@ RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libminzip.so
|
||||
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libmtdutils.so
|
||||
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libtar.so
|
||||
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libtwadbbu.so
|
||||
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libtwrpdigest.so
|
||||
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libutil-linux.so
|
||||
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libblkid.so
|
||||
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libmmcutils.so
|
||||
|
||||
+33
-17
@@ -40,7 +40,9 @@
|
||||
#include "variables.h"
|
||||
#include "data.hpp"
|
||||
#include "partitions.hpp"
|
||||
#include "twrpDigest.hpp"
|
||||
#include "twrpDigestDriver.hpp"
|
||||
#include "twrpDigest/twrpDigest.hpp"
|
||||
#include "twrpDigest/twrpMD5.hpp"
|
||||
#include "twrp-functions.hpp"
|
||||
#include "gui/gui.hpp"
|
||||
#include "gui/pages.hpp"
|
||||
@@ -317,22 +319,36 @@ extern "C" int TWinstall_zip(const char* path, int* wipe_cache) {
|
||||
|
||||
gui_msg(Msg("installing_zip=Installing zip file '{1}'")(path));
|
||||
if (strlen(path) < 9 || strncmp(path, "/sideload", 9) != 0) {
|
||||
gui_msg("check_for_md5=Checking for MD5 file...");
|
||||
twrpDigest md5sum;
|
||||
md5sum.setfn(path);
|
||||
switch (md5sum.verify_md5digest()) {
|
||||
case MD5_OK:
|
||||
gui_msg(Msg("md5_matched=MD5 matched for '{1}'.")(path));
|
||||
break;
|
||||
case MD5_NOT_FOUND:
|
||||
gui_msg("no_md5=Skipping MD5 check: no MD5 file found");
|
||||
break;
|
||||
case MD5_FILE_UNREADABLE:
|
||||
LOGERR("Skipping MD5 check: MD5 file unreadable\n");
|
||||
break;
|
||||
case MD5_MATCH_FAIL: // md5 did not match
|
||||
LOGERR("Aborting zip install: MD5 verification failed\n");
|
||||
return INSTALL_CORRUPT;
|
||||
string digest_str;
|
||||
string Full_Filename = path;
|
||||
string digest_file = path;
|
||||
digest_file += ".md5";
|
||||
|
||||
gui_msg("check_for_digest=Checking for Digest file...");
|
||||
if (!TWFunc::Path_Exists(digest_file)) {
|
||||
gui_msg("no_digest=Skipping Digest check: no Digest file found");
|
||||
}
|
||||
else {
|
||||
if (TWFunc::read_file(digest_file, digest_str) != 0) {
|
||||
LOGERR("Skipping MD5 check: MD5 file unreadable\n");
|
||||
}
|
||||
else {
|
||||
twrpDigest *digest = new twrpMD5();
|
||||
if (!twrpDigestDriver::stream_file_to_digest(Full_Filename, digest)) {
|
||||
delete digest;
|
||||
return INSTALL_CORRUPT;
|
||||
}
|
||||
string digest_check = digest->return_digest_string();
|
||||
if (digest_str == digest_check) {
|
||||
gui_msg(Msg("digest_matched=Digest matched for '{1}'.")(path));
|
||||
}
|
||||
else {
|
||||
LOGERR("Aborting zip install: Digest verification failed\n");
|
||||
delete digest;
|
||||
return INSTALL_CORRUPT;
|
||||
}
|
||||
delete digest;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -178,7 +178,6 @@ int TWFunc::Wait_For_Child_Timeout(pid_t pid, int *status, const string& Child_N
|
||||
}
|
||||
|
||||
bool TWFunc::Path_Exists(string Path) {
|
||||
// Check to see if the Path exists
|
||||
struct stat st;
|
||||
if (stat(Path.c_str(), &st) != 0)
|
||||
return false;
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "twrpDigest/twrpDigest.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
typedef enum
|
||||
|
||||
-161
@@ -1,161 +0,0 @@
|
||||
/*
|
||||
Copyright 2012 to 2016 bigbiff/Dees_Troy TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include "digest/md5.h"
|
||||
#include "libcrecovery/common.h"
|
||||
}
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
#include <string.h>
|
||||
#include <libgen.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <fstream>
|
||||
#include <sys/mman.h>
|
||||
#include "twcommon.h"
|
||||
#include "data.hpp"
|
||||
#include "variables.h"
|
||||
#include "twrp-functions.hpp"
|
||||
#include "twrpDigest.hpp"
|
||||
#include "set_metadata.h"
|
||||
#include "gui/gui.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
void twrpDigest::setfn(const string& fn) {
|
||||
md5fn = fn;
|
||||
}
|
||||
|
||||
void twrpDigest::initMD5(void) {
|
||||
MD5Init(&md5c);
|
||||
md5string = "";
|
||||
}
|
||||
|
||||
int twrpDigest::updateMD5stream(unsigned char* stream, int len) {
|
||||
if (md5fn.empty()) {
|
||||
MD5Update(&md5c, stream, len);
|
||||
}
|
||||
else {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void twrpDigest::finalizeMD5stream() {
|
||||
MD5Final(md5sum, &md5c);
|
||||
}
|
||||
|
||||
string twrpDigest::createMD5string() {
|
||||
int i;
|
||||
char hex[3];
|
||||
|
||||
for (i = 0; i < 16; ++i) {
|
||||
snprintf(hex, 3, "%02x", md5sum[i]);
|
||||
md5string += hex;
|
||||
}
|
||||
if (!md5fn.empty()) {
|
||||
md5string += " ";
|
||||
md5string += basename((char*) md5fn.c_str());
|
||||
md5string += + "\n";
|
||||
}
|
||||
return md5string;
|
||||
}
|
||||
|
||||
int twrpDigest::computeMD5(void) {
|
||||
string line;
|
||||
FILE *file;
|
||||
int len;
|
||||
unsigned char buf[1024];
|
||||
initMD5();
|
||||
file = fopen(md5fn.c_str(), "rb");
|
||||
if (file == NULL)
|
||||
return MD5_NOT_FOUND;
|
||||
while ((len = fread(buf, 1, sizeof(buf), file)) > 0) {
|
||||
MD5Update(&md5c, buf, len);
|
||||
}
|
||||
fclose(file);
|
||||
MD5Final(md5sum, &md5c);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int twrpDigest::write_md5digest(void) {
|
||||
string md5file, md5str;
|
||||
md5file = md5fn + ".md5";
|
||||
|
||||
md5str = createMD5string();
|
||||
TWFunc::write_file(md5file, md5str);
|
||||
tw_set_default_metadata(md5file.c_str());
|
||||
LOGINFO("MD5 for %s: %s\n", md5fn.c_str(), md5str.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
int twrpDigest::read_md5digest(void) {
|
||||
size_t i = 0;
|
||||
bool foundMd5File = false;
|
||||
string md5file = "";
|
||||
vector<string> md5ext;
|
||||
md5ext.push_back(".md5");
|
||||
md5ext.push_back(".md5sum");
|
||||
|
||||
while (i < md5ext.size()) {
|
||||
md5file = md5fn + md5ext[i];
|
||||
if (TWFunc::Path_Exists(md5file)) {
|
||||
foundMd5File = true;
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
if (!foundMd5File)
|
||||
return MD5_NOT_FOUND;
|
||||
if (TWFunc::read_file(md5file, line) != 0)
|
||||
return MD5_FILE_UNREADABLE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int twrpDigest::verify_md5digest(void) {
|
||||
string buf;
|
||||
char hex[3];
|
||||
int i, ret;
|
||||
string md5str;
|
||||
|
||||
ret = read_md5digest();
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
stringstream ss(line);
|
||||
vector<string> tokens;
|
||||
while (ss >> buf)
|
||||
tokens.push_back(buf);
|
||||
computeMD5();
|
||||
for (i = 0; i < 16; ++i) {
|
||||
snprintf(hex, 3, "%02x", md5sum[i]);
|
||||
md5str += hex;
|
||||
}
|
||||
if (tokens.empty() || tokens.at(0) != md5str)
|
||||
return MD5_MATCH_FAIL;
|
||||
|
||||
return MD5_OK;
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
Copyright 2012 to 2016 bigbiff/Dees_Troy TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
extern "C" {
|
||||
#include "digest/md5.h"
|
||||
}
|
||||
|
||||
/* verify_md5digest return codes */
|
||||
enum {
|
||||
MD5_MATCH_FAIL = -2, // -2: md5 did not match
|
||||
MD5_NOT_FOUND, // -1: no md5 file found
|
||||
MD5_OK, // 0: md5 matches
|
||||
MD5_FILE_UNREADABLE // 1: md5 file unreadable
|
||||
};
|
||||
|
||||
using namespace std;
|
||||
|
||||
class twrpDigest
|
||||
{
|
||||
public:
|
||||
void setfn(const string& fn);
|
||||
int computeMD5(void);
|
||||
int verify_md5digest(void);
|
||||
int write_md5digest(void);
|
||||
int updateMD5stream(unsigned char* stream, int len);
|
||||
void finalizeMD5stream(void);
|
||||
string createMD5string(void);
|
||||
void initMD5(void);
|
||||
|
||||
private:
|
||||
int read_md5digest(void);
|
||||
struct MD5Context md5c;
|
||||
string md5fn;
|
||||
string line;
|
||||
unsigned char md5sum[MD5LENGTH];
|
||||
string md5string;
|
||||
};
|
||||
@@ -0,0 +1,29 @@
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := libtwrpdigest
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_CFLAGS = -fno-strict-aliasing
|
||||
LOCAL_C_INCLUDES := external/openssl/include bionic
|
||||
|
||||
LOCAL_SRC_FILES = \
|
||||
twrpDigest.cpp \
|
||||
twrpMD5.cpp \
|
||||
digest/md5/md5.c
|
||||
|
||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
|
||||
LOCAL_C_INCLUDES += external/stlport/stlport
|
||||
endif
|
||||
|
||||
LOCAL_SHARED_LIBRARIES += libc libstdc++
|
||||
|
||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
|
||||
LOCAL_SHARED_LIBRARIES += libstlport
|
||||
else
|
||||
LOCAL_SHARED_LIBRARIES += libc++ libcrypto
|
||||
LOCAL_SRC_FILES += \
|
||||
twrpSHA.cpp
|
||||
endif
|
||||
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2012 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <fcntl.h>
|
||||
#include "twrpDigest.hpp"
|
||||
|
||||
std::string twrpDigest::hexify(uint8_t* hash, size_t len) {
|
||||
char hex[3];
|
||||
std::string digest_string;
|
||||
|
||||
for (size_t i = 0; i < len; ++i) {
|
||||
snprintf(hex, 3, "%02x", hash[i]);
|
||||
digest_string += hex;
|
||||
}
|
||||
return digest_string;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2012 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __TWRPDIGEST_H
|
||||
#define __TWRPDIGEST_H
|
||||
|
||||
class twrpDigest {
|
||||
public:
|
||||
twrpDigest() {};
|
||||
virtual ~twrpDigest() {};
|
||||
virtual void init() = 0; // Initialize the digest according to the algorithm
|
||||
virtual void update(const unsigned char* stream, size_t len) = 0; // Update the digest with new data
|
||||
virtual std::string return_digest_string() = 0; // Returns the digest of the file as a string.
|
||||
|
||||
protected:
|
||||
virtual void finalize() = 0; // Finalize the digest input for creating the final digest
|
||||
std::string hexify(uint8_t* hash, size_t len); // Take an len bytes and turn it into a hex string
|
||||
};
|
||||
|
||||
#endif //__TWRPDIGEST_H
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
Copyright 2012 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
//#include <sstream>
|
||||
#include "twrpDigest.hpp"
|
||||
#include "twrpMD5.hpp"
|
||||
|
||||
twrpMD5::twrpMD5() {
|
||||
init();
|
||||
}
|
||||
|
||||
void twrpMD5::init() {
|
||||
MD5Init(&md5c);
|
||||
}
|
||||
|
||||
void twrpMD5::update(const unsigned char* stream, size_t len) {
|
||||
MD5Update(&md5c, stream, len);
|
||||
}
|
||||
|
||||
void twrpMD5::finalize() {
|
||||
MD5Final(md5sum, &md5c);
|
||||
}
|
||||
|
||||
std::string twrpMD5::return_digest_string() {
|
||||
std::string md5string;
|
||||
finalize();
|
||||
|
||||
md5string = hexify(md5sum, sizeof(md5sum));
|
||||
return md5string;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
Copyright 2012 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __TWRPMD5_H
|
||||
#define __TWRPMD5_H
|
||||
|
||||
#include <string>
|
||||
#include "twrpDigest.hpp"
|
||||
|
||||
extern "C" {
|
||||
#include "digest/md5/md5.h"
|
||||
}
|
||||
|
||||
class twrpMD5: public twrpDigest {
|
||||
public:
|
||||
twrpMD5(); // Stream initializer
|
||||
void init(); // Initialize MD5 structures
|
||||
void update(const unsigned char* stream, size_t len); // Update MD5 stream with data. Return false if failure to update MD5.
|
||||
std::string return_digest_string(); // Return MD5 digest as string to callee
|
||||
void finalize(); // Finalize and compute MD5
|
||||
|
||||
private:
|
||||
struct MD5Context md5c; // MD5 control structure
|
||||
unsigned char md5sum[MD5LENGTH]; // Stores the md5sum computation
|
||||
};
|
||||
|
||||
#endif //__TWRPMD5_H
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
Copyright 2012 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <openssl/sha.h>
|
||||
#include "twrpDigest.hpp"
|
||||
#include "twrpSHA.hpp"
|
||||
|
||||
twrpSHA256::twrpSHA256() {
|
||||
twrpSHA256::init();
|
||||
}
|
||||
|
||||
void twrpSHA256::init(void) {
|
||||
SHA256_Init(&sha256_ctx);
|
||||
}
|
||||
|
||||
void twrpSHA256::update(const unsigned char* stream, size_t len) {
|
||||
SHA256_Update(&sha256_ctx, stream, len);
|
||||
}
|
||||
|
||||
void twrpSHA256::finalize(void) {
|
||||
SHA256_Final(sha256_store, &sha256_ctx);
|
||||
}
|
||||
|
||||
std::string twrpSHA256::return_digest_string(void) {
|
||||
twrpSHA256::finalize();
|
||||
std::string digest_str = twrpDigest::hexify(sha256_store, SHA256_DIGEST_LENGTH);
|
||||
return digest_str;
|
||||
}
|
||||
|
||||
twrpSHA512::twrpSHA512() {
|
||||
twrpSHA512::init();
|
||||
}
|
||||
|
||||
void twrpSHA512::init(void) {
|
||||
SHA512_Init(&sha512_ctx);
|
||||
}
|
||||
|
||||
void twrpSHA512::update(const unsigned char* stream, size_t len) {
|
||||
SHA512_Update(&sha512_ctx, stream, len);
|
||||
}
|
||||
|
||||
void twrpSHA512::finalize(void) {
|
||||
SHA512_Final(sha512_store, &sha512_ctx);
|
||||
}
|
||||
|
||||
std::string twrpSHA512::return_digest_string(void) {
|
||||
twrpSHA512::finalize();
|
||||
std::string digest_str = twrpDigest::hexify(sha512_store, SHA512_DIGEST_LENGTH);
|
||||
return digest_str;
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
Copyright 2012 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef __TWRPSHA_H
|
||||
#define __TWRPSHA_H
|
||||
|
||||
#include <openssl/sha.h>
|
||||
#include "twrpDigest.hpp"
|
||||
|
||||
class twrpSHA256: public twrpDigest {
|
||||
public:
|
||||
twrpSHA256(); // Initialize the SHA256 digest for streaming activities only
|
||||
void init(); // Initialize the SHA256 digest algorithm
|
||||
|
||||
protected:
|
||||
void update(const unsigned char* stream, size_t len); // Update the SHA256 digest stream
|
||||
void finalize(); // Finalize the SHA256 digest for computation
|
||||
std::string return_digest_string(); // Return the digest string computed to the callee
|
||||
|
||||
private:
|
||||
uint8_t sha256_store[SHA256_DIGEST_LENGTH]; // Initialize the SHA256 digest array that holds the computation
|
||||
SHA256_CTX sha256_ctx; // Initialize the SHA256 control structure
|
||||
};
|
||||
|
||||
class twrpSHA512: public twrpDigest {
|
||||
public:
|
||||
twrpSHA512(); // Initialize the SHA512 digest for streaming activities only
|
||||
void init(); // Initialize the SHA512 digest algorithm
|
||||
|
||||
protected:
|
||||
void update(const unsigned char* stream, size_t len); // Update the SHA512 digest stream
|
||||
void finalize(); // Finalize the SHA512 digest for computation
|
||||
std::string return_digest_string(); // Return the digest string computed to the callee
|
||||
|
||||
private:
|
||||
uint8_t sha512_store[SHA512_DIGEST_LENGTH]; // Initialize the SHA512 digest array that holds the computation
|
||||
SHA512_CTX sha512_ctx; // Initialize the SHA512 control structure
|
||||
};
|
||||
|
||||
#endif //__TWRPSHA_H
|
||||
@@ -0,0 +1,218 @@
|
||||
/*
|
||||
Copyright 2013 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <string>
|
||||
#include <unistd.h>
|
||||
#include "data.hpp"
|
||||
#include "partitions.hpp"
|
||||
#include "set_metadata.h"
|
||||
#include "twrpDigestDriver.hpp"
|
||||
#include "twrp-functions.hpp"
|
||||
#include "twcommon.h"
|
||||
#include "variables.h"
|
||||
#include "gui/gui.hpp"
|
||||
#include "twrpDigest/twrpDigest.hpp"
|
||||
#include "twrpDigest/twrpMD5.hpp"
|
||||
#include "twrpDigest/twrpSHA.hpp"
|
||||
|
||||
|
||||
bool twrpDigestDriver::Check_Restore_File_Digest(const string& Filename) {
|
||||
twrpDigest *digest;
|
||||
string digestfile = Filename, file_name = Filename;
|
||||
string digest_str;
|
||||
bool use_sha2 = false;
|
||||
|
||||
#ifndef TW_NO_SHA2_LIBRARY
|
||||
|
||||
digestfile += ".sha2";
|
||||
if (TWFunc::Path_Exists(digestfile)) {
|
||||
digest = new twrpSHA256();
|
||||
use_sha2 = true;
|
||||
}
|
||||
else {
|
||||
digest = new twrpMD5();
|
||||
digestfile = Filename + ".md5";
|
||||
|
||||
}
|
||||
#else
|
||||
digest = new twrpMD5();
|
||||
digestfile = Filename + ".md5";
|
||||
|
||||
#endif
|
||||
|
||||
if (!TWFunc::Path_Exists(digestfile)) {
|
||||
gui_msg(Msg(msg::kError, "no_digest_found=No digest file found for '{1}'. Please unselect Enable Digest verification to restore.")(Filename));
|
||||
delete digest;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (TWFunc::read_file(digestfile, digest_str) != 0) {
|
||||
gui_msg("digest_error=Digest Error!");
|
||||
delete digest;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!stream_file_to_digest(file_name, digest)) {
|
||||
delete digest;
|
||||
return false;
|
||||
}
|
||||
string digest_check = digest->return_digest_string();
|
||||
if (digest_check == digest_str) {
|
||||
if (use_sha2)
|
||||
LOGINFO("SHA2 Digest: %s %s\n", digest_str.c_str(), TWFunc::Get_Filename(Filename).c_str());
|
||||
else
|
||||
LOGINFO("MD5 Digest: %s %s\n", digest_str.c_str(), TWFunc::Get_Filename(Filename).c_str());
|
||||
delete digest;
|
||||
return true;
|
||||
}
|
||||
|
||||
gui_msg(Msg(msg::kError, "digest_fail_match=Digest failed to match on '{1}'.")(Filename));
|
||||
delete digest;
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
bool twrpDigestDriver::Check_Digest(string Full_Filename) {
|
||||
char split_filename[512];
|
||||
int index = 0;
|
||||
|
||||
sync();
|
||||
if (!TWFunc::Path_Exists(Full_Filename)) {
|
||||
// This is a split archive, we presume
|
||||
memset(split_filename, 0, sizeof(split_filename));
|
||||
while (index < 1000) {
|
||||
sprintf(split_filename, "%s%03i", Full_Filename.c_str(), index);
|
||||
if (!TWFunc::Path_Exists(split_filename))
|
||||
break;
|
||||
LOGINFO("split_filename: %s\n", split_filename);
|
||||
if (!Check_Restore_File_Digest(split_filename))
|
||||
return false;
|
||||
index++;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return Check_Restore_File_Digest(Full_Filename); // Single file archive
|
||||
}
|
||||
|
||||
bool twrpDigestDriver::Write_Digest(string Full_Filename) {
|
||||
twrpDigest *digest;
|
||||
string digest_filename, digest_str;
|
||||
int use_sha2;
|
||||
|
||||
#ifdef TW_NO_SHA2_LIBRARY
|
||||
use_sha2 = 0;
|
||||
#else
|
||||
DataManager::GetValue(TW_USE_SHA2, use_sha2);
|
||||
#endif
|
||||
|
||||
if (use_sha2) {
|
||||
#ifndef TW_NO_SHA2_LIBRARY
|
||||
digest = new twrpSHA256();
|
||||
digest_filename = Full_Filename + ".sha2";
|
||||
if (!stream_file_to_digest(Full_Filename, digest)) {
|
||||
delete digest;
|
||||
return false;
|
||||
}
|
||||
digest_str = digest->return_digest_string();
|
||||
if (digest_str.empty()) {
|
||||
delete digest;
|
||||
return false;
|
||||
}
|
||||
LOGINFO("SHA2 Digest: %s %s\n", digest_str.c_str(), TWFunc::Get_Filename(Full_Filename).c_str());
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
digest = new twrpMD5();
|
||||
digest_filename = Full_Filename + ".md5";
|
||||
if (!stream_file_to_digest(Full_Filename, digest)) {
|
||||
delete digest;
|
||||
return false;
|
||||
}
|
||||
digest_str = digest->return_digest_string();
|
||||
if (digest_str.empty()) {
|
||||
delete digest;
|
||||
return false;
|
||||
}
|
||||
LOGINFO("MD5 Digest: %s %s\n", digest_str.c_str(), TWFunc::Get_Filename(Full_Filename).c_str());
|
||||
}
|
||||
|
||||
digest_str = digest_str + " " + TWFunc::Get_Filename(Full_Filename) + "\n";
|
||||
LOGINFO("digest_filename: %s\n", digest_filename.c_str());
|
||||
|
||||
if (TWFunc::write_file(digest_filename, digest_str) == 0) {
|
||||
tw_set_default_metadata(digest_filename.c_str());
|
||||
gui_msg("digest_created= * Digest Created.");
|
||||
}
|
||||
else {
|
||||
gui_err("digest_error= * Digest Error!");
|
||||
delete digest;
|
||||
return false;
|
||||
}
|
||||
delete digest;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool twrpDigestDriver::Make_Digest(string Full_Filename) {
|
||||
string command, result;
|
||||
|
||||
TWFunc::GUI_Operation_Text(TW_GENERATE_DIGEST_TEXT, gui_parse_text("{@generating_digest1}"));
|
||||
gui_msg("generating_digest2= * Generating digest...");
|
||||
if (TWFunc::Path_Exists(Full_Filename)) {
|
||||
if (!Write_Digest(Full_Filename))
|
||||
return false;
|
||||
} else {
|
||||
char filename[512];
|
||||
int index = 0;
|
||||
sprintf(filename, "%s%03i", Full_Filename.c_str(), index);
|
||||
while (index < 1000) {
|
||||
string digest_src(filename);
|
||||
if (TWFunc::Path_Exists(filename)) {
|
||||
if (!Write_Digest(filename))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
break;
|
||||
index++;
|
||||
sprintf(filename, "%s%03i", Full_Filename.c_str(), index);
|
||||
}
|
||||
if (index == 0) {
|
||||
LOGERR("Backup file: '%s' not found!\n", filename);
|
||||
return false;
|
||||
}
|
||||
gui_msg("digest_created= * Digest Created.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool twrpDigestDriver::stream_file_to_digest(string filename, twrpDigest* digest) {
|
||||
char buf[4096];
|
||||
int bytes;
|
||||
|
||||
int fd = open(filename.c_str(), O_RDONLY);
|
||||
if (fd < 0) {
|
||||
return false;
|
||||
}
|
||||
while ((bytes = read(fd, &buf, sizeof(buf))) != 0) {
|
||||
digest->update((unsigned char*)buf, bytes);
|
||||
}
|
||||
close(fd);
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2013 to 2017 TeamWin
|
||||
This file is part of TWRP/TeamWin Recovery Project.
|
||||
|
||||
TWRP is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
TWRP 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with TWRP. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __TWRP_DIGEST_DRIVER
|
||||
#define __TWRP_DIGEST_DRIVER
|
||||
#include <string>
|
||||
#include "twrpDigest/twrpDigest.hpp"
|
||||
|
||||
class twrpDigestDriver {
|
||||
public:
|
||||
|
||||
static bool Check_Restore_File_Digest(const string& Filename); //Check the digest of a TWRP partition backup
|
||||
static bool Check_Digest(string Full_Filename); //Check to make sure the digest is correct
|
||||
static bool Write_Digest(string Full_Filename); //Write the digest to a file
|
||||
static bool Make_Digest(string Full_Filename); //Create the digest for a partition backup
|
||||
static bool stream_file_to_digest(string filename, twrpDigest* digest); //Stream the file to twrpDigest
|
||||
};
|
||||
#endif //__TWRP_DIGEST_DRIVER
|
||||
+7
-5
@@ -46,7 +46,7 @@
|
||||
#define TW_BACKUP_ANDSEC_SIZE "tw_backup_andsec_size"
|
||||
#define TW_BACKUP_SDEXT_SIZE "tw_backup_sdext_size"
|
||||
#define TW_STORAGE_FREE_SIZE "tw_storage_free_size"
|
||||
#define TW_GENERATE_MD5_TEXT "tw_generate_md5_text"
|
||||
#define TW_GENERATE_DIGEST_TEXT "tw_generate_digest_text"
|
||||
|
||||
#define TW_RESTORE_TEXT "tw_restore_text"
|
||||
#define TW_RESTORE_SYSTEM_VAR "tw_restore_system"
|
||||
@@ -60,7 +60,7 @@
|
||||
#define TW_RESTORE_AVG_FILE_RATE "tw_restore_avg_file_rate"
|
||||
#define TW_RESTORE_AVG_FILE_COMP_RATE "tw_restore_avg_file_comp_rate"
|
||||
#define TW_RESTORE_FILE_DATE "tw_restore_file_date"
|
||||
#define TW_VERIFY_MD5_TEXT "tw_verify_md5_text"
|
||||
#define TW_VERIFY_DIGEST_TEXT "tw_verify_digest_text"
|
||||
#define TW_UPDATE_SYSTEM_DETAILS_TEXT "tw_update_system_details_text"
|
||||
|
||||
#define TW_VERSION_VAR "tw_version"
|
||||
@@ -68,10 +68,10 @@
|
||||
#define TW_ZIP_LOCATION_VAR "tw_zip_location"
|
||||
#define TW_ZIP_INTERNAL_VAR "tw_zip_internal"
|
||||
#define TW_ZIP_EXTERNAL_VAR "tw_zip_external"
|
||||
#define TW_FORCE_MD5_CHECK_VAR "tw_force_md5_check"
|
||||
#define TW_SKIP_MD5_CHECK_VAR "tw_skip_md5_check"
|
||||
#define TW_SKIP_MD5_GENERATE_VAR "tw_skip_md5_generate"
|
||||
#define TW_DISABLE_FREE_SPACE_VAR "tw_disable_free_space"
|
||||
#define TW_FORCE_DIGEST_CHECK_VAR "tw_force_digest_check"
|
||||
#define TW_SKIP_DIGEST_CHECK_VAR "tw_skip_digest_check"
|
||||
#define TW_SKIP_DIGEST_GENERATE_VAR "tw_skip_digest_generate"
|
||||
#define TW_SIGNED_ZIP_VERIFY_VAR "tw_signed_zip_verify"
|
||||
#define TW_INSTALL_REBOOT_VAR "tw_install_reboot"
|
||||
#define TW_TIME_ZONE_VAR "tw_time_zone"
|
||||
@@ -137,6 +137,8 @@
|
||||
#define TW_CRYPTO_PASSWORD "tw_crypto_password"
|
||||
#define TW_SDEXT_DISABLE_EXT4 "tw_sdext_disable_ext4"
|
||||
#define TW_MILITARY_TIME "tw_military_time"
|
||||
#define TW_USE_SHA2 "tw_use_sha2"
|
||||
#define TW_NO_SHA2 "tw_no_sha2"
|
||||
|
||||
// Also used:
|
||||
// tw_boot_is_mountable
|
||||
|
||||
Reference in New Issue
Block a user