From bf734679a7643e4cf54e192cb8a624c92fc2da64 Mon Sep 17 00:00:00 2001
From: P. J. McDermott <pj@pehjota.net>
Date: Wed, 27 Aug 2014 22:03:05 -0400
Subject: lib/rand.sh: New file

---
(limited to 'lib')

diff --git a/lib/local.mk b/lib/local.mk
index 5dad2b9..30306d3 100644
--- a/lib/local.mk
+++ b/lib/local.mk
@@ -8,5 +8,6 @@ pkgdata_sources = \
 	lib/pkg.sh \
 	lib/chroot.sh \
 	lib/opkg.sh \
+	lib/rand.sh \
 	lib/cmd.sh \
 	lib/profile.sh
diff --git a/lib/rand.sh b/lib/rand.sh
new file mode 100644
index 0000000..19d6e9f
--- /dev/null
+++ b/lib/rand.sh
@@ -0,0 +1,48 @@
+# Linear congruential pseudorandom number generator
+#
+# Copyright (C) 2014  Patrick "P. J." McDermott
+#
+# This file is part of the ProteanOS Development Kit.
+#
+# The ProteanOS Development Kit is free software: you can redistribute
+# it and/or modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# The ProteanOS Development Kit is distributed in the hope that it
+# will be useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with the ProteanOS Development Kit.  If not, see
+# <http://www.gnu.org/licenses/>.
+
+[ "x${_RAND_SM+set}" = 'xset' ] && return 0
+_RAND_SM=1
+
+use output
+use locale
+
+rand_x=1
+
+srand()
+{
+	local x="${1}"
+
+	case "${x}" in
+		[!0-9])
+			warn "$(get_msg 'rand_bad_x')"
+			return 1
+			;;
+	esac
+
+	rand_x=${x}
+}
+
+rand()
+{
+	# Increment, multiplier, and modulus values are those used in glibc.
+	rand_x=$((1103515245 * $rand_x + 12345))
+	rand_x=$(($rand_x % 4294967296))
+}
--
cgit v0.9.1