chiark / gitweb /
generate all
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 4 Nov 2016 11:53:56 +0000 (11:53 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 4 Nov 2016 11:53:56 +0000 (11:53 +0000)
Makefile [new file with mode: 0644]
generate [deleted file]
generate.c [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..f4499ca
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,3 @@
+CFLAGS=-Wall
+
+all: generate
diff --git a/generate b/generate
deleted file mode 100755 (executable)
index 86c43ff..0000000
--- a/generate
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/perl -w
-use strict;
-
-foreach my $len (0..7) {
-    print STDERR "generate len $len\n";
-    foreach (my $val=0; ; $val++) {
-       my $s = sprintf "%0${len}d", $val;
-       last if length $s > $len;
-       $s =~ y/0-9/.+:~09mAZ-/;
-       print $s,"\n" or die $!;
-    }
-}
diff --git a/generate.c b/generate.c
new file mode 100644 (file)
index 0000000..f5b79f5
--- /dev/null
@@ -0,0 +1,37 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static const char charset[]=
+  "01234567890"
+  "abcdefghijklmnopqrstuvwxyz"
+  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+  ".-+:~";
+
+#define ML 10
+
+static char sofar[ML+1];
+
+static void gen(char *inbuf, int len) {
+  if (!len) {
+    *inbuf = 0;
+    puts(sofar);
+    return;
+  }
+  const char *cp;
+  for (cp=charset; *cp; cp++) {
+    *inbuf = *cp;
+    gen(inbuf+1, len-1);
+  }
+}    
+
+int main(void) {
+  int len;
+
+  for (len=0; len<ML; len++) {
+    fprintf(stderr,"generating len=%d\n",len);
+    gen(sofar, len);
+  }
+  if (ferror(stdout) ||
+      fflush(stdout)) { perror("stdout"); abort(); }
+}