diff --git a/code/linux-os.lisp b/code/linux-os.lisp index fbf52ecd077dd984f04b7afdea750dbb36acfa9a..75b7146ad97493aef725d2eeb4d569b2ca1978fa 100644 --- a/code/linux-os.lisp +++ b/code/linux-os.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/linux-os.lisp,v 1.6 2007/07/18 09:50:24 cshapiro Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/linux-os.lisp,v 1.7 2009/03/25 15:28:03 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -26,23 +26,16 @@ (setq *software-type* "Linux") -;;; We use READ-SEQUENCE instead of READ-LINE to work around a bug in -;;; the proc file system on Linux kernel 2.6.x. The select() system -;;; call does not work correctly on certain files; it never reports -;;; that data is available for reading. Since CMUCL's fd-streams use -;;; select(), as a part of the SERVE-EVENT mechanism, normal I/O (for -;;; instance with READ-CHAR or READ-LINE) will fail on these files. -;;; Luckily READ-SEQUENCE does not suffer from this problem. -;;; -;;; We could also call "uname -r" here, but using the filesystem-based -;;; interface seems cleaner. +;;; Instead of reading /proc/version (which has some bugs with +;;; select() in Linux kernel 2.6.x) and instead of running uname -r, +;;; let's just get the info from uname(). (defun software-version () "Returns a string describing version of the supporting software." - (when (probe-file "/proc/version") - (with-open-file (f "/proc/version") - (let* ((buf (make-string 1024)) - (count (read-sequence buf f :end 1024))) - (subseq buf 0 (1- count)))))) + (multiple-value-bind (sysname nodename release version) + (unix:unix-uname) + (declare (ignore sysname nodename)) + (concatenate 'string release " " version))) + ;;; OS-Init initializes our operating-system interface. diff --git a/code/sunos-os.lisp b/code/sunos-os.lisp index 4418c30ab4bc86da5322b4c5f20a92a63107200d..80e46884aeaca1d7d75d066e6237ff6a53e91573 100644 --- a/code/sunos-os.lisp +++ b/code/sunos-os.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/sunos-os.lisp,v 1.11 2007/07/24 19:09:13 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/sunos-os.lisp,v 1.12 2009/03/25 15:28:03 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -30,14 +30,10 @@ "Returns a string describing version of the supporting software." (unless *software-version* (setf *software-version* - (let ((version-line - (with-output-to-string (stream) - (run-program "/usr/bin/uname" - '("-r" ) - :output stream - :pty nil - :error nil)))) - (subseq version-line 0 (1- (length version-line)))))) + (multiple-value-bind (sysname nodename release version) + (unix:unix-uname) + (declare (ignore sysname nodename)) + (concatenate 'string release " " version)))) *software-version*)