diff options
| -rw-r--r-- | .gitmodules | 3 | ||||
| -rw-r--r-- | Makefile | 10 | ||||
| -rw-r--r-- | src/shuf.c | 8 | ||||
| m--------- | trand | 0 |
4 files changed, 20 insertions, 1 deletions
diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e5ead97 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "trand"] + path = trand + url = https://github.com/SaltyMilk/trand @@ -6,7 +6,8 @@ CCFLAGS = -Wall -Wextra -Wpedantic all: prebuild $(BINDIR)/basename $(BINDIR)/chown $(BINDIR)/cut $(BINDIR)/head \ $(BINDIR)/mkdir $(BINDIR)/mv $(BINDIR)/rm $(BINDIR)/seq \ - $(BINDIR)/shuf $(BINDIR)/tee $(BINDIR)/tr + $(BINDIR)/shuf $(BINDIR)/tee $(BINDIR)/tr \ + $(BINDIR)/shuf_trand prebuild: mkdir -vp $(BINDIR) @@ -44,6 +45,13 @@ $(BINDIR)/tee: $(SRCDIR)/tee.c $(BINDIR)/tr: $(SRCDIR)/tr.c $(CC) $(CCFLAGS) -o $@ $^ +#### shuf using trand +TRAND_PATH = trand + +$(BINDIR)/shuf_trand: $(SRCDIR)/shuf.c + make --no-print-directory -C $(TRAND_PATH) + $(CC) $(CCFLAGS) -o $@ $^ -DUSE_TRAND -I$(TRAND_PATH) -L$(TRAND_PATH) -ltrand -lpthread + clean: rm -vf $(BINDIR)/* @@ -8,6 +8,10 @@ #include <errno.h> #include <limits.h> +#ifdef USE_TRAND +# include "trand.h" +#endif + #define NUMBER_LEN(x) strlen(#x); static char *g_name = "shuf"; @@ -192,7 +196,11 @@ int main(int argc, char **argv) } for (size_t i = lines.len - 1; i > 0; i--) { +#ifndef USE_TRAND size_t j = rand() % i; +#else + size_t j = trand() % i; +#endif char *tmp = lines.data[i]; lines.data[i] = lines.data[j]; lines.data[j] = tmp; diff --git a/trand b/trand new file mode 160000 +Subproject 583ad1cbe5d1ad9c0a64bbf8180aec21a68463e |
