From patchwork Sun Jul 2 17:13:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: fff-random: rewrite in C From: "Peter J. Philipp" X-Patchwork-Id: 362 Message-Id: To: Tim Niemeyer , franken-dev@freifunk.net Date: Sun, 2 Jul 2017 19:13:02 +0200 Hallo, kleine verbesserung (hoffe ich)… um negative Nummern zu vermeiden habe ich den %d in ein %u umgedreht und um etwas sauber zu sein auch ein fclose() gemacht: so etwas in der richtung. Denn wenn man diese nummern gibt wird es negativ: spica:Documents pjp$ ./timsrandom 2147483648 2147483649 -2147483648 mit dem patch sieht es so aus: spica:Documents pjp$ cc -g -o timsrandom timsrandom.c spica:Documents pjp$ ./timsrandom 2147483648 2147483649 2147483649 entschuldige bitte die etwas schlampigkeit von mir ich bin nicht in meiner komfortzone da ich auf dem wochenende macbook bin. Grüße, -peter > Am 02.07.2017 um 17:40 schrieb Tim Niemeyer : > > 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=$( - > -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 > +#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; > +} > -- > 2.1.4 > > -- > franken-dev mailing list > franken-dev@freifunk.net > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net --- timsrandom.c.orig 2017-07-02 19:04:10.000000000 +0200 +++ timsrandom.c 2017-07-02 19:04:39.000000000 +0200 @@ -40,7 +40,9 @@ return -1; } - printf("%d\n", (r % (diff +1 )) + from); + fclose(f); + + printf("%u\n", (r % (diff +1 )) + from); return 0; }