Message ID | 1499017976-15485-1-git-send-email-tim@tn-x.org |
---|---|
State | Superseded |
Headers | show |
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=$(</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..edfb41f --- /dev/null +++ b/src/packages/fff/fff-random/src/random.c @@ -0,0 +1,53 @@ +/* + * 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"); + fclose(f); + return -1; + } + + printf("%u\n", (r % (diff +1 )) + from); + fclose(f); + return 0; +}
Danke. Jetzt sieht es besser aus. Das Programm kann wohl auch hängen im fread() wenn das Computer System kein Entropy (Entropie) mehr hat und /dev/urandom nichts schreiben kann.. das ist aber besser als die alternative. Sieht OK aus. Reviewed-by: Peter J. Philipp <pjp@centroid.eu <mailto:pjp@centroid.eu>> -peter > Am 02.07.2017 um 19:52 schrieb Tim Niemeyer <tim@tn-x.org>: > > Fixes: #51 > > Signed-off-by: Tim Niemeyer <tim@tn-x.org> > --- > > Changes in v2: > - added fclose > - use %u instead of %d > > 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 | 53 ++++++++++++++++++++++++ > 4 files changed, 71 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=$(</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..edfb41f > --- /dev/null > +++ b/src/packages/fff/fff-random/src/random.c > @@ -0,0 +1,53 @@ > +/* > + * 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"); > + fclose(f); > + return -1; > + } > + > + printf("%u\n", (r % (diff +1 )) + from); > + fclose(f); > + return 0; > +} > -- > 2.1.4 > > -- > franken-dev mailing list > franken-dev@freifunk.net > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
Fixes: #51 Signed-off-by: Tim Niemeyer <tim@tn-x.org> --- Changes in v2: - added fclose - use %u instead of %d 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 | 53 ++++++++++++++++++++++++ 4 files changed, 71 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