system-info.macosx: Using 'gestalt' to support 'os-version' on macosx.
parent
6bf9b971f2
commit
a4b6adbb6d
|
@ -1 +1,2 @@
|
||||||
Doug Coleman
|
Doug Coleman
|
||||||
|
John Benediktsson
|
||||||
|
|
|
@ -1,11 +1,48 @@
|
||||||
! Copyright (C) 2008 Doug Coleman.
|
! Copyright (C) 2008 Doug Coleman, John Benediktsson.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
|
||||||
USING: alien alien.c-types alien.data alien.strings alien.syntax
|
USING: alien alien.c-types alien.data alien.strings alien.syntax
|
||||||
byte-arrays kernel namespaces sequences unix
|
arrays assocs byte-arrays combinators core-foundation io.binary
|
||||||
system io.encodings.utf8 system-info ;
|
io.encodings.utf8 kernel math namespaces sequences system
|
||||||
|
system-info unix ;
|
||||||
|
|
||||||
IN: system-info.macosx
|
IN: system-info.macosx
|
||||||
|
|
||||||
M: macosx os-version f ;
|
<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{
|
||||||
|
{ HEX: 1070 "Lion" }
|
||||||
|
{ HEX: 1060 "Snow Leopard" }
|
||||||
|
{ HEX: 1050 "Leopard" }
|
||||||
|
{ HEX: 1040 "Tiger" }
|
||||||
|
{ HEX: 1030 "Panther" }
|
||||||
|
{ HEX: 1020 "Jaguar" }
|
||||||
|
{ HEX: 1010 "Puma" }
|
||||||
|
{ HEX: 1000 "Cheetah" }
|
||||||
|
}
|
||||||
|
|
||||||
|
: system-code-name ( -- str/f )
|
||||||
|
system-version HEX: FFF0 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
|
! See /usr/include/sys/sysctl.h for constants
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
John Benediktsson
|
|
|
@ -1,53 +0,0 @@
|
||||||
! Copyright (C) 2011 John Benediktsson
|
|
||||||
! See http://factorcode.org/license.txt for BSD license
|
|
||||||
|
|
||||||
USING: alien.data alien.syntax combinators core-foundation
|
|
||||||
formatting io.binary kernel math ;
|
|
||||||
|
|
||||||
IN: gestalt
|
|
||||||
|
|
||||||
<PRIVATE
|
|
||||||
|
|
||||||
TYPEDEF: SInt16 OSErr
|
|
||||||
|
|
||||||
TYPEDEF: UInt32 OSType
|
|
||||||
|
|
||||||
FUNCTION: OSErr Gestalt ( OSType selector, SInt32* response ) ;
|
|
||||||
|
|
||||||
PRIVATE>
|
|
||||||
|
|
||||||
: 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 ;
|
|
||||||
|
|
||||||
: system-version-string ( -- str )
|
|
||||||
system-version-major
|
|
||||||
system-version-minor
|
|
||||||
system-version-bugfix
|
|
||||||
"%s.%s.%s" sprintf ;
|
|
||||||
|
|
||||||
: system-code-name ( -- str )
|
|
||||||
system-version HEX: FFF0 bitand {
|
|
||||||
{ HEX: 1070 [ "Lion" ] }
|
|
||||||
{ HEX: 1060 [ "Snow Leopard" ] }
|
|
||||||
{ HEX: 1050 [ "Leopard" ] }
|
|
||||||
{ HEX: 1040 [ "Tiger" ] }
|
|
||||||
{ HEX: 1030 [ "Panther" ] }
|
|
||||||
{ HEX: 1020 [ "Jaguar" ] }
|
|
||||||
{ HEX: 1010 [ "Puma" ] }
|
|
||||||
{ HEX: 1000 [ "Cheetah" ] }
|
|
||||||
[ drop "Unknown" ]
|
|
||||||
} case ;
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
macosx
|
|
Loading…
Reference in New Issue