chiark / gitweb /
min lengths too
[version-charset-test.git] / generate.c
1
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <assert.h>
5
6 static const char charset[]=
7   "0123456789"
8   "abcdefghijklmnopqrstuvwxyz"
9   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
10   ".-+:~";
11
12 #define ML 8
13
14 static char sofar[ML+1];
15
16 static void gen(char *inbuf, int len) {
17   if (!len) {
18     *inbuf = 0;
19     puts(sofar);
20     return;
21   }
22   const char *cp;
23   for (cp=charset; *cp; cp++) {
24     *inbuf = *cp;
25     gen(inbuf+1, len-1);
26   }
27 }    
28
29 int main(int argc, char **argv) {
30   int len;
31   int minlen=0, maxlen=ML;
32
33   if (argc==3) {
34     minlen = atoi(argv[1]);
35     maxlen = atoi(argv[2]);
36   } else if (argc==2) {
37     maxlen = atoi(argv[1]);
38   } else if (argc==1) {
39   } else {
40     abort();
41   }
42
43   assert(maxlen <= ML);
44
45   for (len=minlen; len<=maxlen; len++) {
46     fprintf(stderr,"********** generating len=%d **********\n",len);
47     gen(sofar, len);
48   }
49   if (ferror(stdout) ||
50       fflush(stdout)) { perror("stdout"); abort(); }
51   fputs("generate done\n",stderr);
52   return 0;
53 }