REBOL[ Title: "Environment" Version: 0.1.0 Date: 24-12-2006 Author: "Peter WA Wood" Copyright: "Peter WA Wood" File: %environ.r Purpose: {Provides five functions that decode system/version: os? which returns a string indicating operating system nix? which returns true under a unix-type operating system win32? which returns true under a windows 32 bit os win? which returns true under a windows os cpu? which returns a string indicating the CPU class The source of the underlying information was taken from: http://www.rebol.com/releases.html} History: {0.1.0 21-12-2006 Initial version} Library: [ level: 'beginner type: [package function] domain: [cgi shell win-api] platform: 'all tested-under: [ core 2.6.2.2.4 "Mac OS X 10.2.8"] support: none license: cc-by {see http://www.rebol.org/cgi-bin/cgiwrap/rebol/license-help.r} ] ] environ: make object! [ os?: func [{returns the operating system in the form of a string: "win32", "mac", "linux", 'bsd", "netbsd", "openbsd", "solaris", "hp-ux", "wince", "aix", "other"} ][ switch/default fourth system/version [ 2 [either 4 = fifth system/version [return "mac"] [return "other"] ] 3 [either 1 = fifth system/version [return "win32"] [return "other"] ] 4 [return "linux"] 6 [return "bsd"] 7 [return "freebsd"] 8 [return "netbsd"] 9 [return "openbsd"] 10 [return "solaris"] 12 [return "hp-ux"] 15 [either find [1 2 3 5 6] fifth system/version [return "wince"] [return "other"] ] 17 [return "aix"] ][ return "other" ] ] nix?: func [{returns true when run under a unix-style os}] [ either find ["mac" "linux" "bsd" "freebsd" "netbsd" "openbsd" "solaris" "hp-ux" "aix"] os? [return true] [return false] ] win32?: func [{returns true when run under a windows 32 bit os}] [ either os? = "win32" [return true] [return false] ] win?: func [{returns true when run under a windows os}] [ either find ["win32" "wince"] os? [return true] [return false] ] cpu?: func [{returns the type of cpu in the form of a string: "ppc", "x86", "sparc", "other"} ][ switch/default os? [ "mac" [return "ppc"] "win32" [return "x86"] "linux" [switch/default fifth system/version [ 1 [return "x86"] 2 [return "x86"] 4 [return "ppc"] 6 [return "sparc"] 7 [return "ultrasparc"] 8 [return "strongarm"] ][return "other"] ] "bsd" [return "x86"] "freebsd" [return "x86"] "netbsd" [switch/default fifth system/version [ 1 [return "x86"] 2 [return "ppc"] 5 [return "sparc"] ][return "other"] ] "openbsd" [switch/default fifth system/version [ 1 [return "x86"] 2 [return "x86"] 5 [return "sparc"] ][return "other"] ] "solaris" [switch/default fifth system/version [ 1 [return "sparc"] 2 [return "x86"] ][return "other"] ] "aix" [return "ppc"] "wince" [switch/default fifth system/version [ 2 [return "mips"] 3 [return "ppc"] 5 [return "strongarm"] ][return "other"] ] ][ return "other" ] ] ] ;; end of make environ