diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index fba4c3ca7..35a812904 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -73,7 +73,19 @@
Error descargando archivo
Actualización de Magisk disponible!
Actualización de Magisk Manager disponible!
-
+
+
+ Pulse para descargar e instalar
+ Descargar sólo el archivo ZIP
+ Instalación Directa (Recomendado)
+ Instalar en ranura inactiva (después de OTA)
+ ¡Se forzará su dispositivo para que arranque en la ranura inactiva actual después de un reinicio!\nUtilice esta opción solo después de que se haya completado la OTA.\nContinuar?
+ Seleccionar Método
+ Configuración Adicional
+ Seleccionar y parchear un archivo
+ Seleccione una imagen raw (* .img) o un archivo tar de ODIN (* .tar)
+ Reiniciando en 5 segundos…
+
Cerrar
Instalar %1$s
@@ -84,28 +96,24 @@
Notas de lanzamiento
Caché del repositorio limpiada
El zip es almacenado en:\n[Internal Storage]%1$s
- Pulse para descargar e instalar
+
DTBO fue parchado!
Magisk Manager ha parcheado dtbo.img, por favor reinicia
Flasheando
Ocultando Magisk Manager…
La Ocultación de Magisk Manager ha fallado…
No se encontró ninguna aplicación para abrir el enlace…
- Descargar sólo el archivo ZIP
- Instalación Directa (Recomendado)
- Instalar en ranura inactiva (después de OTA)
- Seleccionar Método
+ Advertencia
Desinstalación completa
Restaurar imágenes
+ Restaurando …
¡Restauración Terminada!
- Restaurando …
¡El respaldo de la imagen boot Stock no existe!
Descargar Código Propietario
Magisk Manager es un Software Libre por lo que no contiene el código API de SafetyNet (Código Propietario de Google).\n\n ¿Puede permitir que Magisk Manager descargue una extensión (contiene el GoogleApiClient) para la comprobación de SafetyNet?
Instalación Fallida
Se Requiere una Instalación Adicional
Su dispositivo requiere una instalación adicional para que Magisk funcione correctamente. Se descargará el zip de instalación de Magisk, desea continuar ahora?
- Configuración Adicional
Ejecutando Configuración de Entorno
Descargando %1$s
Esta opción no funcionará sin permiso de escritura en la memoria externa.
@@ -131,7 +139,6 @@
Beta
Personalizado
Insertar una URL personalizada
-
Habilitar sólo funciones principales, no se cargarán todos los módulos. MagiskSU y MagiskHide seguirán habilitados
Ocultar Magisk de varias detecciones
Systemless Hosts
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 6b37dd103..31055c9d5 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -3,7 +3,7 @@
Module
Descărcări
- Superuser
+ Superutilizator
Jurnal
Setări
Instalează
@@ -17,7 +17,7 @@
Atinge pentru a începe verificarea SafetyNet
Se verifică starea SafetyNet…
Verificare SafetyNet cu succes
- Eroare API SafetyNet
+ Eroare privind API-ul SafetyNet
Răspunsul este nevalid.
Magisk este la zi
Magisk Manager este la zi
@@ -30,7 +30,7 @@
Dezinstalează Magisk
Toate modulele vor fi dezactivate/eliminate. Rootul va fi eliminat și potențial se vor cripta datele dacă nu sunt criptate deja.
Actualizează
- (Este activat numai modul de bază)
+ (Este activat modul numai de bază)
(Nu sunt furnizate informații)
@@ -74,6 +74,18 @@
Actualizare Magisk disponibilă!
Actualizare Magisk Manager disponibilă!
+
+ Apasă pentru a descărca și a instala.
+ Doar descarcă zip-ul
+ Instalare directă (Recomandat)
+ Instalare în slotul inactiv (După OTA)
+ Dispozitivul va fi FORȚAT să booteze în slotul inactiv actual după repornire!\nFolosește această opțiune numai după terminarea OTA.\nContinui?
+ Selectează metoda
+ Configurare suplimentară
+ Selectează și patchuiește un fișier
+ Selectează o imagine brută (*.img) sau un fișier tar ODIN (*.tar)
+ Repornire în 5 secunde…
+
Închide
Instalează %1$s
@@ -84,19 +96,13 @@
Note privind versiunea
Cache-ul depozitului golit
Zip-ul este stocat în:\n[Stocare internă]%1$s
- Apasă pentru a descărca și instala.
- DTBO a fost modificat!
- Magisk Manager a modificat dtbo.img. Te rugăm să repornești.
+ DTBO a fost patchuit!
+ Magisk Manager a patchuit dtbo.img. Te rugăm să repornești.
Se procesează
Se ascunde Magisk Manager…
Ascunderea Magisk Manager a eșuat.
Nu a fost găsită nicio aplicație pentru a deschide linkul.
- Doar descarcă fișierul zip
- Instalare directă (Recomandat)
- Instalare în slotul inactiv (După OTA)
Avertisment
- Dispozitivul va fi FORȚAT să se încarce în slotul inactiv actual după repornire!\nFolosește această opțiune numai după terminarea OTA.\nContinui?
- Selectează metoda
Dezinstalare totală
Restaurează imagini
Se restaurează…
@@ -107,7 +113,6 @@
Configurare eșuată.
Necesită configurare suplimentară
Dispozitivul tău are nevoie de configurări suplimentare pentru ca Magisk să funcționeze corect. Se va descărca zip-ul de configurare Magisk, vrei să continui acum?
- Configurare adițională
Rulează configurarea mediului…
Se descarcă %1$s
Această caracteristică nu va funcționa fără permisiunea de a scrie în stocarea externă.
@@ -117,8 +122,8 @@
General
Temă întunecată
Activează tema întunecată.
- Golește cache-ul depozitului
- Golește informațiile memorate în cache pentru depoziturile online. Acest lucru forțează actualizarea aplicației online.
+ Golește cache-ul depozitelor
+ Golește informațiile memorate în cache pentru depozitele online. Acest lucru forțează actualizarea aplicației online.
Ascunde Magisk Manager
Reîmpachetează Magisk Manager cu nume de pachet aleatoriu.
Restaurează Magisk Manager
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 060cfeaee..f3927b658 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -74,6 +74,18 @@
Доступне оновлення Magisk!
Доступне оновлення Magisk Manager!
+
+ Натисніть, щоб завантажити і встановити.
+ Тільки завантажити
+ Пряме встановлення (рекомендовано)
+ Встановити в неактивний слот (після OTA)
+ Ваш пристрій буде примусово перезавантажено в неактивний слот!\nВикористовуйте цю опцію тільки для встановлення OTA.\nПродовжити?
+ Виберіть спосіб
+ Додаткове налаштування
+ Вибрати і пропатчити файл
+ Виберіть необроблений образ (*.img) або стиснутий файл ODIN (*.tar)
+ Перезавантаження через 5 секунд…
+
Закрити
Встановити %1$s
@@ -83,20 +95,15 @@
Для застосування змін перезавантажте пристрій.
Особливості версії
Кеш репозиторію очищено
- Архів розташований:\n[Внутрішнє Сховище]%1$s
- Натисніть, щоб завантажити і встановити.
+ Архів розташований у:\n[Внутрішньому Сховищі]%1$s
+
DTBO пропатчено!
Magisk Manager пропатчив dtbo.img. Будь ласка, перезавантажте пристрій.
Прошивання
Приховування Magisk Manager…
Не вдалося приховати Magisk Manager…
Не знайдено програм для відкриття посилання…
- Тільки завантажити
- Пряме встановлення (рекомендовано)
- Встановити в неактивний слот (після OTA)
Попередження
- Ваш пристрій буде примусово перезавантажено в неактивний слот!\nВикористовуйте цю опцію тільки для встановлення OTA.\nПродовжити?
- Виберіть спосіб
Видалення виконано
Відновити образи
Відновлення…
@@ -107,7 +114,6 @@
Не вдалося налаштувати.
Потрібне додаткове налаштування
Для правильної роботи Magisk, потрібне додаткове налаштування вашого пристрою. Буде завантажено zip-архів. Розпочати негайно?
- Додаткове налаштування
Налаштування робочого середовища…
Завантаження %1$s
Ця функція не працюватиме без дозволу на запис у Внутрішнє сховище
@@ -209,6 +215,7 @@
Помилка автентифікації
+ PID: %1$d
Цільовий UID: %1$d
Команда: %1$s
diff --git a/native/jni/core/init.cpp b/native/jni/core/init.cpp
index b5dd3825d..43da07002 100644
--- a/native/jni/core/init.cpp
+++ b/native/jni/core/init.cpp
@@ -197,43 +197,50 @@ static inline void parse_cmdline(const std::function events;
+ constexpr const char *name = "/event";
for (int minor = 64; minor < 96; ++minor) {
- if (mknod("/event", S_IFCHR | 0444, makedev(13, minor))) {
+ if (mknod(name, S_IFCHR | 0444, makedev(13, minor))) {
PLOGE("mknod");
continue;
}
- eventfd = xopen("/event", O_RDWR | O_CLOEXEC);
- unlink("/event");
- if (eventfd < 0)
+ int fd = open(name, O_RDONLY | O_CLOEXEC);
+ unlink(name);
+ if (fd < 0)
continue;
memset(bitmask, 0, sizeof(bitmask));
- ioctl(eventfd, EVIOCGBIT(EV_KEY, sizeof(bitmask)), bitmask);
- if (test_bit(KEY_POWER, bitmask) && test_bit(KEY_VOLUMEUP, bitmask)) {
- // Check KEY_POWER because KEY_VOLUMEUP could be headphone input
- break;
- }
+ ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(bitmask)), bitmask);
+ if (test_bit(KEY_VOLUMEUP, bitmask))
+ events.push_back(fd);
}
- if (eventfd < 0)
+ if (events.empty())
return false;
+ RunFinally fin([&]() -> void {
+ for (const int &fd : events)
+ close(fd);
+ });
+
// Return true if volume key up is hold for more than 3 seconds
int count = 0;
for (int i = 0; i < 500; ++i) {
- memset(bitmask, 0, sizeof(bitmask));
- ioctl(eventfd, EVIOCGKEY(sizeof(bitmask)), bitmask);
- count = test_bit(KEY_VOLUMEUP, bitmask) ? count + 1 : 0;
+ for (const int &fd : events) {
+ memset(bitmask, 0, sizeof(bitmask));
+ ioctl(fd, EVIOCGKEY(sizeof(bitmask)), bitmask);
+ if (test_bit(KEY_VOLUMEUP, bitmask)) {
+ count++;
+ break;
+ }
+ }
if (count >= 300) {
LOGD("KEY_VOLUMEUP detected: disable system-as-root\n");
- close(eventfd);
return true;
}
// Check every 10ms
usleep(10000);
}
- close(eventfd);
return false;
}
diff --git a/stub/src/main/res/values-uk/strings.xml b/stub/src/main/res/values-uk/strings.xml
new file mode 100644
index 000000000..63d4f1519
--- /dev/null
+++ b/stub/src/main/res/values-uk/strings.xml
@@ -0,0 +1,4 @@
+
+ Оновіть Magisk Manager для завершення встановлення. Завантажити і встановити?
+ Будь ласка, підключіться до Інтернету! Потрібно оновити Magisk Manager.
+