Code: Select all
ImportC ""
NSAppKitVersionNumber.d
EndImport
Debug NSAppKitVersionNumber
Code: Select all
ImportC ""
NSAppKitVersionNumber.d
EndImport
Debug NSAppKitVersionNumber
Code: Select all
ImportC ""
dlsym(handle, symbol.p-utf8)
EndImport
Global *NSAppKitVersionNumber.Double = dlsym(-2, "NSAppKitVersionNumber")
Debug *NSAppKitVersionNumber
If *NSAppKitVersionNumber
Debug *NSAppKitVersionNumber\d
EndIf
Version = 2022.2000000000000454747350886
The result is correct. The first rounded digit after the decimal point of the double value correlates with the MacOS minor version. You should output the double value of the NSAppKit version with
Code: Select all
MessageRequester("NSAppKit version", StrD(*NSAppKitVersionNumber\d, 1))
That doesn't match with one of your OS tests of "MacOS 10.15.7 'Catalina': 1894.6" ?The first rounded digit after the decimal point of the double value correlates with the MacOS minor version
Code: Select all
ImportC ""
dlsym(handle, symbol.p-utf8)
EndImport
Global *NSAppKitVersionNumber.Double = dlsym(#RTLD_DEFAULT, "NSAppKitVersionNumber")
If *NSAppKitVersionNumber
Debug "NSAppKitVersion: " + StrD(*NSAppKitVersionNumber\d,2)
EndIf
You are right. It only matches roughly. You may take a look into NSApplication.h where lots of different AppKit version constants are defined (I am currently on Mojave):
NSApplication.h wrote:typedef double NSAppKitVersion NS_TYPED_EXTENSIBLE_ENUM;
/* The version of the AppKit framework */
APPKIT_EXTERN const NSAppKitVersion NSAppKitVersionNumber;
static const NSAppKitVersion NSAppKitVersionNumber10_0 = 577;
static const NSAppKitVersion NSAppKitVersionNumber10_1 = 620;
static const NSAppKitVersion NSAppKitVersionNumber10_2 = 663;
static const NSAppKitVersion NSAppKitVersionNumber10_2_3 = 663.6;
static const NSAppKitVersion NSAppKitVersionNumber10_3 = 743;
static const NSAppKitVersion NSAppKitVersionNumber10_3_2 = 743.14;
static const NSAppKitVersion NSAppKitVersionNumber10_3_3 = 743.2;
static const NSAppKitVersion NSAppKitVersionNumber10_3_5 = 743.24;
static const NSAppKitVersion NSAppKitVersionNumber10_3_7 = 743.33;
static const NSAppKitVersion NSAppKitVersionNumber10_3_9 = 743.36;
static const NSAppKitVersion NSAppKitVersionNumber10_4 = 824;
static const NSAppKitVersion NSAppKitVersionNumber10_4_1 = 824.1;
static const NSAppKitVersion NSAppKitVersionNumber10_4_3 = 824.23;
static const NSAppKitVersion NSAppKitVersionNumber10_4_4 = 824.33;
static const NSAppKitVersion NSAppKitVersionNumber10_4_7 = 824.41;
static const NSAppKitVersion NSAppKitVersionNumber10_5 = 949;
static const NSAppKitVersion NSAppKitVersionNumber10_5_2 = 949.27;
static const NSAppKitVersion NSAppKitVersionNumber10_5_3 = 949.33;
static const NSAppKitVersion NSAppKitVersionNumber10_6 = 1038;
static const NSAppKitVersion NSAppKitVersionNumber10_7 = 1138;
static const NSAppKitVersion NSAppKitVersionNumber10_7_2 = 1138.23;
static const NSAppKitVersion NSAppKitVersionNumber10_7_3 = 1138.32;
static const NSAppKitVersion NSAppKitVersionNumber10_7_4 = 1138.47;
static const NSAppKitVersion NSAppKitVersionNumber10_8 = 1187;
static const NSAppKitVersion NSAppKitVersionNumber10_9 = 1265;
static const NSAppKitVersion NSAppKitVersionNumber10_10 = 1343;
static const NSAppKitVersion NSAppKitVersionNumber10_10_2 = 1344;
static const NSAppKitVersion NSAppKitVersionNumber10_10_3 = 1347;
static const NSAppKitVersion NSAppKitVersionNumber10_10_4 = 1348;
static const NSAppKitVersion NSAppKitVersionNumber10_10_5 = 1348;
static const NSAppKitVersion NSAppKitVersionNumber10_10_Max = 1349;
static const NSAppKitVersion NSAppKitVersionNumber10_11 = 1404;
static const NSAppKitVersion NSAppKitVersionNumber10_11_1 = 1404.13;
static const NSAppKitVersion NSAppKitVersionNumber10_11_2 = 1404.34;
static const NSAppKitVersion NSAppKitVersionNumber10_11_3 = 1404.34;
static const NSAppKitVersion NSAppKitVersionNumber10_12 = 1504;
static const NSAppKitVersion NSAppKitVersionNumber10_12_1 = 1504.60;
static const NSAppKitVersion NSAppKitVersionNumber10_12_2 = 1504.76;
static const NSAppKitVersion NSAppKitVersionNumber10_13 = 1561;
static const NSAppKitVersion NSAppKitVersionNumber10_13_1 = 1561.1;
static const NSAppKitVersion NSAppKitVersionNumber10_13_2 = 1561.2;
static const NSAppKitVersion NSAppKitVersionNumber10_13_4 = 1561.4;
Yes, two decimals are better and sufficient according to NSApplication.h.mk-soft wrote:I think two decimals ...
dlsym itself also is
Code: Select all
Global *NSAppKitVersionNumber.Double = dlsym_(#RTLD_DEFAULT, "NSAppKitVersionNumber")
Debug StrD(*NSAppKitVersionNumber\d, 2)