From patchwork Sun Jul 2 15:40:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: fff-random: rewrite in C From: Tim Niemeyer X-Patchwork-Id: 360 Message-Id: <1499010043-1938-1-git-send-email-tim@tn-x.org> To: franken-dev@freifunk.net Date: Sun, 2 Jul 2017 17:40:43 +0200 Fixes: #51 Signed-off-by: Tim Niemeyer --- 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:=+@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=$( +#include + +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 \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; +}