mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2025-02-20 11:43:27 +08:00
OS (Haiku): calcuate OS version
Some checks are pending
CI / spellcheck (push) Waiting to run
CI / No-features-test (push) Waiting to run
CI / Linux-amd64 (push) Waiting to run
CI / Linux-aarch64 (push) Waiting to run
CI / Linux-armv7l (push) Waiting to run
CI / Linux-armv6l (push) Waiting to run
CI / Linux-riscv64 (push) Waiting to run
CI / Linux-ppc64le (push) Waiting to run
CI / Linux-s390x (push) Waiting to run
CI / Musl-amd64 (push) Waiting to run
CI / macOS-universal (push) Waiting to run
CI / SunOS-amd64 (push) Waiting to run
CI / FreeBSD-amd64 (push) Waiting to run
CI / DragonFly-amd64 (push) Waiting to run
CI / OpenBSD-amd64 (push) Waiting to run
CI / NetBSD-amd64 (push) Waiting to run
CI / Windows-amd64 (push) Waiting to run
CI / Release (push) Blocked by required conditions
Some checks are pending
CI / spellcheck (push) Waiting to run
CI / No-features-test (push) Waiting to run
CI / Linux-amd64 (push) Waiting to run
CI / Linux-aarch64 (push) Waiting to run
CI / Linux-armv7l (push) Waiting to run
CI / Linux-armv6l (push) Waiting to run
CI / Linux-riscv64 (push) Waiting to run
CI / Linux-ppc64le (push) Waiting to run
CI / Linux-s390x (push) Waiting to run
CI / Musl-amd64 (push) Waiting to run
CI / macOS-universal (push) Waiting to run
CI / SunOS-amd64 (push) Waiting to run
CI / FreeBSD-amd64 (push) Waiting to run
CI / DragonFly-amd64 (push) Waiting to run
CI / OpenBSD-amd64 (push) Waiting to run
CI / NetBSD-amd64 (push) Waiting to run
CI / Windows-amd64 (push) Waiting to run
CI / Release (push) Blocked by required conditions
This commit is contained in:
parent
c0c59a890a
commit
143b3df771
@ -2,39 +2,8 @@
|
||||
#include <OS.h>
|
||||
#include <image.h>
|
||||
|
||||
// https://github.com/haiku/haiku/blob/e63683b2fb337d2034059a7e053c170eaf978142/headers/os/BeBuild.h#L36
|
||||
#ifndef B_HAIKU_VERSION_1_PRE_BETA_6
|
||||
#define B_HAIKU_VERSION_1_PRE_BETA_6 0x00000901
|
||||
#endif
|
||||
#ifndef B_HAIKU_VERSION_1_BETA_6
|
||||
#define B_HAIKU_VERSION_1_BETA_6 0x00000A00
|
||||
#endif
|
||||
#ifndef B_HAIKU_VERSION_1_PRE_BETA_7
|
||||
#define B_HAIKU_VERSION_1_PRE_BETA_7 0x00000A01
|
||||
#endif
|
||||
#ifndef B_HAIKU_VERSION_1_BETA_7
|
||||
#define B_HAIKU_VERSION_1_BETA_7 0x00000B00
|
||||
#endif
|
||||
#ifndef B_HAIKU_VERSION_1_PRE_BETA_8
|
||||
#define B_HAIKU_VERSION_1_PRE_BETA_8 0x00000B01
|
||||
#endif
|
||||
#ifndef B_HAIKU_VERSION_1_BETA_8
|
||||
#define B_HAIKU_VERSION_1_BETA_8 0x00000C00
|
||||
#endif
|
||||
#ifndef B_HAIKU_VERSION_1_PRE_BETA_9
|
||||
#define B_HAIKU_VERSION_1_PRE_BETA_9 0x00000C01
|
||||
#endif
|
||||
#ifndef B_HAIKU_VERSION_1_BETA_9
|
||||
#define B_HAIKU_VERSION_1_BETA_9 0x00000D00
|
||||
#endif
|
||||
#ifndef B_HAIKU_VERSION_1
|
||||
#define B_HAIKU_VERSION_1 0x00010000
|
||||
#endif
|
||||
|
||||
void ffDetectOSImpl(FFOSResult* os)
|
||||
{
|
||||
system_info sys;
|
||||
|
||||
ffStrbufSetStatic(&os->name, "Haiku");
|
||||
|
||||
ffStrbufSetStatic(&os->id, "haiku");
|
||||
@ -43,49 +12,61 @@ void ffDetectOSImpl(FFOSResult* os)
|
||||
int32 cookie = 0;
|
||||
while (get_next_image_info(B_SYSTEM_TEAM, &cookie, &image) == B_OK)
|
||||
{
|
||||
if (image.api_version > 0)
|
||||
int32 ver = image.api_version;
|
||||
if (ver == 0) continue;
|
||||
|
||||
// https://github.com/haiku/haiku/blob/e63683b2fb337d2034059a7e053c170eaf978142/headers/os/BeBuild.h#L36
|
||||
if (ver < B_HAIKU_VERSION_1_ALPHA_1)
|
||||
{
|
||||
switch (image.api_version)
|
||||
switch (ver)
|
||||
{
|
||||
#define FF_TEST_HAIKU_VERSION(versionNum, versionStr) \
|
||||
case B_HAIKU_VERSION_ ## versionNum: \
|
||||
ffStrbufSetStatic(&os->version, versionStr); \
|
||||
break;
|
||||
|
||||
FF_TEST_HAIKU_VERSION(1_ALPHA_1, "R1A1")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_ALPHA_2, "R1A2-")
|
||||
FF_TEST_HAIKU_VERSION(1_ALPHA_2, "R1A2")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_ALPHA_3, "R1A3-")
|
||||
FF_TEST_HAIKU_VERSION(1_ALPHA_3, "R1A3")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_ALPHA_4, "R1A4-")
|
||||
FF_TEST_HAIKU_VERSION(1_ALPHA_4, "R1A4")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_1, "R1B1-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_1, "R1B1")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_2, "R1B2-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_2, "R1B2")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_3, "R1B3-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_3, "R1B3")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_4, "R1B4-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_4, "R1B4")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_5, "R1B5-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_5, "R1B5")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_6, "R1B6-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_6, "R1B6")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_7, "R1B7-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_7, "R1B7")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_8, "R1B8-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_8, "R1B8")
|
||||
FF_TEST_HAIKU_VERSION(1_PRE_BETA_9, "R1B9-")
|
||||
FF_TEST_HAIKU_VERSION(1_BETA_9, "R1B9")
|
||||
FF_TEST_HAIKU_VERSION(1, "R1")
|
||||
case B_HAIKU_VERSION_BEOS:
|
||||
ffStrbufSetStatic(&os->version, "BEOS");
|
||||
break;
|
||||
case B_HAIKU_VERSION_BONE:
|
||||
ffStrbufSetStatic(&os->version, "BONE");
|
||||
break;
|
||||
case B_HAIKU_VERSION_DANO:
|
||||
ffStrbufSetStatic(&os->version, "DANO");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int32 relVer = ver / 0x10000;
|
||||
ver %= 0x10000;
|
||||
if (ver == 0)
|
||||
{
|
||||
ffStrbufSetF(&os->version, "R%d", relVer);
|
||||
}
|
||||
else
|
||||
{
|
||||
relVer++;
|
||||
|
||||
break;
|
||||
bool isPre = !!(ver & 1);
|
||||
if (ver < B_HAIKU_VERSION_1_PRE_BETA_1)
|
||||
{
|
||||
int32 alphaVer = ver / 0x100;
|
||||
if (isPre)
|
||||
ffStrbufSetF(&os->version, "R%dA%d-", relVer, alphaVer + 1);
|
||||
else
|
||||
ffStrbufSetF(&os->version, "R%dA%d", relVer, alphaVer);
|
||||
}
|
||||
else if (ver < 0x00010000 /* B_HAIKU_VERSION_1 */)
|
||||
{
|
||||
int32 betaVer = (ver - B_HAIKU_VERSION_1_ALPHA_4) / 0x100;
|
||||
if (isPre)
|
||||
ffStrbufSetF(&os->version, "R%dB%d-", relVer, betaVer + 1);
|
||||
else
|
||||
ffStrbufSetF(&os->version, "R%dB%d", relVer, betaVer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!os->version.length)
|
||||
{
|
||||
system_info sys;
|
||||
if (get_system_info(&sys) == B_OK)
|
||||
ffStrbufAppendF(&os->version, "R%ldx", sys.kernel_version);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user