chiark / gitweb /
README with final notes
[version-charset-test.git] / generate.c
index f5b79f5587de81e3e2e9cbecfd815cbcdb2f5beb..c9c8ceee4e1e1000bdbcb77c8667d83778b52999 100644 (file)
@@ -1,21 +1,29 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
+#include <assert.h>
 
 static const char charset[]=
-  "01234567890"
+  "0123456789"
   "abcdefghijklmnopqrstuvwxyz"
   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   ".-+:~";
 
-#define ML 10
+#define ML 8
 
 static char sofar[ML+1];
 
+static int denomix, denom=1;
+
 static void gen(char *inbuf, int len) {
   if (!len) {
     *inbuf = 0;
-    puts(sofar);
+    if (!denomix) {
+      puts(sofar);
+    }
+    denomix += (denom-1);
+    denomix %= denom;
     return;
   }
   const char *cp;
@@ -25,13 +33,35 @@ static void gen(char *inbuf, int len) {
   }
 }    
 
-int main(void) {
+int main(int argc, char **argv) {
   int len;
+  int minlen=0, maxlen=ML;
+  char *slash;
+
+  if (argc>=2 && (slash = strchr(argv[1], '/'))) {
+      denomix = atoi(argv[1]);
+      denom = atoi(slash+1);
+      argv++; argc--;
+  }
+
+  if (argc==3) {
+    minlen = atoi(argv[1]);
+    maxlen = atoi(argv[2]);
+  } else if (argc==2) {
+    maxlen = atoi(argv[1]);
+  } else if (argc==1) {
+  } else {
+    abort();
+  }
+
+  assert(maxlen <= ML);
 
-  for (len=0; len<ML; len++) {
-    fprintf(stderr,"generating len=%d\n",len);
+  for (len=minlen; len<=maxlen; len++) {
+    fprintf(stderr,"********** generating len=%d **********\n",len);
     gen(sofar, len);
   }
   if (ferror(stdout) ||
       fflush(stdout)) { perror("stdout"); abort(); }
+  fputs("generate done\n",stderr);
+  return 0;
 }