small fixes and add "gmake test"
[tedtools.git] / gendata.c
1 /*
2  * Copyright (c) 2005 Teodor Sigaev <teodor@sigaev.ru>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *      notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *      notice, this list of conditions and the following disclaimer in the
12  *      documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the author nor the names of any co-contributors
14  *      may be used to endorse or promote products derived from this software
15  *      without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
18  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 #include <stdio.h>
31 #include <string.h>
32 #include <stdlib.h>
33 #include <unistd.h>
34 #include <ctype.h>
35
36 #include "tlog.h"
37
38 static void
39 usage() {
40         puts(
41         "Usage:\n"
42         "tbtreetest  -b [-r -c COUNT] | -s [ -c COUNT ]\n"
43         );
44         exit(1);
45 }
46
47 extern char *optarg;
48 extern int opterr;
49
50 #define NO_MODE         0
51 #define MODE_BTREE      1
52 #define MODE_SFX        2
53
54 static char *symbols="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
55 static int symbolslen=0;
56
57 int
58 main(int argn, char *argv[]) {
59         int mode=NO_MODE;
60         int isrnd=0, count=10,i; 
61
62         opentlog(TL_OPEN_STDERR,TL_DEBUG, NULL);
63         symbolslen=strlen(symbols);
64         
65           
66         while((i=getopt(argn,argv,"sbrc:")) != EOF) {
67                 switch(i) {
68                         case 'r':
69                                 isrnd=1;
70                                 break;
71                         case 'b':
72                                 if ( mode ) usage();
73                                 mode = MODE_BTREE;
74                                 break;
75                         case 's':
76                                 if ( mode ) usage();
77                                 mode = MODE_SFX;
78                                 break;
79                         case 'c':
80                                 count=atoi(optarg);
81                                 break;
82                         case 'h':
83                         default:
84                                 usage();
85                 }
86         }
87
88         if ( mode==MODE_BTREE ) {
89                 int cnt;
90                 for(i=0;i<count;i++) {
91                         printf("I\t%d\t", (int)( (isrnd) ? random()%count : i ));
92                         cnt=1+random()%512;
93                         while(cnt-->0)
94                                 fputc( symbols[ random()%symbolslen ], stdout);
95                         fputc('\n', stdout);
96                 }
97         } else if ( mode==MODE_SFX ) {
98                 int cnt;
99                 for(i=0;i<count;i++) {
100                         cnt=1+random()%10;
101                         while(cnt-->0)
102                                 fputc( tolower(symbols[ random()%symbolslen ]), stdout);
103                         fputc('\n', stdout);
104                 }
105         } else {
106                 usage();
107         }
108         return 0;
109 }