From a4b6adbb6d5f6d65d21347a6eec9571a240f133f Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 11 Sep 2011 08:29:16 -0700 Subject: [PATCH] system-info.macosx: Using 'gestalt' to support 'os-version' on macosx. --- basis/system-info/macosx/authors.txt | 1 + basis/system-info/macosx/macosx.factor | 45 ++++++++++++++++++++-- extra/gestalt/authors.txt | 1 - extra/gestalt/gestalt.factor | 53 -------------------------- extra/gestalt/platforms.txt | 1 - 5 files changed, 42 insertions(+), 59 deletions(-) delete mode 100644 extra/gestalt/authors.txt delete mode 100644 extra/gestalt/gestalt.factor delete mode 100644 extra/gestalt/platforms.txt diff --git a/basis/system-info/macosx/authors.txt b/basis/system-info/macosx/authors.txt index 7c1b2f2279..f3291fce3e 100755 --- a/basis/system-info/macosx/authors.txt +++ b/basis/system-info/macosx/authors.txt @@ -1 +1,2 @@ Doug Coleman +John Benediktsson diff --git a/basis/system-info/macosx/macosx.factor b/basis/system-info/macosx/macosx.factor index faf69a881e..62c6e9d156 100644 --- a/basis/system-info/macosx/macosx.factor +++ b/basis/system-info/macosx/macosx.factor @@ -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. + USING: alien alien.c-types alien.data alien.strings alien.syntax -byte-arrays kernel namespaces sequences unix -system io.encodings.utf8 system-info ; +arrays assocs byte-arrays combinators core-foundation io.binary +io.encodings.utf8 kernel math namespaces sequences system +system-info unix ; + IN: system-info.macosx -M: macosx os-version f ; + [ 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 diff --git a/extra/gestalt/authors.txt b/extra/gestalt/authors.txt deleted file mode 100644 index e091bb8164..0000000000 --- a/extra/gestalt/authors.txt +++ /dev/null @@ -1 +0,0 @@ -John Benediktsson diff --git a/extra/gestalt/gestalt.factor b/extra/gestalt/gestalt.factor deleted file mode 100644 index d88ea9e0f4..0000000000 --- a/extra/gestalt/gestalt.factor +++ /dev/null @@ -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 - - - -: gestalt ( selector -- response ) - 0 SInt32 [ 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 ; - diff --git a/extra/gestalt/platforms.txt b/extra/gestalt/platforms.txt deleted file mode 100644 index 6e806f449e..0000000000 --- a/extra/gestalt/platforms.txt +++ /dev/null @@ -1 +0,0 @@ -macosx