1adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew/* create.c (GPL)*/
2adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew/* Hironobu SUZUKI <hironobu@h2np.net> */
3adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#include <stdio.h>
4adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#include <sys/stat.h>
5adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#include <sys/types.h>
6adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#include <fcntl.h>
7adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#include <unistd.h>
8adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#include <time.h>
9adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#include <stdlib.h>
10adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
11adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#define MAXN 4096
12adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
13adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew#define MAXFSIZE 1024 * 192
14adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
15adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiewchar wbuf[MAXFSIZE];
16354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaostatic int filecount = 0;
17adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
189080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modakvoid makedir(char *dir1);
199080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modakvoid changedir(char *dir);
209080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modakvoid create_file(char *filename);
21adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
22adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiewextern int box_muler(int, int);
23adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
24354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint startc = 0;
25354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint main(int ac, char *av[])
26adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew{
27354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int i = 0;
28354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int j = 0;
29354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int k = 0;
30354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int l = 0;
31354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	char dir1[MAXN];
32354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	char dir2[MAXN];
33354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	char dir3[MAXN];
34354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	char filename[MAXN];
35354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	time_t t;
36354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int maxfiles = 0xFFFFFF;
37354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int createfiles = 0;
38adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
39354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (ac > 1) {
40354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		sscanf(av[1], "%x", &maxfiles);
41354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if (maxfiles == 0) {
42354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			printf("maxfile argument error (0 value)\n");
43354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			exit(1);
44354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		}
45354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	}
46354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	time(&t);
47354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	srandom((unsigned int)getpid() ^
48354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		(((unsigned int)t << 16) | (unsigned int)t >> 16));
49354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	printf("Create files\n");
50354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	for (i = 0; i < 0xFF; i++) {
51354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		sprintf(dir1, "%2.2x", i);
52354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		makedir(dir1);
53354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		changedir(dir1);
54354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		for (j = 0; j < 0xFF; j++) {
55354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			sprintf(dir2, "%2.2x", j);
56354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			makedir(dir2);
57354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			changedir(dir2);
58354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			for (k = 0; k < 0xFF; k++) {
59354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				sprintf(dir3, "%2.2x", k);
60354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				makedir(dir3);
61354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				changedir(dir3);
62354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				for (l = 0; l < 0xFF; l++) {
63354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					sprintf(filename, "%s%s%s%2.2x", dir1,
64354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						dir2, dir3, l);
65354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					create_file(filename);
66354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					if (maxfiles < createfiles++) {
67354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						goto end;
68354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					}
69354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
70354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				changedir("../");
71354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			}
72354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			changedir("../");
73354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		}
74354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		changedir("../");
75adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew	}
76adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiewend:
77354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	fprintf(stderr, "\nTotal create files: %d\n", filecount);
78354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	printf("Done\n");
79354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	return 0;
80adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew}
81adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
82354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint showchar[] = { 124, 47, 45, 92, 124, 47, 45, 92 };
839080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modak
849080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modakvoid makedir(char *dir1)
85adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew{
86354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (mkdir(dir1, S_IRWXU) < 0) {
87354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		perror(dir1);
88354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		exit(1);
89354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	}
90adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew}
919080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modak
929080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modakvoid changedir(char *dir)
939080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modak{
94354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (chdir(dir) < 0) {
95354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		perror(dir);
96354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		exit(1);
97354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	}
98adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew}
99adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew
1009080a1ac2455fa5eef852385b8a62e8ad1028d25Subrata Modakvoid create_file(char *filename)
101adb08eb8fd68a49feb1ed55588363fe708ab5d7crobbiew{
102354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int fd;
103354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int randomsize;
104354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if ((fd = creat(filename, S_IRWXU)) < 0) {
105354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		fprintf(stderr, "\nTotal create files: %d\n", filecount);
106354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		perror(filename);
107354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		exit(1);
108354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	}
109354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if ((randomsize = box_muler(0, MAXFSIZE)) < 0) {
110354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		randomsize = MAXFSIZE;
111354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	}
112354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (write(fd, wbuf, randomsize) < 0) {
113354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		fprintf(stderr, "\nTotal create files: %d\n", filecount);
114354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		perror(filename);
115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		exit(1);
116354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	}
117354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	filecount++;
118354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	close(fd);
119ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman}
120