From 611de77980f38c5419ed5585b60b670b7e68cefb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Thu, 2 Jan 2025 14:37:10 +0800 Subject: [PATCH] Terminal (macOS): improve performance of kitty version --- src/detection/terminalshell/terminalshell.c | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/detection/terminalshell/terminalshell.c b/src/detection/terminalshell/terminalshell.c index fb1717043..f29902727 100644 --- a/src/detection/terminalshell/terminalshell.c +++ b/src/detection/terminalshell/terminalshell.c @@ -598,6 +598,38 @@ static bool getTerminalVersionKitty(FFstrbuf* exe, FFstrbuf* version) } } } + #elif __APPLE__ + if (ffStrbufEndsWithS(exe, "/kitty.app/Contents/MacOS/kitty")) + { + ffStrbufSet(version, exe); + ffStrbufSubstrBeforeLastC(version, '/'); + ffStrbufSubstrBeforeLastC(version, '/'); + ffStrbufAppendS(version, "/Info.plist"); + char buf[4096]; + ssize_t size = ffReadFileData(version->chars, ARRAY_SIZE(buf) - 1, buf); + if (size > 0) + { + buf[size] = '\0'; + + const char* p = strstr(buf, "CFBundleShortVersionString"); + if (p) + { + p += strlen("CFBundleShortVersionString"); + p = strchr(p, '>'); + if (p) + { + p++; + const char* end = strchr(p, '<'); + if (end) + { + ffStrbufSetNS(version, (uint32_t) (end - p), p); + return true; + } + } + } + } + ffStrbufClear(version); + } #endif char versionHex[64];