files.c
author Markus Brökers <mbroeker@largo.homelinux.org>
Mon, 09 Aug 2010 12:12:55 +0200
changeset 137 d8a0984b72fc
parent 131 b5ad49852adc
permissions -rw-r--r--
From a 'C-Professional' :) Take a look at the source and pray

/**
 * files.c
 * Copyright (C) 2008 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);
        }
        if (chdir ("..") == -1)
            break;
    }
    return EXIT_SUCCESS;
}