new file mode 100644
--- /dev/null
+++ b/files.c
@@ -0,0 +1,64 @@
+/**
+ * test/demos/files.c
+ * Copyright (C) Markus Broeker
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <time.h>
+
+#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 <basedir>\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;
+}