about summary refs log tree commit diff stats
path: root/sysdep.lsp
diff options
context:
space:
mode:
Diffstat (limited to 'sysdep.lsp')
-rwxr-xr-xsysdep.lsp25
1 files changed, 25 insertions, 0 deletions
diff --git a/sysdep.lsp b/sysdep.lsp
new file mode 100755
index 0000000..e12cc9a
--- /dev/null
+++ b/sysdep.lsp
@@ -0,0 +1,25 @@
+#!/home/dbane/openlisp-10.9.0/uxlisp -shell
+(defpackage #:sysdep
+  (:use #:openlisp)
+  (:export
+   #:get-ieee-node-identifier))
+(in-package #:sysdep)
+(defglobal *inited* nil)
+(defglobal *saved-node* nil)
+(defun error-handler (condition)
+   (let ((seed (get-random-info)))
+        (setf (elt seed 0) (logior (elt seed 0) 1))
+        (setq *saved-node* (copy-seq seed))
+        (with-open-output-file (outstream "nodeid")
+             (format outstream "~S" *saved-node*))))
+(defun get-ieee-node-identifier ()
+   (if (not *inited*)
+       (progn (with-handler #'error-handler
+                 (with-open-input-file (instream "nodeid")
+                      (read instream)))
+              (setq *inited* t)))
+   *saved-node*)
+(provide "sysdep")
+(defun main ()
+   (format (standard-output) "~A~%" (get-ieee-node-identifier)))
+(main)