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