[Openmcl-devel] Determining OSX version at runtime
Paul Krueger
plkrueger at comcast.net
Thu Aug 26 10:37:00 PDT 2010
Actually I just realized my own was pretty bad, here is a better version:
(defun osx-version ()
(let ((str (with-output-to-string (str)
(run-program "sw_vers" '("-productVersion") :output str))))
(subseq str 0 (1- (length str)))))
On Aug 26, 2010, at 12:27 PM, Paul Krueger wrote:
> As long as we're all contributing our personal hacks to do this, mine is:
>
> (defun osx-version ()
> (let* ((info-str (with-output-to-string (str)
> (run-program "sw_vers" nil :output str)))
> (search-str "ProductVersion:")
> (str-len (length search-str))
> (version-pos (search search-str info-str :test #'char=))
> (eol-pos (and version-pos
> (position #\linefeed info-str
> :test #'char=
> :start (+ version-pos str-len)))))
> (and version-pos (string-trim (list #\tab #\space)
> (subseq info-str (+ version-pos str-len) eol-pos)))))
>
>
> ? (osx-version)
> "10.6.4"
>
> but Gary's solution looks to be the most efficient to me. I wasn't previously aware of that version number correspondence.
>
> Paul
>
> On Aug 26, 2010, at 12:06 PM, Neil Baylis wrote:
>
>> The Apple release notes for Snow Leopard suggest using NSAppKitVersionNumber.
>> On my Snow Leopard system, I see
>>
>> CL-USER> (apropos "NSAppKit")
>> X86-DARWIN64::|NSAppKitVersionNumber|
>>
>> But on my 32 bit ppc Leopard system, apropos doesn't know anything about it.
>>
>> (Both systems using ccl 1.5)
>>
>> Neil
>>
>> On Thu, Aug 26, 2010 at 9:39 AM, Raffael Cavallaro <raffaelcavallaro at mac.com> wrote:
>>
>> On Aug 26, 2010, at 12:17 PM, Gary Palter wrote:
>>
>> > Yes, you can use (software-version). On Mac OS X, the first number is the major release + 4, the second number is the minor release, and the third number is usually zero.
>> >
>> > So, 9.8.0 is OS X 10.5.8 and 10.4.0 is OS X 10.6.4.
>>
>> you can also cheat and get the product version directly (though this is not considered the correct method by apple):
>>
>> ? (defun mac-os-x-version ()
>> (ccl::with-autorelease-pool
>> (let* ((plist
>> (#/dictionaryWithContentsOfFile: ns:ns-dictionary #@"/System/Library/CoreServices/SystemVersion.plist")))
>> (ccl::lisp-string-from-nsstring (#/valueForKey: plist #@"ProductVersion")))))
>>
>> ? (mac-os-x-version)
>> "10.6.4"
>>
>> warmest regards,
>>
>> Ralph
>>
>>
>> Raffael Cavallaro
>> raffaelcavallaro at me.com
>>
>>
>>
>>
>>
>> _______________________________________________
>> Openmcl-devel mailing list
>> Openmcl-devel at clozure.com
>> http://clozure.com/mailman/listinfo/openmcl-devel
>>
>>
>>
>> --
>> http://www.pixpopuli.com
>> _______________________________________________
>> Openmcl-devel mailing list
>> Openmcl-devel at clozure.com
>> http://clozure.com/mailman/listinfo/openmcl-devel
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20100826/8fc7784f/attachment.htm>
More information about the Openmcl-devel
mailing list