#include #include #include #include #include #include #include #include static void create_files(int, int, char *), delete_files(char *); /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ fsd $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/ int main(int argc, char *argv[]) { int no_of_files, file_size; char dirname[1024]; if (argc == 4) { no_of_files = atoi(argv[1]); file_size = atoi(argv[2]); (void)strcpy(dirname, argv[3]); } else { (void)fprintf(stderr, "Usage: %s \n", argv[0]); exit(1); } create_files(no_of_files, file_size, dirname); delete_files(dirname); exit(0); } /*+++++++++++++++++++++++++++ create_files() ++++++++++++++++++++++++++++*/ static void create_files(int no_of_files, int file_size, char *dirname) { int i, fd; char *ptr; ptr = dirname + strlen(dirname); *ptr++ = '/'; for (i = 0; i < no_of_files; i++) { (void)sprintf(ptr, "this_is_dummy_file_%d", i); if ((fd = open(dirname, O_CREAT|O_RDWR, S_IRUSR|S_IWUSR)) == -1) { (void)fprintf(stderr, "Failed to open() %s : %s\n", dirname, strerror(errno)); exit(1); } if (lseek(fd, file_size - 1, SEEK_SET) == -1) { (void)fprintf(stderr, "Failed to lseek() %s : %s\n", dirname, strerror(errno)); exit(1); } if (write(fd, "", 1) != 1) { (void)fprintf(stderr, "Failed to write() to %s : %s\n", dirname, strerror(errno)); exit(1); } if (close(fd) == -1) { (void)fprintf(stderr, "Failed to close() %s : %s\n", dirname, strerror(errno)); } } ptr[-1] = 0; return; } /*++++++++++++++++++++++++++++ delete_files +++++++++++++++++++++++++++++*/ static void delete_files(char *dirname) { char *ptr; struct dirent *dirp; DIR *dp; ptr = dirname + strlen(dirname); if ((dp = opendir(dirname)) == NULL) { (void)fprintf(stderr, "Failed to opendir() %s : %s\n", dirname, strerror(errno)); exit(1); } *ptr++ = '/'; while ((dirp = readdir(dp)) != NULL) { if (dirp->d_name[0] != '.') { (void)strcpy(ptr, dirp->d_name); if (unlink(dirname) == -1) { (void)fprintf(stderr, "Failed to open() %s : %s\n", dirname, strerror(errno)); exit(1); } } } ptr[-1] = 0; if (closedir(dp) == -1) { (void)fprintf(stderr, "Failed to closedir() %s : %s\n", dirname, strerror(errno)); } return; }