diff --git a/files.c b/files.c new file mode 100644 --- /dev/null +++ b/files.c @@ -0,0 +1,64 @@ +/** + * test/demos/files.c + * Copyright (C) Markus Broeker + */ + +#include +#include +#include +#include +#include +#include +#include + +#define MAXDIRS 1000 +#define MAXFILES 1000 + +#define GETRANDOM(max) (1+(int)((float)max*rand()/RAND_MAX+1.0)) + +char *GetRandomNumberString () +{ + static char buffer[12]; + + sprintf (buffer, "%d", GETRANDOM (65535)); + + return buffer; +} + +int main (int argc, char **argv) +{ + int i, j; + int fd; + char *s; + + if (argc != 2) { + printf ("Usage: %s \n", argv[0]); + return EXIT_FAILURE; + } + + if (chdir (argv[1]) == -1) { + printf ("Initial Chdir to %s failed, aborting...\n", argv[1]); + return EXIT_FAILURE; + } + + srand (time (NULL)); + + for (i = 0; i < MAXDIRS; i++) { + s = GetRandomNumberString (); + mkdir (s, 0777); + if (chdir (s) == -1) { + printf ("Chdir to %s failed, aborting\n", s); + return EXIT_FAILURE; + } + for (j = 0; j < MAXFILES; j++) { + s = GetRandomNumberString (); + if ((fd = open (s, O_RDWR | O_CREAT, 0666)) < 3) { + perror ("CREATE"); + return EXIT_FAILURE; + } + close (fd); + } + chdir (".."); + } + return EXIT_SUCCESS; +}