chiark / gitweb /
use new git-check-ref-format
[version-charset-test.git] / generate.c
index d5d457bc78cacd0f3ceca135ed690fc04e9d7af8..c9c8ceee4e1e1000bdbcb77c8667d83778b52999 100644 (file)
@@ -1,6 +1,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <assert.h>
 
 static const char charset[]=
@@ -13,10 +14,16 @@ static const char charset[]=
 
 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;
@@ -28,11 +35,28 @@ static void gen(char *inbuf, int len) {
 
 int main(int argc, char **argv) {
   int len;
-  int maxlen = argc>=2 ? atoi(argv[1]) : ML;
+  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<maxlen; len++) {
+  for (len=minlen; len<=maxlen; len++) {
     fprintf(stderr,"********** generating len=%d **********\n",len);
     gen(sofar, len);
   }