関数 | |
static void | cleanup (void) |
static void | create_files (void) |
static int | os2_delete (DIR *d) |
int | test_readdir_os2_delete (void) |
変数 | |
static int | test_readdir_os2_delete_ret |
static void cleanup | ( | void | ) | [static] |
os2_delete.c の 30 行で定義されています。
参照元 cli_get_fs_attr_info()・cli_get_fs_quota_info()・cli_get_fs_volume_info()・cli_get_fs_volume_info_old()・cli_get_user_quota()・cli_list_user_quota()・cli_query_secdesc()・cli_set_fs_quota_info()・cli_set_secdesc()・cli_set_unix_extensions_capabilities()・cli_set_user_quota()・cli_unix_extensions_version()・completion_fn()・main()・print_stack_trace()・remote_completion()・test_readdir_os2_delete().
00031 { 00032 /* I'm a lazy bastard */ 00033 system("rm -rf " TESTDIR); 00034 mkdir(TESTDIR, 0700) == 0 || FAILED("mkdir"); 00035 }
static void create_files | ( | void | ) | [static] |
os2_delete.c の 37 行で定義されています。
参照先 sprintf().
参照元 main()・test_readdir_os2_delete().
00038 { 00039 int i; 00040 for (i=0;i<NUM_FILES;i++) { 00041 char fname[40]; 00042 sprintf(fname, TESTDIR "/test%u.txt", i); 00043 close(open(fname, O_CREAT|O_RDWR, 0600)) == 0 || FAILED("close"); 00044 } 00045 }
static int os2_delete | ( | DIR * | d | ) | [static] |
os2_delete.c の 47 行で定義されています。
参照先 readdir()・seekdir()・sprintf()・telldir().
参照元 main()・test_readdir_os2_delete().
00048 { 00049 off_t offsets[READDIR_SIZE]; 00050 int i, j; 00051 struct dirent *de; 00052 char names[READDIR_SIZE][30]; 00053 00054 /* scan, remembering offsets */ 00055 for (i=0, de=readdir(d); 00056 de && i < READDIR_SIZE; 00057 de=readdir(d), i++) { 00058 offsets[i] = telldir(d); 00059 strcpy(names[i], de->d_name); 00060 } 00061 00062 if (i == 0) { 00063 return 0; 00064 } 00065 00066 /* delete the first few */ 00067 for (j=0; j<MIN(i, DELETE_SIZE); j++) { 00068 char fname[40]; 00069 sprintf(fname, TESTDIR "/%s", names[j]); 00070 unlink(fname) == 0 || FAILED("unlink"); 00071 } 00072 00073 /* seek to just after the deletion */ 00074 seekdir(d, offsets[j-1]); 00075 00076 /* return number deleted */ 00077 return j; 00078 }
int test_readdir_os2_delete | ( | void | ) |
os2_delete.c の 80 行で定義されています。
参照先 cleanup()・closedir()・create_files()・errno・fprintf()・opendir()・os2_delete()・readdir()・test_readdir_os2_delete_ret・total_deleted.
参照元 test_readdir().
00081 { 00082 int total_deleted = 0; 00083 DIR *d; 00084 struct dirent *de; 00085 00086 test_readdir_os2_delete_ret = 0; 00087 00088 cleanup(); 00089 create_files(); 00090 00091 d = opendir(TESTDIR "/test0.txt"); 00092 if (d != NULL) FAILED("opendir() on file succeed"); 00093 if (errno != ENOTDIR) FAILED("opendir() on file didn't give ENOTDIR"); 00094 00095 d = opendir(TESTDIR); 00096 00097 /* skip past . and .. */ 00098 de = readdir(d); 00099 strcmp(de->d_name, ".") == 0 || FAILED("match ."); 00100 de = readdir(d); 00101 strcmp(de->d_name, "..") == 0 || FAILED("match .."); 00102 00103 while (1) { 00104 int n = os2_delete(d); 00105 if (n == 0) break; 00106 total_deleted += n; 00107 } 00108 closedir(d); 00109 00110 fprintf(stderr, "Deleted %d files of %d\n", total_deleted, NUM_FILES); 00111 00112 rmdir(TESTDIR) == 0 || FAILED("rmdir"); 00113 00114 system("rm -rf " TESTDIR); 00115 00116 return test_readdir_os2_delete_ret; 00117 }
int test_readdir_os2_delete_ret [static] |