mirror of https://github.com/fairyglade/ly.git
Fix clock string length issues (fixes #716)
Co-authored-by: Plash <plash@noreply.codeberg.org> Signed-off-by: AnErrupTion <anerruption@disroot.org>
This commit is contained in:
parent
c05c32c5be
commit
b35c055e7b
|
@ -7,6 +7,7 @@ err_alloc = فشل في تخصيص الذاكرة
|
|||
err_bounds = out-of-bounds index
|
||||
err_brightness_change = فشل في تغيير سطوع الشاشة
|
||||
err_chdir = فشل في فتح مجلد المنزل
|
||||
|
||||
err_config = فشل في تفسير ملف الإعدادات
|
||||
err_dgn_oob = رسالة سجل (Log)
|
||||
err_domain = اسم نطاق غير صالح
|
||||
|
|
|
@ -8,6 +8,7 @@ err_bounds = índex fora de límits
|
|||
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
|
||||
|
||||
|
|
|
@ -8,6 +8,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
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ err_alloc = Speicherzuweisung fehlgeschlagen
|
|||
err_bounds = Index ausserhalb des Bereichs
|
||||
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
|
||||
|
|
|
@ -7,6 +7,7 @@ err_alloc = failed memory allocation
|
|||
err_bounds = out-of-bounds index
|
||||
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
|
||||
|
|
|
@ -8,6 +8,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
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ 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
|
||||
err_clock_too_long = chaîne de formattage de l'horloge trop longue
|
||||
err_config = échec de lecture du fichier de configuration
|
||||
err_dgn_oob = message
|
||||
err_domain = domaine invalide
|
||||
|
|
|
@ -8,6 +8,7 @@ err_bounds = indice fuori limite
|
|||
|
||||
err_chdir = impossibile aprire home directory
|
||||
|
||||
|
||||
err_dgn_oob = messaggio log
|
||||
err_domain = dominio non valido
|
||||
|
||||
|
|
|
@ -1,126 +1,67 @@
|
|||
authenticating=認証中...
|
||||
brightness_down=明るさを下げる
|
||||
brightness_up=明るさを上げる
|
||||
capslock=CapsLock
|
||||
err_alloc=メモリ割り当て失敗
|
||||
err_bounds=境界外インデックス
|
||||
err_brightness_change=明るさの変更に失敗しました
|
||||
err_chdir=ホームフォルダを開けませんでした
|
||||
err_config=設定ファイルを解析できません
|
||||
err_console_dev=コンソールへのアクセスに失敗しました
|
||||
err_dgn_oob=ログメッセージ
|
||||
err_domain=無効なドメイン
|
||||
err_empty_password=空のパスワードは許可されていません
|
||||
err_envlist=環境変数リストの取得に失敗しました
|
||||
err_hostname=ホスト名の取得に失敗しました
|
||||
err_mlock=パスワードメモリのロックに失敗しました
|
||||
err_null=ヌルポインタ
|
||||
err_numlock=NumLockの設定に失敗しました
|
||||
err_pam=PAMトランザクション失敗
|
||||
err_pam_abort=PAMトランザクションが中断されました
|
||||
err_pam_acct_expired=アカウントの有効期限が切れています
|
||||
err_pam_auth=認証エラー
|
||||
err_pam_authinfo_unavail=ユーザー情報の取得に失敗しました
|
||||
err_pam_authok_reqd=トークンの有効期限が切れています
|
||||
err_pam_buf=メモリバッファエラー
|
||||
err_pam_cred_err=認証情報の設定に失敗しました
|
||||
err_pam_cred_expired=認証情報の有効期限が切れています
|
||||
err_pam_cred_insufficient=認証情報が不十分です
|
||||
err_pam_cred_unavail=認証情報の取得に失敗しました
|
||||
err_pam_maxtries=最大試行回数に到達しました
|
||||
err_pam_perm_denied=アクセスが拒否されました
|
||||
err_pam_session=セッションエラー
|
||||
err_pam_sys=システムエラー
|
||||
err_pam_user_unknown=不明なユーザー
|
||||
err_path=パスの設定に失敗しました
|
||||
err_perm_dir=カレントディレクトリの変更に失敗しました
|
||||
err_perm_group=グループ権限のダウングレードに失敗しました
|
||||
err_perm_user=ユーザー権限のダウングレードに失敗しました
|
||||
err_pwnam=ユーザー情報の取得に失敗しました
|
||||
err_sleep=スリープコマンドの実行に失敗しました
|
||||
err_tty_ctrl=TTY制御の転送に失敗しました
|
||||
err_user_gid=ユーザーGIDの設定に失敗しました
|
||||
err_user_init=ユーザーの初期化に失敗しました
|
||||
err_user_uid=ユーザーUIDの設定に失敗しました
|
||||
err_xauth=xauthコマンドの実行に失敗しました
|
||||
err_xcb_conn=XCB接続に失敗しました
|
||||
err_xsessions_dir=セッションフォルダが見つかりませんでした
|
||||
err_xsessions_open=セッションフォルダを開けませんでした
|
||||
insert=挿入
|
||||
login=ログイン
|
||||
logout=ログアウト済み
|
||||
no_x11_support=X11サポートはコンパイル時に無効化されています
|
||||
normal=通常
|
||||
numlock=NumLock
|
||||
other=その他
|
||||
password=パスワード
|
||||
restart=再起動
|
||||
shell=シェル
|
||||
shutdown=シャットダウン
|
||||
sleep=スリープ
|
||||
wayland=Wayland
|
||||
x11=X11
|
||||
xinitrc=xinitrc
|
||||
authenticating=認証中...
|
||||
brightness_down=明るさを下げる
|
||||
brightness_up=明るさを上げる
|
||||
capslock=CapsLock
|
||||
err_alloc=メモリ割り当て失敗
|
||||
err_bounds=境界外インデックス
|
||||
err_brightness_change=明るさの変更に失敗しました
|
||||
err_chdir=ホームフォルダを開けませんでした
|
||||
err_config=設定ファイルを解析できません
|
||||
err_console_dev=コンソールへのアクセスに失敗しました
|
||||
err_dgn_oob=ログメッセージ
|
||||
err_domain=無効なドメイン
|
||||
err_empty_password=空のパスワードは許可されていません
|
||||
err_envlist=環境変数リストの取得に失敗しました
|
||||
err_hostname=ホスト名の取得に失敗しました
|
||||
err_mlock=パスワードメモリのロックに失敗しました
|
||||
err_null=ヌルポインタ
|
||||
err_numlock=NumLockの設定に失敗しました
|
||||
err_pam=PAMトランザクション失敗
|
||||
err_pam_abort=PAMトランザクションが中断されました
|
||||
err_pam_acct_expired=アカウントの有効期限が切れています
|
||||
err_pam_auth=認証エラー
|
||||
err_pam_authinfo_unavail=ユーザー情報の取得に失敗しました
|
||||
err_pam_authok_reqd=トークンの有効期限が切れています
|
||||
err_pam_buf=メモリバッファエラー
|
||||
err_pam_cred_err=認証情報の設定に失敗しました
|
||||
err_pam_cred_expired=認証情報の有効期限が切れています
|
||||
err_pam_cred_insufficient=認証情報が不十分です
|
||||
err_pam_cred_unavail=認証情報の取得に失敗しました
|
||||
err_pam_maxtries=最大試行回数に到達しました
|
||||
err_pam_perm_denied=アクセスが拒否されました
|
||||
err_pam_session=セッションエラー
|
||||
err_pam_sys=システムエラー
|
||||
err_pam_user_unknown=不明なユーザー
|
||||
err_path=パスの設定に失敗しました
|
||||
err_perm_dir=カレントディレクトリの変更に失敗しました
|
||||
err_perm_group=グループ権限のダウングレードに失敗しました
|
||||
err_perm_user=ユーザー権限のダウングレードに失敗しました
|
||||
err_pwnam=ユーザー情報の取得に失敗しました
|
||||
err_sleep=スリープコマンドの実行に失敗しました
|
||||
err_tty_ctrl=TTY制御の転送に失敗しました
|
||||
err_user_gid=ユーザーGIDの設定に失敗しました
|
||||
err_user_init=ユーザーの初期化に失敗しました
|
||||
err_user_uid=ユーザーUIDの設定に失敗しました
|
||||
err_xauth=xauthコマンドの実行に失敗しました
|
||||
err_xcb_conn=XCB接続に失敗しました
|
||||
err_xsessions_dir=セッションフォルダが見つかりませんでした
|
||||
err_xsessions_open=セッションフォルダを開けませんでした
|
||||
insert=挿入
|
||||
login=ログイン
|
||||
logout=ログアウト済み
|
||||
no_x11_support=X11サポートはコンパイル時に無効化されています
|
||||
normal=通常
|
||||
numlock=NumLock
|
||||
other=その他
|
||||
password=パスワード
|
||||
restart=再起動
|
||||
shell=シェル
|
||||
shutdown=シャットダウン
|
||||
sleep=スリープ
|
||||
wayland=Wayland
|
||||
x11=X11
|
||||
xinitrc=xinitrc
|
||||
authenticating = 認証中...
|
||||
brightness_down = 明るさを下げる
|
||||
brightness_up = 明るさを上げる
|
||||
capslock = CapsLock
|
||||
|
||||
err_alloc = メモリ割り当て失敗
|
||||
err_bounds = 境界外インデックス
|
||||
err_brightness_change = 明るさの変更に失敗しました
|
||||
err_chdir = ホームフォルダを開けませんでした
|
||||
|
||||
err_config = 設定ファイルを解析できません
|
||||
err_dgn_oob = ログメッセージ
|
||||
err_domain = 無効なドメイン
|
||||
err_empty_password = 空のパスワードは許可されていません
|
||||
err_envlist = 環境変数リストの取得に失敗しました
|
||||
err_hostname = ホスト名の取得に失敗しました
|
||||
|
||||
err_mlock = パスワードメモリのロックに失敗しました
|
||||
err_null = ヌルポインタ
|
||||
err_numlock = NumLockの設定に失敗しました
|
||||
err_pam = PAMトランザクション失敗
|
||||
err_pam_abort = PAMトランザクションが中断されました
|
||||
err_pam_acct_expired = アカウントの有効期限が切れています
|
||||
err_pam_auth = 認証エラー
|
||||
err_pam_authinfo_unavail = ユーザー情報の取得に失敗しました
|
||||
err_pam_authok_reqd = トークンの有効期限が切れています
|
||||
err_pam_buf = メモリバッファエラー
|
||||
err_pam_cred_err = 認証情報の設定に失敗しました
|
||||
err_pam_cred_expired = 認証情報の有効期限が切れています
|
||||
err_pam_cred_insufficient = 認証情報が不十分です
|
||||
err_pam_cred_unavail = 認証情報の取得に失敗しました
|
||||
err_pam_maxtries = 最大試行回数に到達しました
|
||||
err_pam_perm_denied = アクセスが拒否されました
|
||||
err_pam_session = セッションエラー
|
||||
err_pam_sys = システムエラー
|
||||
err_pam_user_unknown = 不明なユーザー
|
||||
err_path = パスの設定に失敗しました
|
||||
err_perm_dir = カレントディレクトリの変更に失敗しました
|
||||
err_perm_group = グループ権限のダウングレードに失敗しました
|
||||
err_perm_user = ユーザー権限のダウングレードに失敗しました
|
||||
err_pwnam = ユーザー情報の取得に失敗しました
|
||||
err_sleep = スリープコマンドの実行に失敗しました
|
||||
|
||||
err_tty_ctrl = TTY制御の転送に失敗しました
|
||||
|
||||
err_user_gid = ユーザーGIDの設定に失敗しました
|
||||
err_user_init = ユーザーの初期化に失敗しました
|
||||
err_user_uid = ユーザーUIDの設定に失敗しました
|
||||
err_xauth = xauthコマンドの実行に失敗しました
|
||||
err_xcb_conn = XCB接続に失敗しました
|
||||
err_xsessions_dir = セッションフォルダが見つかりませんでした
|
||||
err_xsessions_open = セッションフォルダを開けませんでした
|
||||
insert = 挿入
|
||||
login = ログイン
|
||||
logout = ログアウト済み
|
||||
no_x11_support = X11サポートはコンパイル時に無効化されています
|
||||
normal = 通常
|
||||
numlock = NumLock
|
||||
other = その他
|
||||
password = パスワード
|
||||
restart = 再起動
|
||||
shell = シェル
|
||||
shutdown = シャットダウン
|
||||
sleep = スリープ
|
||||
wayland = Wayland
|
||||
x11 = X11
|
||||
xinitrc = xinitrc
|
||||
|
|
|
@ -7,6 +7,7 @@ err_alloc = nieudana alokacja pamięci
|
|||
err_bounds = indeks poza zakresem
|
||||
err_brightness_change = nie udało się zmienić jasności
|
||||
err_chdir = nie udało się otworzyć folderu domowego
|
||||
|
||||
err_config = nie można przetworzyć pliku konfiguracyjnego
|
||||
err_dgn_oob = wiadomość loga
|
||||
err_domain = niepoprawna domena
|
||||
|
|
|
@ -8,6 +8,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
|
||||
|
||||
|
|
|
@ -8,6 +8,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
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ capslock = capslock
|
|||
|
||||
|
||||
|
||||
|
||||
err_pam_abort = tranzacţie pam anulată
|
||||
err_pam_acct_expired = cont expirat
|
||||
err_pam_auth = eroare de autentificare
|
||||
|
|
|
@ -7,6 +7,7 @@ err_alloc = не удалось выделить память
|
|||
err_bounds = за пределами индекса
|
||||
err_brightness_change = не удалось изменить яркость
|
||||
err_chdir = не удалось открыть домашнюю папку
|
||||
|
||||
err_config = не удалось разобрать файл конфигурации
|
||||
err_dgn_oob = отладочное сообщение (log)
|
||||
err_domain = неверный домен
|
||||
|
|
|
@ -8,6 +8,7 @@ err_bounds = izvan granica indeksa
|
|||
|
||||
err_chdir = neuspijesno otvaranje home foldera
|
||||
|
||||
|
||||
err_dgn_oob = log poruka
|
||||
err_domain = nevazeci domen
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ err_bounds = utanför banan index
|
|||
|
||||
err_chdir = misslyckades att öppna hemkatalog
|
||||
|
||||
|
||||
err_dgn_oob = loggmeddelande
|
||||
err_domain = okänd domän
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ err_bounds = sinirlarin disinda dizin
|
|||
|
||||
err_chdir = ev klasoru acilamadi
|
||||
|
||||
|
||||
err_dgn_oob = log mesaji
|
||||
err_domain = gecersiz etki alani
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ err_bounds = поза межами індексу
|
|||
|
||||
err_chdir = не вдалося відкрити домашній каталог
|
||||
|
||||
|
||||
err_dgn_oob = повідомлення журналу (log)
|
||||
err_domain = недійсний домен
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ err_bounds = 索引越界
|
|||
|
||||
err_chdir = 无法打开home文件夹
|
||||
|
||||
|
||||
err_dgn_oob = 日志消息
|
||||
err_domain = 无效的域
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ err_alloc: []const u8 = "failed memory allocation",
|
|||
err_bounds: []const u8 = "out-of-bounds index",
|
||||
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_dgn_oob: []const u8 = "log message",
|
||||
err_domain: []const u8 = "invalid domain",
|
||||
|
|
|
@ -65,12 +65,10 @@ const set_led_state = if (builtin.os.tag.isBSD()) kbio.KDSETLED else kd.KDSKBLED
|
|||
const numlock_led = if (builtin.os.tag.isBSD()) kbio.LED_NUM else kd.K_NUMLOCK;
|
||||
const capslock_led = if (builtin.os.tag.isBSD()) kbio.LED_CAP else kd.K_CAPSLOCK;
|
||||
|
||||
pub fn timeAsString(buf: [:0]u8, format: [:0]const u8) ![]u8 {
|
||||
pub fn timeAsString(buf: [:0]u8, format: [:0]const u8) []u8 {
|
||||
const timer = std.time.timestamp();
|
||||
const tm_info = time.localtime(&timer);
|
||||
|
||||
const len = time.strftime(buf, buf.len, format, tm_info);
|
||||
if (len < 0) return error.CannotGetFormattedTime;
|
||||
|
||||
return buf[0..len];
|
||||
}
|
||||
|
|
21
src/main.zig
21
src/main.zig
|
@ -106,6 +106,7 @@ pub fn main() !void {
|
|||
var save: Save = undefined;
|
||||
var config_load_failed = false;
|
||||
var can_get_lock_state = true;
|
||||
var can_draw_clock = true;
|
||||
|
||||
if (res.args.help != 0) {
|
||||
try clap.help(stderr, clap.Help, ¶ms, .{});
|
||||
|
@ -465,15 +466,13 @@ pub fn main() !void {
|
|||
length += ly_top_str.len + 1;
|
||||
}
|
||||
|
||||
if (config.bigclock != .none and buffer.box_height + (bigclock.HEIGHT + 2) * 2 < buffer.height) draw_big_clock: {
|
||||
if (config.bigclock != .none and buffer.box_height + (bigclock.HEIGHT + 2) * 2 < buffer.height) {
|
||||
const format = "%H:%M";
|
||||
const xo = buffer.width / 2 - @min(buffer.width, (format.len * (bigclock.WIDTH + 1))) / 2;
|
||||
const yo = (buffer.height - buffer.box_height) / 2 - bigclock.HEIGHT - 2;
|
||||
|
||||
var clock_buf: [format.len + 1:0]u8 = undefined;
|
||||
const clock_str = interop.timeAsString(&clock_buf, format) catch {
|
||||
break :draw_big_clock;
|
||||
};
|
||||
const clock_str = interop.timeAsString(&clock_buf, format);
|
||||
|
||||
for (clock_str, 0..) |c, i| {
|
||||
const clock_cell = bigclock.clockCell(animate, c, buffer.fg, buffer.bg, config.bigclock);
|
||||
|
@ -503,12 +502,16 @@ pub fn main() !void {
|
|||
}
|
||||
|
||||
if (config.clock) |clock| draw_clock: {
|
||||
var clock_buf: [32:0]u8 = undefined;
|
||||
const clock_str = interop.timeAsString(&clock_buf, clock) catch {
|
||||
break :draw_clock;
|
||||
};
|
||||
if (!can_draw_clock) break :draw_clock;
|
||||
|
||||
if (clock_str.len == 0) return error.FormattedTimeEmpty;
|
||||
var clock_buf: [64:0]u8 = undefined;
|
||||
const clock_str = interop.timeAsString(&clock_buf, clock);
|
||||
|
||||
if (clock_str.len == 0) {
|
||||
try info_line.addMessage(lang.err_clock_too_long, config.error_bg, config.error_fg);
|
||||
can_draw_clock = false;
|
||||
break :draw_clock;
|
||||
}
|
||||
|
||||
buffer.drawLabel(clock_str, buffer.width - @min(buffer.width, clock_str.len), 0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue