diff --git a/res/lang/en.ini b/res/lang/en.ini index 511200e..b2f52ae 100644 --- a/res/lang/en.ini +++ b/res/lang/en.ini @@ -13,6 +13,7 @@ err_envlist = failed to get envlist err_hostname = failed to get hostname err_mlock = failed to lock password memory err_null = null pointer +err_numlock = failed to set numlock err_pam = pam transaction failed err_pam_abort = pam transaction aborted err_pam_acct_expired = account expired diff --git a/res/lang/fr.ini b/res/lang/fr.ini index 32e5598..5685c95 100644 --- a/res/lang/fr.ini +++ b/res/lang/fr.ini @@ -13,6 +13,7 @@ err_envlist = échec de lecture de la liste d'environnement err_hostname = échec de lecture du nom d'hôte err_mlock = échec du verrouillage mémoire err_null = pointeur null +err_numlock = échec de modification du verr.num err_pam = échec de la transaction pam err_pam_abort = transaction pam avortée err_pam_acct_expired = compte expiré diff --git a/src/config/Lang.zig b/src/config/Lang.zig index 3a81108..fafa537 100644 --- a/src/config/Lang.zig +++ b/src/config/Lang.zig @@ -14,6 +14,7 @@ err_envlist: []const u8 = "failed to get envlist", err_hostname: []const u8 = "failed to get hostname", err_mlock: []const u8 = "failed to lock password memory", err_null: []const u8 = "null pointer", +err_numlock: []const u8 = "failed to set numlock", err_pam: []const u8 = "pam transaction failed", err_pam_abort: []const u8 = "pam transaction aborted", err_pam_acct_expired: []const u8 = "account expired", diff --git a/src/config/migrator.zig b/src/config/migrator.zig index df028c4..f003213 100644 --- a/src/config/migrator.zig +++ b/src/config/migrator.zig @@ -108,13 +108,13 @@ pub fn tryMigrateSaveFile(user_buf: *[32]u8) Save { const reader = file.reader(); var user_fbs = std.io.fixedBufferStream(user_buf); - reader.streamUntilDelimiter(user_fbs.writer(), '\n', 32) catch return save; + reader.streamUntilDelimiter(user_fbs.writer(), '\n', user_buf.len) catch return save; const user = user_fbs.getWritten(); if (user.len > 0) save.user = user; var session_buf: [20]u8 = undefined; var session_fbs = std.io.fixedBufferStream(&session_buf); - reader.streamUntilDelimiter(session_fbs.writer(), '\n', 20) catch {}; + reader.streamUntilDelimiter(session_fbs.writer(), '\n', session_buf.len) catch return save; const session_index_str = session_fbs.getWritten(); var session_index: ?usize = null; diff --git a/src/main.zig b/src/main.zig index 1b1c0e3..d0420ab 100644 --- a/src/main.zig +++ b/src/main.zig @@ -182,8 +182,6 @@ pub fn main() !void { shutdown_cmd = try temporary_allocator.dupe(u8, config.shutdown_cmd); restart_cmd = try temporary_allocator.dupe(u8, config.restart_cmd); - interop.setNumlock(config.numlock) catch {}; - // Initialize termbox _ = termbox.tb_init(); defer _ = termbox.tb_shutdown(); @@ -221,6 +219,10 @@ pub fn main() !void { try info_line.addMessage("unable to parse config file", config.error_bg, config.error_fg); } + interop.setNumlock(config.numlock) catch { + try info_line.addMessage(lang.err_numlock, config.error_bg, config.error_fg); + }; + var session = Session.init(allocator, &buffer, lang); defer session.deinit(); @@ -645,7 +647,9 @@ pub fn main() !void { }, termbox.TB_KEY_ENTER => { try info_line.addMessage(lang.authenticating, config.bg, config.fg); - InfoLine.clearRendered(allocator, buffer) catch {}; + InfoLine.clearRendered(allocator, buffer) catch { + try info_line.addMessage(lang.err_alloc, config.error_bg, config.error_fg); + }; info_line.label.draw(); _ = termbox.tb_present();