[PATCH] fff-random: rewrite in C
Tim Niemeyer
tim at tn-x.org
So Jul 2 17:40:43 CEST 2017
Fixes: #51
Signed-off-by: Tim Niemeyer <tim at tn-x.org>
---
src/packages/fff/fff-random/Makefile | 27 ++++++------
src/packages/fff/fff-random/files/usr/bin/random | 16 --------
src/packages/fff/fff-random/src/Makefile | 4 ++
src/packages/fff/fff-random/src/random.c | 52 ++++++++++++++++++++++++
4 files changed, 70 insertions(+), 29 deletions(-)
delete mode 100755 src/packages/fff/fff-random/files/usr/bin/random
create mode 100644 src/packages/fff/fff-random/src/Makefile
create mode 100644 src/packages/fff/fff-random/src/random.c
diff --git a/src/packages/fff/fff-random/Makefile b/src/packages/fff/fff-random/Makefile
index 95e5786..066adc3 100644
--- a/src/packages/fff/fff-random/Makefile
+++ b/src/packages/fff/fff-random/Makefile
@@ -1,40 +1,41 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-random
-PKG_VERSION:=0.0.1
+PKG_VERSION:=2
PKG_RELEASE:=1
-PKG_BUILD_DIR:=$(BUILD_DIR)/fff-random
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/fff-random
- SECTION:=base
- CATEGORY:=Freifunk
- TITLE:=Freifunk-Franken Random
- URL:=http://www.freifunk-franken.de
- DEPENDS:=+ at BUSYBOX_CONFIG_ASH
+ SECTION:=base
+ CATEGORY:=Freifunk
+ TITLE:=Freifunk-Franken Random
+ URL:=http://www.freifunk-franken.de
endef
define Package/fff-random/description
- This is the Freifunk Franken Firmware Random package
- This packages provides a random function.
+ This is the Freifunk Franken Firmware Random package
+ This packages provides a random function.
endef
define Build/Prepare
- echo "all: " > $(PKG_BUILD_DIR)/Makefile
+ mkdir -p $(PKG_BUILD_DIR)
+ $(CP) ./src/* $(PKG_BUILD_DIR)/
endef
define Build/Configure
- # nothing
+ # nothing
endef
define Build/Compile
- # nothing
+ CFLAGS="$(TARGET_CFLAGS)" CPPFLAGS="$(TARGET_CPPFLAGS)" $(MAKE) -C $(PKG_BUILD_DIR) $(TARGET_CONFIGURE_OPTS)
endef
define Package/fff-random/install
- $(CP) ./files/* $(1)/
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/random $(1)/usr/bin/
endef
$(eval $(call BuildPackage,fff-random))
diff --git a/src/packages/fff/fff-random/files/usr/bin/random b/src/packages/fff/fff-random/files/usr/bin/random
deleted file mode 100755
index 8f11470..0000000
--- a/src/packages/fff/fff-random/files/usr/bin/random
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-# Freifunk Franken Random Number Script
-# Tim Niemeyer
-# 29.11.2015
-# License GPLv2
-
-FROM=${1:-0}
-UNTIL=${2:-100}
-
-diff=$(( UNTIL - FROM ))
-numbers=$(( $(echo $diff | wc -c) -1 ))
-
-rand=$(</dev/urandom tr -dc 0-9 | head -c $numbers | sed -e 's/^0*//g')
-
-echo $(( (rand % diff) + FROM ))
-
diff --git a/src/packages/fff/fff-random/src/Makefile b/src/packages/fff/fff-random/src/Makefile
new file mode 100644
index 0000000..ab181d5
--- /dev/null
+++ b/src/packages/fff/fff-random/src/Makefile
@@ -0,0 +1,4 @@
+all: random
+
+random: random.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -Wall -o $@ $^ $(LDLIBS)
diff --git a/src/packages/fff/fff-random/src/random.c b/src/packages/fff/fff-random/src/random.c
new file mode 100644
index 0000000..85dc57d
--- /dev/null
+++ b/src/packages/fff/fff-random/src/random.c
@@ -0,0 +1,52 @@
+/*
+ * Simple random tool, used to get a random value
+ * 2017-07-02
+ * Tim Niemeyer
+ * GPLv2
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv)
+{
+ int from = 0;
+ int to = 100;
+ int diff = 1;
+ FILE *f = 0;
+ unsigned int r = 0;
+
+ if (argc != 1 && argc != 3)
+ {
+ printf("%s <from> <to>\n", argv[0]);
+ return -1;
+ }
+ else if (argc == 3)
+ {
+ from = atoi(argv[1]);
+ to = atoi(argv[2]);
+ }
+
+ diff = to - from;
+ if (diff <= 0)
+ {
+ printf("Bad from/to\n");
+ return -1;
+ }
+
+ f = fopen("/dev/urandom", "r");
+ if (!f)
+ {
+ printf("Can't open /dev/urandom\n");
+ return -1;
+ }
+
+ if (1U != fread(&r, sizeof(unsigned int), 1U, f))
+ {
+ printf("Can't read /dev/urandom\n");
+ return -1;
+ }
+
+ printf("%d\n", (r % (diff +1 )) + from);
+
+ return 0;
+}
--
2.1.4
Mehr Informationen über die Mailingliste franken-dev