diff options
author | James Peach <jpeach@samba.org> | 2006-11-28 22:55:32 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:16:11 -0500 |
commit | 760c7a6534c2c7cf8d35eddf7971940379f683c3 (patch) | |
tree | 2763c0a668c34aaa4a36aff06310e893f4ef55b1 /source3/tests | |
parent | e6467907eda25a7aea3b8fa75754ab6b6e06272a (diff) | |
download | samba-760c7a6534c2c7cf8d35eddf7971940379f683c3.tar.gz samba-760c7a6534c2c7cf8d35eddf7971940379f683c3.tar.bz2 samba-760c7a6534c2c7cf8d35eddf7971940379f683c3.zip |
r19941: One copy of this code should be sufficient.
(This used to be commit 493ba681e541292f1c2c6b6670bb2c48f63a0aa3)
Diffstat (limited to 'source3/tests')
-rw-r--r-- | source3/tests/os2_delete.c | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/source3/tests/os2_delete.c b/source3/tests/os2_delete.c index b3aaf67f41..831fa367eb 100644 --- a/source3/tests/os2_delete.c +++ b/source3/tests/os2_delete.c @@ -105,110 +105,3 @@ int main(void) return 0; } -/* - test readdir/unlink pattern that OS/2 uses - tridge@samba.org July 2005 -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <sys/stat.h> -#include <unistd.h> -#include <sys/types.h> -#include <dirent.h> -#include <errno.h> -#include <string.h> -#include <fcntl.h> - -#define NUM_FILES 700 -#define READDIR_SIZE 100 -#define DELETE_SIZE 4 - -#define TESTDIR "test.dir" - -#define FAILED(d) (fprintf(stderr, "Failed for %s - %s\n", d, strerror(errno)), exit(1), 1) - -#ifndef MIN -#define MIN(a,b) ((a)<(b)?(a):(b)) -#endif - -static void cleanup(void) -{ - /* I'm a lazy bastard */ - system("rm -rf " TESTDIR); - mkdir(TESTDIR, 0700) == 0 || FAILED("mkdir"); -} - -static void create_files() -{ - int i; - for (i=0;i<NUM_FILES;i++) { - char fname[40]; - sprintf(fname, TESTDIR "/test%u.txt", i); - close(open(fname, O_CREAT|O_RDWR, 0600)) == 0 || FAILED("close"); - } -} - -static int os2_delete(DIR *d) -{ - off_t offsets[READDIR_SIZE]; - int i, j; - struct dirent *de; - char names[READDIR_SIZE][30]; - - /* scan, remembering offsets */ - for (i=0, de=readdir(d); - de && i < READDIR_SIZE; - de=readdir(d), i++) { - offsets[i] = telldir(d); - strcpy(names[i], de->d_name); - } - - if (i == 0) { - return 0; - } - - /* delete the first few */ - for (j=0; j<MIN(i, DELETE_SIZE); j++) { - char fname[40]; - sprintf(fname, TESTDIR "/%s", names[j]); - unlink(fname) == 0 || FAILED("unlink"); - } - - /* seek to just after the deletion */ - seekdir(d, offsets[j-1]); - - /* return number deleted */ - return j; -} - -int main(void) -{ - int total_deleted = 0; - DIR *d; - struct dirent *de; - - cleanup(); - create_files(); - - d = opendir(TESTDIR); - - /* skip past . and .. */ - de = readdir(d); - strcmp(de->d_name, ".") == 0 || FAILED("match ."); - de = readdir(d); - strcmp(de->d_name, "..") == 0 || FAILED("match .."); - - while (1) { - int n = os2_delete(d); - if (n == 0) break; - total_deleted += n; - } - closedir(d); - - printf("Deleted %d files of %d\n", total_deleted, NUM_FILES); - - rmdir(TESTDIR) == 0 || FAILED("rmdir"); - - return 0; -} |