chiark / gitweb /
add invoke
[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 maxlen = argc>=2 ? atoi(argv[1]) : ML;
32
33   assert(maxlen <= ML);
34
35   for (len=0; len<maxlen; len++) {
36     fprintf(stderr,"********** generating len=%d **********\n",len);
37     gen(sofar, len);
38   }
39   if (ferror(stdout) ||
40       fflush(stdout)) { perror("stdout"); abort(); }
41   fputs("generate done\n",stderr);
42   return 0;
43 }