mirror of https://github.com/fairyglade/ly.git
Remove config.console_dev option + handle ioctl errors
Signed-off-by: AnErrupTion <anerruption@disroot.org>
This commit is contained in:
parent
e5eb8b7f6f
commit
d08b9a916e
|
@ -100,9 +100,6 @@ colormix_col2 = 0x000000FF
|
|||
# Color mixing animation third color id
|
||||
colormix_col3 = 0x20000000
|
||||
|
||||
# Console path
|
||||
console_dev = /dev/console
|
||||
|
||||
# Input box active by default on startup
|
||||
# Available inputs: info_line, session, login, password
|
||||
default_input = login
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = اسم نطاق غير صالح
|
|||
err_empty_password = لا يُسمح بكلمة مرور فارغة
|
||||
err_envlist = فشل في جلب قائمة المتغيرات البيئية
|
||||
err_hostname = فشل في جلب اسم المضيف (Hostname)
|
||||
|
||||
err_mlock = فشل في تأمين ذاكرة كلمة المرور (mlock)
|
||||
err_null = مؤشر فارغ (Null pointer)
|
||||
err_numlock = فشل في ضبط Num Lock
|
||||
|
@ -38,6 +39,7 @@ err_perm_group = فشل في تخفيض صلاحيات المجموعة (Group p
|
|||
err_perm_user = فشل في تخفيض صلاحيات المستخدم (User permissions)
|
||||
err_pwnam = فشل في جلب معلومات المستخدم
|
||||
err_sleep = فشل في تنفيذ أمر sleep
|
||||
|
||||
err_tty_ctrl = فشل في نقل تحكم الطرفية (TTY)
|
||||
err_user_gid = فشل في تعيين معرّف المجموعة (GID) للمستخدم
|
||||
err_user_init = فشل في تهيئة بيانات المستخدم
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = domini invàlid
|
|||
|
||||
err_envlist = error en obtenir l'envlist
|
||||
err_hostname = error en obtenir el nom de l'amfitrió
|
||||
|
||||
err_mlock = error en bloquejar la memòria de clau
|
||||
err_null = punter nul
|
||||
err_numlock = error en establir el Bloq num
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = error en degradar els permisos de l'usuari
|
|||
err_pwnam = error en obtenir la informació de l'usuari
|
||||
|
||||
|
||||
|
||||
err_user_gid = error en establir el GID de l'usuari
|
||||
err_user_init = error en inicialitzar usuari
|
||||
err_user_uid = error en establir l'UID de l'usuari
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = neplatná doména
|
|||
|
||||
|
||||
err_hostname = nelze získat název hostitele
|
||||
|
||||
err_mlock = uzamčení paměti hesel selhalo
|
||||
err_null = nulový ukazatel
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = nepodařilo se snížit uživatelská oprávnění
|
|||
err_pwnam = nelze získat informace o uživateli
|
||||
|
||||
|
||||
|
||||
err_user_gid = nastavení GID uživatele selhalo
|
||||
err_user_init = inicializace uživatele selhala
|
||||
err_user_uid = nastavení UID uživateli selhalo
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = Ungueltige Domain
|
|||
err_empty_password = Leeres Passwort nicht zugelassen
|
||||
err_envlist = Fehler beim Abrufen der Umgebungs-Variablen
|
||||
err_hostname = Abrufen des Hostnames fehlgeschlagen
|
||||
|
||||
err_mlock = Sperren des Passwortspeichers fehlgeschlagen
|
||||
err_null = Null Pointer
|
||||
err_numlock = Numlock konnte nicht aktiviert werden
|
||||
|
@ -38,6 +39,7 @@ err_perm_group = Fehler beim Heruntersetzen der Gruppenberechtigungen
|
|||
err_perm_user = Fehler beim Heruntersetzen der Nutzerberechtigungen
|
||||
err_pwnam = Abrufen der Benutzerinformationen fehlgeschlagen
|
||||
err_sleep = Sleep-Befehl fehlgeschlagen
|
||||
|
||||
err_tty_ctrl = Fehler bei der TTY-Uebergabe
|
||||
err_user_gid = Fehler beim Setzen der Gruppen-ID
|
||||
err_user_init = Nutzer-Initialisierung fehlgeschlagen
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = invalid domain
|
|||
err_empty_password = empty password not allowed
|
||||
err_envlist = failed to get envlist
|
||||
err_hostname = failed to get hostname
|
||||
err_lock_state = failed to get lock state
|
||||
err_mlock = failed to lock password memory
|
||||
err_null = null pointer
|
||||
err_numlock = failed to set numlock
|
||||
|
@ -38,6 +39,7 @@ err_perm_group = failed to downgrade group permissions
|
|||
err_perm_user = failed to downgrade user permissions
|
||||
err_pwnam = failed to get user info
|
||||
err_sleep = failed to execute sleep command
|
||||
err_switch_tty = failed to switch tty
|
||||
err_tty_ctrl = tty control transfer failed
|
||||
err_user_gid = failed to set user GID
|
||||
err_user_init = failed to initialize user
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = dominio inválido
|
|||
|
||||
|
||||
err_hostname = error al obtener el nombre de host
|
||||
|
||||
err_mlock = error al bloquear la contraseña de memoria
|
||||
err_null = puntero nulo
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = error al degradar los permisos del usuario
|
|||
err_pwnam = error al obtener la información del usuario
|
||||
|
||||
|
||||
|
||||
err_user_gid = error al establecer el GID del usuario
|
||||
err_user_init = error al inicializar usuario
|
||||
err_user_uid = error al establecer el UID del usuario
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = domaine invalide
|
|||
err_empty_password = mot de passe vide non autorisé
|
||||
err_envlist = échec de lecture de la liste d'environnement
|
||||
err_hostname = échec de lecture du nom d'hôte
|
||||
err_lock_state = échec de lecture de l'état de verrouillage
|
||||
err_mlock = échec du verrouillage mémoire
|
||||
err_null = pointeur null
|
||||
err_numlock = échec de modification du verr.num
|
||||
|
@ -38,6 +39,7 @@ err_perm_group = échec du déclassement des permissions de groupe
|
|||
err_perm_user = échec du déclassement des permissions utilisateur
|
||||
err_pwnam = échec de lecture des infos utilisateur
|
||||
err_sleep = échec de l'exécution de la commande de veille
|
||||
err_switch_tty = échec du changement de terminal
|
||||
err_tty_ctrl = échec du transfert de contrôle du terminal
|
||||
err_user_gid = échec de modification du GID
|
||||
err_user_init = échec d'initialisation de l'utilisateur
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = dominio non valido
|
|||
|
||||
|
||||
err_hostname = impossibile ottenere hostname
|
||||
|
||||
err_mlock = impossibile ottenere lock per la password in memoria
|
||||
err_null = puntatore nullo
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = impossibile ridurre permessi utente
|
|||
err_pwnam = impossibile ottenere dati utente
|
||||
|
||||
|
||||
|
||||
err_user_gid = impossibile impostare GID utente
|
||||
err_user_init = impossibile inizializzare utente
|
||||
err_user_uid = impossible impostare UID utente
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = niepoprawna domena
|
|||
err_empty_password = puste hasło jest niedozwolone
|
||||
err_envlist = nie udało się pobrać listy zmiennych środowiskowych
|
||||
err_hostname = nie udało się uzyskać nazwy hosta
|
||||
|
||||
err_mlock = nie udało się zablokować pamięci haseł
|
||||
err_null = pusty wskaźnik
|
||||
err_numlock = nie udało się ustawić numlock
|
||||
|
@ -38,6 +39,7 @@ err_perm_group = nie udało się obniżyć uprawnień grupy
|
|||
err_perm_user = nie udało się obniżyć uprawnień użytkownika
|
||||
err_pwnam = nie udało się uzyskać informacji o użytkowniku
|
||||
err_sleep = nie udało się wykonać polecenia sleep
|
||||
|
||||
err_tty_ctrl = nie udało się przekazać kontroli tty
|
||||
err_user_gid = nie udało się ustawić GID użytkownika
|
||||
err_user_init = nie udało się zainicjalizować użytkownika
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = domínio inválido
|
|||
|
||||
|
||||
err_hostname = erro ao obter o nome do host
|
||||
|
||||
err_mlock = erro de bloqueio de memória
|
||||
err_null = ponteiro nulo
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = erro ao reduzir as permissões do utilizador
|
|||
err_pwnam = erro ao obter informação do utilizador
|
||||
|
||||
|
||||
|
||||
err_user_gid = erro ao definir o GID do utilizador
|
||||
err_user_init = erro ao iniciar o utilizador
|
||||
err_user_uid = erro ao definir o UID do utilizador
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = domínio inválido
|
|||
|
||||
|
||||
err_hostname = não foi possível obter o nome do host
|
||||
|
||||
err_mlock = bloqueio da memória de senha malsucedido
|
||||
err_null = ponteiro nulo
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = não foi possível reduzir as permissões de usuário
|
|||
err_pwnam = não foi possível obter informações do usuário
|
||||
|
||||
|
||||
|
||||
err_user_gid = não foi possível definir o GID do usuário
|
||||
err_user_init = não foi possível iniciar o usuário
|
||||
err_user_uid = não foi possível definir o UID do usuário
|
||||
|
|
|
@ -17,6 +17,7 @@ err_console_dev = nu s-a putut accesa consola
|
|||
|
||||
|
||||
|
||||
|
||||
err_pam_abort = tranzacţie pam anulată
|
||||
err_pam_acct_expired = cont expirat
|
||||
err_pam_auth = eroare de autentificare
|
||||
|
@ -47,6 +48,7 @@ err_perm_user = nu s-a putut face downgrade permisiunilor de utilizator
|
|||
|
||||
|
||||
|
||||
|
||||
login = utilizator
|
||||
logout = opreşte sesiunea
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = неверный домен
|
|||
|
||||
|
||||
err_hostname = не удалось получить имя хоста
|
||||
|
||||
err_mlock = сбой блокировки памяти
|
||||
err_null = нулевой указатель
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = не удалось понизить права доступа
|
|||
err_pwnam = не удалось получить информацию о пользователе
|
||||
|
||||
|
||||
|
||||
err_user_gid = не удалось установить GID пользователя
|
||||
err_user_init = не удалось инициализировать пользователя
|
||||
err_user_uid = не удалось установить UID пользователя
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = nevazeci domen
|
|||
|
||||
|
||||
err_hostname = neuspijesno trazenje hostname-a
|
||||
|
||||
err_mlock = neuspijesno zakljucavanje memorije lozinke
|
||||
err_null = null pokazivac
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = neuspijesno snizavanje dozvola korisnika
|
|||
err_pwnam = neuspijesno skupljanje informacija o korisniku
|
||||
|
||||
|
||||
|
||||
err_user_gid = neuspijesno postavljanje korisničkog GID-a
|
||||
err_user_init = neuspijensa inicijalizacija korisnika
|
||||
err_user_uid = neuspijesno postavljanje UID-a korisnika
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = okänd domän
|
|||
|
||||
|
||||
err_hostname = misslyckades att hämta värdnamn
|
||||
|
||||
err_mlock = misslyckades att låsa lösenordsminne
|
||||
err_null = nullpekare
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = misslyckades att nergradera användarbehörigheter
|
|||
err_pwnam = misslyckades att hämta användarinfo
|
||||
|
||||
|
||||
|
||||
err_user_gid = misslyckades att ställa in användar-GID
|
||||
err_user_init = misslyckades att initialisera användaren
|
||||
err_user_uid = misslyckades att ställa in användar-UID
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = gecersiz etki alani
|
|||
|
||||
|
||||
err_hostname = ana bilgisayar adi alinamadi
|
||||
|
||||
err_mlock = parola bellegi kilitlenemedi
|
||||
err_null = bos isaretci hatasi
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = kullanici izinleri dusurulemedi
|
|||
err_pwnam = kullanici bilgileri alinamadi
|
||||
|
||||
|
||||
|
||||
err_user_gid = kullanici icin GID ayarlanamadi
|
||||
err_user_init = kullanici oturumu baslatilamadi
|
||||
err_user_uid = kullanici icin UID ayarlanamadi
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = недійсний домен
|
|||
|
||||
|
||||
err_hostname = не вдалося отримати ім'я хосту
|
||||
|
||||
err_mlock = збій блокування пам'яті
|
||||
err_null = нульовий вказівник
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = не вдалося понизити права доступу
|
|||
err_pwnam = не вдалося отримати дані користувача
|
||||
|
||||
|
||||
|
||||
err_user_gid = не вдалося змінити GID користувача
|
||||
err_user_init = не вдалося ініціалізувати користувача
|
||||
err_user_uid = не вдалося змінити UID користувача
|
||||
|
|
|
@ -13,6 +13,7 @@ err_domain = 无效的域
|
|||
|
||||
|
||||
err_hostname = 获取主机名失败
|
||||
|
||||
err_mlock = 锁定密码存储器失败
|
||||
err_null = 空指针
|
||||
|
||||
|
@ -39,6 +40,7 @@ err_perm_user = 用户权限降级失败
|
|||
err_pwnam = 获取用户信息失败
|
||||
|
||||
|
||||
|
||||
err_user_gid = 设置用户GID失败
|
||||
err_user_init = 初始化用户失败
|
||||
err_user_uid = 设置用户UID失败
|
||||
|
|
|
@ -28,7 +28,6 @@ cmatrix_max_codepoint: u16 = 0x7B,
|
|||
colormix_col1: u32 = 0x00FF0000,
|
||||
colormix_col2: u32 = 0x000000FF,
|
||||
colormix_col3: u32 = 0x20000000,
|
||||
console_dev: []const u8 = "/dev/console",
|
||||
default_input: Input = .login,
|
||||
doom_top_color: u32 = 0x00FF0000,
|
||||
doom_middle_color: u32 = 0x00FFFF00,
|
||||
|
|
|
@ -18,6 +18,7 @@ err_domain: []const u8 = "invalid domain",
|
|||
err_empty_password: []const u8 = "empty password not allowed",
|
||||
err_envlist: []const u8 = "failed to get envlist",
|
||||
err_hostname: []const u8 = "failed to get hostname",
|
||||
err_lock_state: []const u8 = "failed to get lock state",
|
||||
err_mlock: []const u8 = "failed to lock password memory",
|
||||
err_null: []const u8 = "null pointer",
|
||||
err_numlock: []const u8 = "failed to set numlock",
|
||||
|
@ -43,6 +44,7 @@ err_perm_group: []const u8 = "failed to downgrade group permissions",
|
|||
err_perm_user: []const u8 = "failed to downgrade user permissions",
|
||||
err_pwnam: []const u8 = "failed to get user info",
|
||||
err_sleep: []const u8 = "failed to execute sleep command",
|
||||
err_switch_tty: []const u8 = "failed to switch tty",
|
||||
err_tty_ctrl: []const u8 = "tty control transfer failed",
|
||||
err_user_gid: []const u8 = "failed to set user GID",
|
||||
err_user_init: []const u8 = "failed to initialize user",
|
||||
|
|
|
@ -36,7 +36,7 @@ pub const stdlib = @cImport({
|
|||
pub const pwd = @cImport({
|
||||
@cInclude("pwd.h");
|
||||
// We include a FreeBSD-specific header here since login_cap.h references
|
||||
// the passwd struct directly, so we can't import it separately'
|
||||
// the passwd struct directly, so we can't import it separately
|
||||
if (builtin.os.tag == .freebsd) @cInclude("login_cap.h");
|
||||
});
|
||||
|
||||
|
@ -75,23 +75,21 @@ pub fn timeAsString(buf: [:0]u8, format: [:0]const u8) ![]u8 {
|
|||
return buf[0..len];
|
||||
}
|
||||
|
||||
pub fn switchTty(console_dev: []const u8, tty: u8) !void {
|
||||
const fd = try std.posix.open(console_dev, .{ .ACCMODE = .WRONLY }, 0);
|
||||
defer std.posix.close(fd);
|
||||
pub fn switchTty(tty: u8) !void {
|
||||
var status = std.c.ioctl(std.c.STDIN_FILENO, vt.VT_ACTIVATE, tty);
|
||||
if (status != 0) return error.FailedToActivateTty;
|
||||
|
||||
_ = std.c.ioctl(fd, vt.VT_ACTIVATE, tty);
|
||||
_ = std.c.ioctl(fd, vt.VT_WAITACTIVE, tty);
|
||||
status = std.c.ioctl(std.c.STDIN_FILENO, vt.VT_WAITACTIVE, tty);
|
||||
if (status != 0) return error.FailedToWaitForActiveTty;
|
||||
}
|
||||
|
||||
pub fn getLockState(console_dev: []const u8) !struct {
|
||||
pub fn getLockState() !struct {
|
||||
numlock: bool,
|
||||
capslock: bool,
|
||||
} {
|
||||
const fd = try std.posix.open(console_dev, .{ .ACCMODE = .RDONLY }, 0);
|
||||
defer std.posix.close(fd);
|
||||
|
||||
var led: LedState = undefined;
|
||||
_ = std.c.ioctl(fd, get_led_state, &led);
|
||||
const status = std.c.ioctl(std.c.STDIN_FILENO, get_led_state, &led);
|
||||
if (status != 0) return error.FailedToGetLockState;
|
||||
|
||||
return .{
|
||||
.numlock = (led & numlock_led) != 0,
|
||||
|
@ -101,11 +99,12 @@ pub fn getLockState(console_dev: []const u8) !struct {
|
|||
|
||||
pub fn setNumlock(val: bool) !void {
|
||||
var led: LedState = undefined;
|
||||
_ = std.c.ioctl(0, get_led_state, &led);
|
||||
var status = std.c.ioctl(std.c.STDIN_FILENO, get_led_state, &led);
|
||||
if (status != 0) return error.FailedToGetNumlock;
|
||||
|
||||
const numlock = (led & numlock_led) != 0;
|
||||
if (numlock != val) {
|
||||
const status = std.c.ioctl(std.posix.STDIN_FILENO, set_led_state, led ^ numlock_led);
|
||||
status = std.c.ioctl(std.posix.STDIN_FILENO, set_led_state, led ^ numlock_led);
|
||||
if (status != 0) return error.FailedToSetNumlock;
|
||||
}
|
||||
}
|
||||
|
|
14
src/main.zig
14
src/main.zig
|
@ -389,12 +389,10 @@ pub fn main() !void {
|
|||
var update = true;
|
||||
var resolution_changed = false;
|
||||
var auth_fails: u64 = 0;
|
||||
var can_access_console_dev = true;
|
||||
|
||||
// Switch to selected TTY if possible
|
||||
interop.switchTty(config.console_dev, config.tty) catch {
|
||||
try info_line.addMessage(lang.err_console_dev, config.error_bg, config.error_fg);
|
||||
can_access_console_dev = false;
|
||||
// Switch to selected TTY
|
||||
interop.switchTty(config.tty) catch {
|
||||
try info_line.addMessage(lang.err_switch_tty, config.error_bg, config.error_fg);
|
||||
};
|
||||
|
||||
while (run) {
|
||||
|
@ -546,9 +544,9 @@ pub fn main() !void {
|
|||
buffer.drawLabel(label_txt, buffer.box_x, buffer.box_y + buffer.box_height);
|
||||
}
|
||||
|
||||
if (can_access_console_dev) draw_lock_state: {
|
||||
const lock_state = interop.getLockState(config.console_dev) catch {
|
||||
try info_line.addMessage(lang.err_console_dev, config.error_bg, config.error_fg);
|
||||
draw_lock_state: {
|
||||
const lock_state = interop.getLockState() catch {
|
||||
try info_line.addMessage(lang.err_lock_state, config.error_bg, config.error_fg);
|
||||
break :draw_lock_state;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue