From 10854e643a1748cfcf303423caf09e0fdc45f39a Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Sun, 30 Nov 2025 09:14:10 +0100 Subject: [PATCH] Don't crash when failing to parse arguments Signed-off-by: AnErrupTion --- res/lang/ar.ini | 5 +++-- res/lang/cat.ini | 5 +++-- res/lang/cs.ini | 5 +++-- res/lang/de.ini | 5 +++-- res/lang/en.ini | 7 ++++--- res/lang/es.ini | 5 +++-- res/lang/fr.ini | 5 +++-- res/lang/it.ini | 5 +++-- res/lang/ja_JP.ini | 5 +++-- res/lang/lv.ini | 5 +++-- res/lang/pl.ini | 5 +++-- res/lang/pt.ini | 5 +++-- res/lang/pt_BR.ini | 5 +++-- res/lang/ro.ini | 3 ++- res/lang/ru.ini | 5 +++-- res/lang/sr.ini | 5 +++-- res/lang/sv.ini | 5 +++-- res/lang/tr.ini | 5 +++-- res/lang/uk.ini | 5 +++-- res/lang/zh_CN.ini | 5 +++-- src/config/Lang.zig | 1 + src/main.zig | 42 ++++++++++++++++++++++++++++-------------- 22 files changed, 89 insertions(+), 54 deletions(-) diff --git a/res/lang/ar.ini b/res/lang/ar.ini index b70dbe0..6f48471 100644 --- a/res/lang/ar.ini +++ b/res/lang/ar.ini @@ -5,6 +5,7 @@ capslock = capslock err_alloc = فشل في تخصيص الذاكرة + err_bounds = out-of-bounds index err_brightness_change = فشل في تغيير سطوع الشاشة err_chdir = فشل في فتح مجلد المنزل @@ -15,6 +16,7 @@ err_domain = اسم نطاق غير صالح err_empty_password = لا يُسمح بكلمة مرور فارغة err_envlist = فشل في جلب قائمة المتغيرات البيئية + err_hostname = فشل في جلب اسم المضيف (Hostname) @@ -42,7 +44,6 @@ err_perm_dir = فشل في تغيير المجلد الحالي err_perm_group = فشل في تخفيض صلاحيات المجموعة (Group permissions) err_perm_user = فشل في تخفيض صلاحيات المستخدم (User permissions) err_pwnam = فشل في جلب معلومات المستخدم - err_sleep = فشل في تنفيذ أمر sleep @@ -55,6 +56,7 @@ err_xauth = فشل في تنفيذ أمر xauth err_xcb_conn = فشل في الاتصال بمكتبة XCB err_xsessions_dir = فشل في العثور على مجلد Xsessions err_xsessions_open = فشل في فتح مجلد Xsessions + insert = ادخال login = تسجيل الدخول logout = تم تسجيل خروجك @@ -67,7 +69,6 @@ restart = اعادة التشغيل shell = shell shutdown = ايقاف التشغيل sleep = وضع السكون - wayland = wayland x11 = x11 xinitrc = xinitrc diff --git a/res/lang/cat.ini b/res/lang/cat.ini index 302ddbd..f7e4343 100644 --- a/res/lang/cat.ini +++ b/res/lang/cat.ini @@ -5,6 +5,7 @@ capslock = Bloq Majús err_alloc = assignació de memòria fallida + err_bounds = índex fora de límits err_brightness_change = error en canviar la brillantor err_chdir = error en obrir la carpeta home @@ -15,6 +16,7 @@ err_domain = domini invàlid err_envlist = error en obtenir l'envlist + err_hostname = error en obtenir el nom de l'amfitrió @@ -47,7 +49,6 @@ 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 @@ -55,6 +56,7 @@ err_xauth = error en la comanda xauth err_xcb_conn = error en la connexió xcb err_xsessions_dir = error en trobar la carpeta de sessions err_xsessions_open = error en obrir la carpeta de sessions + insert = inserir login = iniciar sessió logout = sessió tancada @@ -67,7 +69,6 @@ restart = reiniciar shell = shell shutdown = aturar sleep = suspendre - wayland = wayland x11 = x11 xinitrc = xinitrc diff --git a/res/lang/cs.ini b/res/lang/cs.ini index 50af836..c25ace1 100644 --- a/res/lang/cs.ini +++ b/res/lang/cs.ini @@ -5,6 +5,7 @@ capslock = capslock err_alloc = alokace paměti selhala + err_bounds = index je mimo hranice pole err_chdir = nelze otevřít domovský adresář @@ -15,6 +16,7 @@ err_domain = neplatná doména + err_hostname = nelze získat název hostitele @@ -47,7 +49,6 @@ 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 @@ -56,6 +57,7 @@ err_user_uid = nastavení UID uživateli selhalo err_xsessions_dir = nepodařilo se najít složku relací err_xsessions_open = nepodařilo se otevřít složku relací + login = uživatel logout = odhlášen @@ -67,7 +69,6 @@ restart = restartovat shell = příkazový řádek shutdown = vypnout - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/de.ini b/res/lang/de.ini index 68cc4a6..ac8f654 100644 --- a/res/lang/de.ini +++ b/res/lang/de.ini @@ -5,6 +5,7 @@ capslock = Feststelltaste err_alloc = Speicherzuweisung fehlgeschlagen + err_bounds = Index ausserhalb des Bereichs err_brightness_change = Helligkeitsänderung fehlgeschlagen err_chdir = Fehler beim Oeffnen des Home-Ordners @@ -15,6 +16,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 @@ -42,7 +44,6 @@ err_perm_dir = Ordnerwechsel fehlgeschlagen 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 @@ -55,6 +56,7 @@ err_xauth = Xauth-Befehl fehlgeschlagen err_xcb_conn = xcb-Verbindung fehlgeschlagen err_xsessions_dir = Fehler beim Finden des Sitzungsordners err_xsessions_open = Fehler beim Oeffnen des Sitzungsordners + insert = Einfügen login = Nutzer logout = Abmelden @@ -67,7 +69,6 @@ restart = Neustarten shell = Shell shutdown = Herunterfahren sleep = Sleep - wayland = wayland x11 = X11 xinitrc = xinitrc diff --git a/res/lang/en.ini b/res/lang/en.ini index 513ee72..325e9b9 100644 --- a/res/lang/en.ini +++ b/res/lang/en.ini @@ -4,6 +4,7 @@ brightness_up = increase brightness capslock = capslock custom = custom err_alloc = failed memory allocation +err_args = unable to parse command line arguments err_autologin_session = autologin session not found err_bounds = out-of-bounds index err_brightness_change = failed to change brightness @@ -15,6 +16,7 @@ err_domain = invalid domain err_empty_password = empty password not allowed err_envlist = failed to get envlist err_get_active_tty = failed to get active tty +err_hibernate = failed to execute hibernate command err_hostname = failed to get hostname err_lock_state = failed to get lock state err_log = failed to open log file @@ -42,8 +44,7 @@ err_perm_dir = failed to change current directory 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_battery = failed to load battery status err_switch_tty = failed to switch tty err_tty_ctrl = tty control transfer failed @@ -55,6 +56,7 @@ err_xauth = xauth command failed err_xcb_conn = xcb connection failed err_xsessions_dir = failed to find sessions folder err_xsessions_open = failed to open sessions folder +hibernate = hibernate insert = insert login = login logout = logged out @@ -67,7 +69,6 @@ restart = reboot shell = shell shutdown = shutdown sleep = sleep - wayland = wayland x11 = x11 xinitrc = xinitrc diff --git a/res/lang/es.ini b/res/lang/es.ini index a00d866..fe720c7 100644 --- a/res/lang/es.ini +++ b/res/lang/es.ini @@ -5,6 +5,7 @@ capslock = Bloq Mayús err_alloc = asignación de memoria fallida + err_bounds = índice fuera de límites err_chdir = error al abrir la carpeta home @@ -15,6 +16,7 @@ err_domain = dominio inválido + err_hostname = error al obtener el nombre de host @@ -47,7 +49,6 @@ 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 @@ -55,6 +56,7 @@ err_user_uid = error al establecer el UID del usuario err_xsessions_dir = error al buscar la carpeta de sesiones err_xsessions_open = error al abrir la carpeta de sesiones + insert = insertar login = usuario logout = cerrar sesión @@ -67,7 +69,6 @@ restart = reiniciar shell = shell shutdown = apagar sleep = suspender - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/fr.ini b/res/lang/fr.ini index 82083c7..1ed64e4 100644 --- a/res/lang/fr.ini +++ b/res/lang/fr.ini @@ -5,6 +5,7 @@ capslock = verr.maj custom = customisé err_alloc = échec d'allocation mémoire + err_bounds = indice hors-limite err_brightness_change = échec du changement de luminosité err_chdir = échec de l'ouverture du répertoire home @@ -15,6 +16,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_get_active_tty = échec de lecture du terminal actif + err_hostname = échec de lecture du nom d'hôte err_lock_state = échec de lecture de l'état de verrouillage err_log = échec de l'ouverture du fichier de journal @@ -42,7 +44,6 @@ err_perm_dir = échec de changement de répertoire 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_battery = échec de lecture de l'état de la batterie err_switch_tty = échec du changement de terminal @@ -55,6 +56,7 @@ err_xauth = échec de la commande xauth err_xcb_conn = échec de la connexion xcb err_xsessions_dir = échec de la recherche du dossier de sessions err_xsessions_open = échec de l'ouverture du dossier de sessions + insert = insertion login = identifiant logout = déconnecté @@ -67,7 +69,6 @@ restart = redémarrer shell = shell shutdown = éteindre sleep = veille - wayland = wayland x11 = x11 xinitrc = xinitrc diff --git a/res/lang/it.ini b/res/lang/it.ini index 35dcb6a..5cab01d 100644 --- a/res/lang/it.ini +++ b/res/lang/it.ini @@ -5,6 +5,7 @@ capslock = capslock err_alloc = impossibile allocare memoria + err_bounds = indice fuori limite err_chdir = impossibile aprire home directory @@ -15,6 +16,7 @@ err_domain = dominio non valido + err_hostname = impossibile ottenere hostname @@ -47,7 +49,6 @@ 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 @@ -56,6 +57,7 @@ err_user_uid = impossible impostare UID utente err_xsessions_dir = impossibile localizzare cartella sessioni err_xsessions_open = impossibile aprire cartella sessioni + login = username logout = scollegato @@ -67,7 +69,6 @@ restart = riavvio shell = shell shutdown = arresto - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/ja_JP.ini b/res/lang/ja_JP.ini index ef126d6..44fff53 100644 --- a/res/lang/ja_JP.ini +++ b/res/lang/ja_JP.ini @@ -5,6 +5,7 @@ capslock = CapsLock err_alloc = メモリ割り当て失敗 + err_bounds = 境界外インデックス err_brightness_change = 明るさの変更に失敗しました err_chdir = ホームフォルダを開けませんでした @@ -15,6 +16,7 @@ err_domain = 無効なドメイン err_empty_password = 空のパスワードは許可されていません err_envlist = 環境変数リストの取得に失敗しました + err_hostname = ホスト名の取得に失敗しました @@ -42,7 +44,6 @@ err_perm_dir = カレントディレクトリの変更に失敗しました err_perm_group = グループ権限のダウングレードに失敗しました err_perm_user = ユーザー権限のダウングレードに失敗しました err_pwnam = ユーザー情報の取得に失敗しました - err_sleep = スリープコマンドの実行に失敗しました @@ -55,6 +56,7 @@ err_xauth = xauthコマンドの実行に失敗しました err_xcb_conn = XCB接続に失敗しました err_xsessions_dir = セッションフォルダが見つかりませんでした err_xsessions_open = セッションフォルダを開けませんでした + insert = 挿入 login = ログイン logout = ログアウト済み @@ -67,7 +69,6 @@ restart = 再起動 shell = シェル shutdown = シャットダウン sleep = スリープ - wayland = Wayland x11 = X11 xinitrc = xinitrc diff --git a/res/lang/lv.ini b/res/lang/lv.ini index 40992bc..7d0947f 100644 --- a/res/lang/lv.ini +++ b/res/lang/lv.ini @@ -5,6 +5,7 @@ capslock = caps lock custom = pielāgots err_alloc = neizdevās atmiņas piešķiršana + err_bounds = indekss ārpus robežām err_brightness_change = neizdevās mainīt spilgtumu err_chdir = neizdevās atvērt mājas mapi @@ -15,6 +16,7 @@ err_domain = nederīgs domēns err_empty_password = tukša parole nav atļauta err_envlist = neizdevās iegūt vides mainīgo sarakstu err_get_active_tty = neizdevās iegūt aktīvo tty + err_hostname = neizdevās iegūt hostname err_lock_state = neizdevās iegūt bloķēšanas stāvokli err_log = neizdevās atvērt žurnāla failu @@ -42,7 +44,6 @@ err_perm_dir = neizdevās mainīt pašreizējo mapi err_perm_group = neizdevās pazemināt grupas atļaujas err_perm_user = neizdevās pazemināt lietotāja atļaujas err_pwnam = neizdevās iegūt lietotāja informāciju - err_sleep = neizdevās izpildīt miega komandu err_battery = neizdevās ielādēt akumulatora stāvokli err_switch_tty = neizdevās pārslēgt tty @@ -55,6 +56,7 @@ err_xauth = xauth komanda neizdevās err_xcb_conn = xcb savienojums neizdevās err_xsessions_dir = neizdevās atrast sesiju mapi err_xsessions_open = neizdevās atvērt sesiju mapi + insert = ievietot login = lietotājs logout = iziet @@ -67,7 +69,6 @@ restart = restartēt shell = terminālis shutdown = izslēgt sleep = snauda - wayland = wayland x11 = x11 xinitrc = xinitrc diff --git a/res/lang/pl.ini b/res/lang/pl.ini index 791b968..ad57810 100644 --- a/res/lang/pl.ini +++ b/res/lang/pl.ini @@ -4,6 +4,7 @@ brightness_up = zwiększ jasność capslock = capslock custom = własny err_alloc = nieudana alokacja pamięci + err_autologin_session = nie znaleziono sesji autologowania err_bounds = indeks poza zakresem err_brightness_change = nie udało się zmienić jasności @@ -15,6 +16,7 @@ err_domain = niepoprawna domena err_empty_password = puste hasło jest niedozwolone err_envlist = nie udało się pobrać listy zmiennych środowiskowych err_get_active_tty = nie udało się uzyskać aktywnego tty + err_hostname = nie udało się uzyskać nazwy hosta err_lock_state = nie udało się uzyskać stanu blokady err_log = nie udało się otworzyć pliku logu @@ -42,7 +44,6 @@ err_perm_dir = nie udało się zmienić obecnego katalogu 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_battery = nie udało się sprawdzić statusu baterii err_switch_tty = nie można przełączyć tty @@ -55,6 +56,7 @@ err_xauth = polecenie xauth nie powiodło się err_xcb_conn = połączenie xcb nie powiodło się err_xsessions_dir = nie udało się znaleźć folderu sesji err_xsessions_open = nie udało się otworzyć folderu sesji + insert = wstaw login = login logout = wylogowano @@ -67,7 +69,6 @@ restart = uruchom ponownie shell = powłoka shutdown = wyłącz sleep = uśpij - wayland = wayland x11 = x11 xinitrc = xinitrc diff --git a/res/lang/pt.ini b/res/lang/pt.ini index 25d3690..2b4fe45 100644 --- a/res/lang/pt.ini +++ b/res/lang/pt.ini @@ -5,6 +5,7 @@ capslock = capslock err_alloc = erro na atribuição de memória + err_bounds = índice fora de limites err_chdir = erro ao abrir a pasta home @@ -15,6 +16,7 @@ err_domain = domínio inválido + err_hostname = erro ao obter o nome do host @@ -47,7 +49,6 @@ 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 @@ -56,6 +57,7 @@ err_user_uid = erro ao definir o UID do utilizador err_xsessions_dir = erro ao localizar a pasta das sessões err_xsessions_open = erro ao abrir a pasta das sessões + login = iniciar sessão logout = terminar sessão @@ -67,7 +69,6 @@ restart = reiniciar shell = shell shutdown = encerrar - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/pt_BR.ini b/res/lang/pt_BR.ini index 144e26f..0f53481 100644 --- a/res/lang/pt_BR.ini +++ b/res/lang/pt_BR.ini @@ -5,6 +5,7 @@ capslock = caixa alta err_alloc = alocação de memória malsucedida + err_bounds = índice fora de limites err_chdir = não foi possível abrir o diretório home @@ -15,6 +16,7 @@ err_domain = domínio inválido + err_hostname = não foi possível obter o nome do host @@ -47,7 +49,6 @@ 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 @@ -56,6 +57,7 @@ err_user_uid = não foi possível definir o UID do usuário err_xsessions_dir = não foi possível encontrar a pasta das sessões err_xsessions_open = não foi possível abrir a pasta das sessões + login = conectar logout = desconectado @@ -67,7 +69,6 @@ restart = reiniciar shell = shell shutdown = desligar - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/ro.ini b/res/lang/ro.ini index 0dd5ab7..a045ffd 100644 --- a/res/lang/ro.ini +++ b/res/lang/ro.ini @@ -20,6 +20,8 @@ capslock = capslock + + err_pam_abort = tranzacţie pam anulată @@ -67,7 +69,6 @@ restart = resetează shell = shell shutdown = opreşte sistemul - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/ru.ini b/res/lang/ru.ini index 46e7d98..5af0923 100644 --- a/res/lang/ru.ini +++ b/res/lang/ru.ini @@ -4,6 +4,7 @@ brightness_up = увеличить яркость capslock = capslock custom = пользовательский err_alloc = не удалось выделить память + err_autologin_session = не найдена сессия с автологином err_bounds = за пределами индекса err_brightness_change = не удалось изменить яркость @@ -15,6 +16,7 @@ err_domain = неверный домен err_empty_password = пустой пароль не допустим err_envlist = не удалось получить список переменных среды err_get_active_tty = не удалось получить активный tty + err_hostname = не удалось получить имя хоста err_lock_state = не удалось получить состояние lock err_log = не удалось открыть файл log @@ -42,7 +44,6 @@ err_perm_dir = не удалось изменить текущий катало err_perm_group = не удалось понизить права доступа группы err_perm_user = не удалось понизить права доступа пользователя err_pwnam = не удалось получить информацию о пользователе - err_sleep = не удалось выполнить команду sleep err_battery = не удалось получить статус батареи err_switch_tty = не удалось переключить tty @@ -55,6 +56,7 @@ err_xauth = команда xauth не выполнена err_xcb_conn = ошибка подключения xcb err_xsessions_dir = не удалось найти сессионную папку err_xsessions_open = не удалось открыть сессионную папку + insert = вставка login = логин logout = вышел из системы @@ -67,7 +69,6 @@ restart = перезагрузить shell = оболочка shutdown = выключить sleep = сон - wayland = wayland x11 = x11 xinitrc = xinitrc diff --git a/res/lang/sr.ini b/res/lang/sr.ini index 236803c..b9159cc 100644 --- a/res/lang/sr.ini +++ b/res/lang/sr.ini @@ -5,6 +5,7 @@ capslock = capslock err_alloc = neuspijesna alokacija memorije + err_bounds = izvan granica indeksa err_chdir = neuspijesno otvaranje home foldera @@ -15,6 +16,7 @@ err_domain = nevazeci domen + err_hostname = neuspijesno trazenje hostname-a @@ -47,7 +49,6 @@ 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 @@ -56,6 +57,7 @@ err_user_uid = neuspijesno postavljanje UID-a korisnika err_xsessions_dir = neuspijesno pronalazenje foldera sesija err_xsessions_open = neuspijesno otvaranje foldera sesija + login = korisnik logout = izlogovan @@ -67,7 +69,6 @@ restart = ponovo pokreni shell = shell shutdown = ugasi - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/sv.ini b/res/lang/sv.ini index 1b2efb6..2fb7f91 100644 --- a/res/lang/sv.ini +++ b/res/lang/sv.ini @@ -5,6 +5,7 @@ capslock = capslock err_alloc = misslyckad minnesallokering + err_bounds = utanför banan index err_chdir = misslyckades att öppna hemkatalog @@ -15,6 +16,7 @@ err_domain = okänd domän + err_hostname = misslyckades att hämta värdnamn @@ -47,7 +49,6 @@ 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 @@ -56,6 +57,7 @@ err_user_uid = misslyckades att ställa in användar-UID err_xsessions_dir = misslyckades att hitta sessionskatalog err_xsessions_open = misslyckades att öppna sessionskatalog + login = inloggning logout = utloggad @@ -67,7 +69,6 @@ restart = starta om shell = skal shutdown = stäng av - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/tr.ini b/res/lang/tr.ini index 07ef320..a145152 100644 --- a/res/lang/tr.ini +++ b/res/lang/tr.ini @@ -5,6 +5,7 @@ capslock = capslock err_alloc = basarisiz bellek ayirma + err_bounds = sinirlarin disinda dizin err_chdir = ev klasoru acilamadi @@ -15,6 +16,7 @@ err_domain = gecersiz etki alani + err_hostname = ana bilgisayar adi alinamadi @@ -47,7 +49,6 @@ 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 @@ -56,6 +57,7 @@ err_user_uid = kullanici icin UID ayarlanamadi err_xsessions_dir = oturumlar klasoru bulunamadi err_xsessions_open = oturumlar klasoru acilamadi + login = kullanici logout = oturumdan cikis yapildi @@ -67,7 +69,6 @@ restart = yeniden baslat shell = shell shutdown = makineyi kapat - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/uk.ini b/res/lang/uk.ini index 09320cd..0cbb714 100644 --- a/res/lang/uk.ini +++ b/res/lang/uk.ini @@ -5,6 +5,7 @@ capslock = capslock err_alloc = невдале виділення пам'яті + err_bounds = поза межами індексу err_chdir = не вдалося відкрити домашній каталог @@ -15,6 +16,7 @@ err_domain = недійсний домен + err_hostname = не вдалося отримати ім'я хосту @@ -47,7 +49,6 @@ err_pwnam = не вдалося отримати дані користувача - err_user_gid = не вдалося змінити GID користувача err_user_init = не вдалося ініціалізувати користувача err_user_uid = не вдалося змінити UID користувача @@ -56,6 +57,7 @@ err_user_uid = не вдалося змінити UID користувача err_xsessions_dir = не вдалося знайти каталог сесій err_xsessions_open = не вдалося відкрити каталог сесій + login = логін logout = вийти @@ -67,7 +69,6 @@ restart = перезавантажити shell = оболонка shutdown = вимкнути - wayland = wayland xinitrc = xinitrc diff --git a/res/lang/zh_CN.ini b/res/lang/zh_CN.ini index 9f2c0a8..7b30e9e 100644 --- a/res/lang/zh_CN.ini +++ b/res/lang/zh_CN.ini @@ -5,6 +5,7 @@ capslock = 大写锁定 err_alloc = 内存分配失败 + err_bounds = 索引越界 err_chdir = 无法打开home文件夹 @@ -15,6 +16,7 @@ err_domain = 无效的域 + err_hostname = 获取主机名失败 @@ -47,7 +49,6 @@ err_pwnam = 获取用户信息失败 - err_user_gid = 设置用户GID失败 err_user_init = 初始化用户失败 err_user_uid = 设置用户UID失败 @@ -56,6 +57,7 @@ err_user_uid = 设置用户UID失败 err_xsessions_dir = 找不到会话文件夹 err_xsessions_open = 无法打开会话文件夹 + login = 登录 logout = 注销 @@ -67,7 +69,6 @@ password = 密码 shell = shell - wayland = wayland x11 = x11 xinitrc = xinitrc diff --git a/src/config/Lang.zig b/src/config/Lang.zig index ba391b4..84c8a6f 100644 --- a/src/config/Lang.zig +++ b/src/config/Lang.zig @@ -9,6 +9,7 @@ brightness_up: []const u8 = "increase brightness", capslock: []const u8 = "capslock", custom: []const u8 = "custom", err_alloc: []const u8 = "failed memory allocation", +err_args: []const u8 = "unable to parse command line arguments", err_autologin_session: []const u8 = "autologin session not found", err_bounds: []const u8 = "out-of-bounds index", err_brightness_change: []const u8 = "failed to change brightness", diff --git a/src/main.zig b/src/main.zig index 28bbdca..d06a46d 100644 --- a/src/main.zig +++ b/src/main.zig @@ -110,12 +110,14 @@ pub fn main() !void { ); var diag = clap.Diagnostic{}; - var res = clap.parse(clap.Help, ¶ms, clap.parsers.default, .{ .diagnostic = &diag, .allocator = allocator }) catch |err| { + var arg_parse_error: anyerror = undefined; + var maybe_res = clap.parse(clap.Help, ¶ms, clap.parsers.default, .{ .diagnostic = &diag, .allocator = allocator }) catch |err| parse_error: { + arg_parse_error = err; diag.report(stderr, err) catch {}; try stderr.flush(); - return err; + break :parse_error null; }; - defer res.deinit(); + defer if (maybe_res) |*res| res.deinit(); var config: Config = undefined; var lang: Lang = undefined; @@ -128,17 +130,19 @@ pub fn main() !void { var saved_users = SavedUsers.init(); defer saved_users.deinit(allocator); - if (res.args.help != 0) { - try clap.help(stderr, clap.Help, ¶ms, .{}); + if (maybe_res) |*res| { + if (res.args.help != 0) { + try clap.help(stderr, clap.Help, ¶ms, .{}); - _ = try stderr.write("Note: if you want to configure Ly, please check the config file, which is located at " ++ build_options.config_directory ++ "/ly/config.ini.\n"); - try stderr.flush(); - std.process.exit(0); - } - if (res.args.version != 0) { - _ = try stderr.write("Ly version " ++ build_options.version ++ "\n"); - try stderr.flush(); - std.process.exit(0); + _ = try stderr.write("Note: if you want to configure Ly, please check the config file, which is located at " ++ build_options.config_directory ++ "/ly/config.ini.\n"); + try stderr.flush(); + std.process.exit(0); + } + if (res.args.version != 0) { + _ = try stderr.write("Ly version " ++ build_options.version ++ "\n"); + try stderr.flush(); + std.process.exit(0); + } } // Load configuration file @@ -161,7 +165,8 @@ pub fn main() !void { const comment_characters = "#"; - if (res.args.config) |s| { + if (maybe_res != null and maybe_res.?.args.config != null) { + const s = maybe_res.?.args.config.?; const trailing_slash = if (s[s.len - 1] != '/') "/" else ""; const config_path = try std.fmt.allocPrint(allocator, "{s}{s}config.ini", .{ s, trailing_slash }); @@ -330,6 +335,15 @@ pub fn main() !void { var info_line = InfoLine.init(allocator, &buffer); defer info_line.deinit(); + if (maybe_res == null) { + var longest = diag.name.longest(); + if (longest.kind == .positional) + longest.name = diag.arg; + + try info_line.addMessage(lang.err_args, config.error_bg, config.error_fg); + try log_writer.print("unable to parse argument '{s}{s}': {s}\n", .{ longest.kind.prefix(), longest.name, @errorName(arg_parse_error) }); + } + if (maybe_config_load_error) |err| { // We can't localize this since the config failed to load so we'd fallback to the default language anyway try info_line.addMessage("unable to parse config file", config.error_bg, config.error_fg);