diff --git a/res/lang/ar.ini b/res/lang/ar.ini index 6f48471..f98c911 100644 --- a/res/lang/ar.ini +++ b/res/lang/ar.ini @@ -11,6 +11,7 @@ err_brightness_change = فشل في تغيير سطوع الشاشة err_chdir = فشل في فتح مجلد المنزل err_config = فشل في تفسير ملف الإعدادات + err_dgn_oob = رسالة سجل (Log) err_domain = اسم نطاق غير صالح err_empty_password = لا يُسمح بكلمة مرور فارغة diff --git a/res/lang/cat.ini b/res/lang/cat.ini index f7e4343..a0bd809 100644 --- a/res/lang/cat.ini +++ b/res/lang/cat.ini @@ -11,6 +11,7 @@ err_brightness_change = error en canviar la brillantor err_chdir = error en obrir la carpeta home + err_dgn_oob = missatge de registre err_domain = domini invàlid diff --git a/res/lang/cs.ini b/res/lang/cs.ini index c25ace1..a84757b 100644 --- a/res/lang/cs.ini +++ b/res/lang/cs.ini @@ -11,6 +11,7 @@ err_bounds = index je mimo hranice pole err_chdir = nelze otevřít domovský adresář + err_dgn_oob = zpráva protokolu err_domain = neplatná doména diff --git a/res/lang/de.ini b/res/lang/de.ini index ac8f654..4f52bea 100644 --- a/res/lang/de.ini +++ b/res/lang/de.ini @@ -11,6 +11,7 @@ err_brightness_change = Helligkeitsänderung fehlgeschlagen err_chdir = Fehler beim Oeffnen des Home-Ordners err_config = Fehler beim Verarbeiten der Konfigurationsdatei + err_dgn_oob = Diagnose-Nachricht err_domain = Ungueltige Domain err_empty_password = Leeres Passwort nicht zugelassen diff --git a/res/lang/en.ini b/res/lang/en.ini index 325e9b9..60368ac 100644 --- a/res/lang/en.ini +++ b/res/lang/en.ini @@ -11,6 +11,7 @@ err_brightness_change = failed to change brightness err_chdir = failed to open home folder err_clock_too_long = clock string too long err_config = unable to parse config file + err_dgn_oob = log message err_domain = invalid domain err_empty_password = empty password not allowed diff --git a/res/lang/es.ini b/res/lang/es.ini index fe720c7..62d0513 100644 --- a/res/lang/es.ini +++ b/res/lang/es.ini @@ -11,6 +11,7 @@ err_bounds = índice fuera de límites err_chdir = error al abrir la carpeta home + err_dgn_oob = mensaje de registro err_domain = dominio inválido diff --git a/res/lang/fr.ini b/res/lang/fr.ini index ebc6589..cc6801e 100644 --- a/res/lang/fr.ini +++ b/res/lang/fr.ini @@ -11,6 +11,7 @@ err_brightness_change = échec du changement de luminosité err_chdir = échec de l'ouverture du répertoire home err_clock_too_long = chaîne de formattage de l'horloge trop longue err_config = échec de lecture du fichier de configuration +err_crawl = échec de la navigation des répertoires de session err_dgn_oob = message err_domain = domaine invalide err_empty_password = mot de passe vide non autorisé diff --git a/res/lang/it.ini b/res/lang/it.ini index 5cab01d..bc69e7c 100644 --- a/res/lang/it.ini +++ b/res/lang/it.ini @@ -11,6 +11,7 @@ err_bounds = indice fuori limite err_chdir = impossibile aprire home directory + err_dgn_oob = messaggio log err_domain = dominio non valido diff --git a/res/lang/ja_JP.ini b/res/lang/ja_JP.ini index 44fff53..23c3f84 100644 --- a/res/lang/ja_JP.ini +++ b/res/lang/ja_JP.ini @@ -11,6 +11,7 @@ err_brightness_change = 明るさの変更に失敗しました err_chdir = ホームフォルダを開けませんでした err_config = 設定ファイルを解析できません + err_dgn_oob = ログメッセージ err_domain = 無効なドメイン err_empty_password = 空のパスワードは許可されていません diff --git a/res/lang/lv.ini b/res/lang/lv.ini index 7d0947f..fcac1aa 100644 --- a/res/lang/lv.ini +++ b/res/lang/lv.ini @@ -11,6 +11,7 @@ err_brightness_change = neizdevās mainīt spilgtumu err_chdir = neizdevās atvērt mājas mapi err_clock_too_long = pulksteņa virkne pārāk gara err_config = neizdevās parsēt konfigurācijas failu + err_dgn_oob = žurnāla ziņojums err_domain = nederīgs domēns err_empty_password = tukša parole nav atļauta diff --git a/res/lang/pl.ini b/res/lang/pl.ini index ad57810..42e2660 100644 --- a/res/lang/pl.ini +++ b/res/lang/pl.ini @@ -11,6 +11,7 @@ err_brightness_change = nie udało się zmienić jasności err_chdir = nie udało się otworzyć folderu domowego err_clock_too_long = ciąg znaków zegara jest za długi err_config = nie można przetworzyć pliku konfiguracyjnego + err_dgn_oob = wiadomość loga err_domain = niepoprawna domena err_empty_password = puste hasło jest niedozwolone diff --git a/res/lang/pt.ini b/res/lang/pt.ini index 2b4fe45..a0618c9 100644 --- a/res/lang/pt.ini +++ b/res/lang/pt.ini @@ -11,6 +11,7 @@ err_bounds = índice fora de limites err_chdir = erro ao abrir a pasta home + err_dgn_oob = mensagem de registo err_domain = domínio inválido diff --git a/res/lang/pt_BR.ini b/res/lang/pt_BR.ini index 0f53481..62eae98 100644 --- a/res/lang/pt_BR.ini +++ b/res/lang/pt_BR.ini @@ -11,6 +11,7 @@ err_bounds = índice fora de limites err_chdir = não foi possível abrir o diretório home + err_dgn_oob = mensagem de log err_domain = domínio inválido diff --git a/res/lang/ro.ini b/res/lang/ro.ini index a045ffd..aa59318 100644 --- a/res/lang/ro.ini +++ b/res/lang/ro.ini @@ -22,6 +22,7 @@ capslock = capslock + err_pam_abort = tranzacţie pam anulată diff --git a/res/lang/ru.ini b/res/lang/ru.ini index 5af0923..fd5d4ed 100644 --- a/res/lang/ru.ini +++ b/res/lang/ru.ini @@ -11,6 +11,7 @@ err_brightness_change = не удалось изменить яркость err_chdir = не удалось открыть домашнюю папку err_clock_too_long = строка часов слишком длинная err_config = не удалось разобрать файл конфигурации + err_dgn_oob = отладочное сообщение (log) err_domain = неверный домен err_empty_password = пустой пароль не допустим diff --git a/res/lang/sr.ini b/res/lang/sr.ini index b9159cc..96b0686 100644 --- a/res/lang/sr.ini +++ b/res/lang/sr.ini @@ -11,6 +11,7 @@ err_bounds = izvan granica indeksa err_chdir = neuspijesno otvaranje home foldera + err_dgn_oob = log poruka err_domain = nevazeci domen diff --git a/res/lang/sv.ini b/res/lang/sv.ini index 2fb7f91..9439a07 100644 --- a/res/lang/sv.ini +++ b/res/lang/sv.ini @@ -11,6 +11,7 @@ err_bounds = utanför banan index err_chdir = misslyckades att öppna hemkatalog + err_dgn_oob = loggmeddelande err_domain = okänd domän diff --git a/res/lang/tr.ini b/res/lang/tr.ini index a145152..d551399 100644 --- a/res/lang/tr.ini +++ b/res/lang/tr.ini @@ -11,6 +11,7 @@ err_bounds = sinirlarin disinda dizin err_chdir = ev klasoru acilamadi + err_dgn_oob = log mesaji err_domain = gecersiz etki alani diff --git a/res/lang/uk.ini b/res/lang/uk.ini index 0cbb714..531f311 100644 --- a/res/lang/uk.ini +++ b/res/lang/uk.ini @@ -11,6 +11,7 @@ err_bounds = поза межами індексу err_chdir = не вдалося відкрити домашній каталог + err_dgn_oob = повідомлення журналу (log) err_domain = недійсний домен diff --git a/res/lang/zh_CN.ini b/res/lang/zh_CN.ini index 7b30e9e..f73093b 100644 --- a/res/lang/zh_CN.ini +++ b/res/lang/zh_CN.ini @@ -11,6 +11,7 @@ err_bounds = 索引越界 err_chdir = 无法打开home文件夹 + err_dgn_oob = 日志消息 err_domain = 无效的域 diff --git a/src/config/Lang.zig b/src/config/Lang.zig index 84c8a6f..e116f39 100644 --- a/src/config/Lang.zig +++ b/src/config/Lang.zig @@ -16,6 +16,7 @@ err_brightness_change: []const u8 = "failed to change brightness", err_chdir: []const u8 = "failed to open home folder", err_clock_too_long: []const u8 = "clock string too long", err_config: []const u8 = "unable to parse config file", +err_crawl: []const u8 = "failed to crawl session directories", err_dgn_oob: []const u8 = "log message", err_domain: []const u8 = "invalid domain", err_empty_password: []const u8 = "empty password not allowed", diff --git a/src/main.zig b/src/main.zig index d06a46d..5fc3545 100644 --- a/src/main.zig +++ b/src/main.zig @@ -411,22 +411,37 @@ pub fn main() !void { try info_line.addMessage(hostname, config.bg, config.fg); } + var has_crawl_error = false; + // Crawl session directories (Wayland, X11 and custom respectively) var wayland_session_dirs = std.mem.splitScalar(u8, config.waylandsessions, ':'); while (wayland_session_dirs.next()) |dir| { - try crawl(&session, lang, dir, .wayland); + crawl(&session, lang, dir, .wayland) catch |err| { + has_crawl_error = true; + try log_writer.print("failed to crawl wayland session directory '{s}': {s}\n", .{ dir, @errorName(err) }); + }; } if (build_options.enable_x11_support) { var x_session_dirs = std.mem.splitScalar(u8, config.xsessions, ':'); while (x_session_dirs.next()) |dir| { - try crawl(&session, lang, dir, .x11); + crawl(&session, lang, dir, .x11) catch |err| { + has_crawl_error = true; + try log_writer.print("failed to crawl x11 session directory '{s}': {s}\n", .{ dir, @errorName(err) }); + }; } } var custom_session_dirs = std.mem.splitScalar(u8, config.custom_sessions, ':'); while (custom_session_dirs.next()) |dir| { - try crawl(&session, lang, dir, .custom); + crawl(&session, lang, dir, .custom) catch |err| { + has_crawl_error = true; + try log_writer.print("failed to crawl custom session directory '{s}': {s}\n", .{ dir, @errorName(err) }); + }; + } + + if (has_crawl_error) { + try info_line.addMessage(lang.err_crawl, config.error_bg, config.error_fg); } if (usernames.items.len == 0) { @@ -1181,7 +1196,9 @@ fn addOtherEnvironment(session: *Session, lang: Lang, display_server: DisplaySer } fn crawl(session: *Session, lang: Lang, path: []const u8, display_server: DisplayServer) !void { - var iterable_directory = std.fs.openDirAbsolute(path, .{ .iterate = true }) catch return; + if (!std.fs.path.isAbsolute(path)) return error.PathNotAbsolute; + + var iterable_directory = try std.fs.openDirAbsolute(path, .{ .iterate = true }); defer iterable_directory.close(); var iterator = iterable_directory.iterate();