]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/random/unix/unix.factor
change add-init-hook to add-startup-hook, new add-shutdown-hook word
[factor.git] / basis / random / unix / unix.factor
index 599cd5e0ad6b3cbc03e1015e3eac9c324935ef5b..b15b9ab8b9dc0032b0d7210b0bcb01ada4758e4c 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2008 Doug Coleman
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien.c-types io io.files kernel namespaces random
-io.encodings.binary init accessors system ;
+io.encodings.binary init accessors system destructors ;
 IN: random.unix
 
 TUPLE: unix-random reader ;
@@ -9,6 +9,8 @@ TUPLE: unix-random reader ;
 : <unix-random> ( path -- random )
     binary <file-reader> unix-random boa ;
 
+M: unix-random dispose reader>> dispose ;
+
 M: unix-random random-bytes* ( n tuple -- byte-array )
     reader>> stream-read ;
 
@@ -16,10 +18,17 @@ os openbsd? [
     [
         "/dev/srandom" <unix-random> secure-random-generator set-global
         "/dev/arandom" <unix-random> system-random-generator set-global
-    ] "random.unix" add-init-hook
+    ] "random.unix" add-startup-hook
 ] [
     [
         "/dev/random" <unix-random> secure-random-generator set-global
         "/dev/urandom" <unix-random> system-random-generator set-global
-    ] "random.unix" add-init-hook
+    ] "random.unix" add-startup-hook
 ] if
+
+[
+    [
+        secure-random-generator get-global &dispose drop
+        system-random-generator get-global &dispose drop
+    ] with-destructors
+] "random.unix" add-shutdown-hook