]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/system-info/macosx/macosx.factor
use radix literals
[factor.git] / basis / system-info / macosx / macosx.factor
index 11a89fc4bd069aca142663784f41062145aab12e..8b4a4fda35b48f410fb9da3c2754f665903b7499 100644 (file)
@@ -1,10 +1,49 @@
-! Copyright (C) 2008 Doug Coleman.
+! Copyright (C) 2008 Doug Coleman, John Benediktsson.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types alien.strings alien.syntax
-byte-arrays kernel namespaces sequences unix
-system-info.backend system io.encodings.utf8 ;
+
+USING: alien alien.c-types alien.data alien.strings alien.syntax
+arrays assocs byte-arrays combinators core-foundation io.binary
+io.encodings.utf8 kernel math namespaces sequences system
+system-info unix ;
+
 IN: system-info.macosx
 
+<PRIVATE
+
+TYPEDEF: SInt16 OSErr
+TYPEDEF: UInt32 OSType
+FUNCTION: OSErr Gestalt ( OSType selector, SInt32* response ) ;
+
+: gestalt ( selector -- response )
+    0 SInt32 <ref> [ Gestalt ] keep
+    swap [ throw ] unless-zero le> ;
+
+: system-version ( -- n ) "sysv" be> gestalt ;
+: system-version-major ( -- n ) "sys1" be> gestalt ;
+: system-version-minor ( -- n ) "sys2" be> gestalt ;
+: system-version-bugfix ( -- n ) "sys3" be> gestalt ;
+
+CONSTANT: system-code-names H{
+    { 0x1070 "Lion" }
+    { 0x1060 "Snow Leopard" }
+    { 0x1050 "Leopard" }
+    { 0x1040 "Tiger" }
+    { 0x1030 "Panther" }
+    { 0x1020 "Jaguar" }
+    { 0x1010 "Puma" }
+    { 0x1000 "Cheetah" }
+}
+
+: system-code-name ( -- str/f )
+    system-version 0xFFF0 bitand system-code-names at ;
+
+PRIVATE>
+
+M: macosx os-version
+    system-version-major
+    system-version-minor
+    system-version-bugfix 3array ;
+
 ! See /usr/include/sys/sysctl.h for constants
 
 LIBRARY: libc