1 #include "test_opendir_partial.h"
2
3
4 #include <davixcontext.hpp>
5 #include <memory>
6 #include <cstring>
7 #include <cstdio>
8 #include <cstdlib>
9 #include <file/davposix.hpp>
10
11 #include "davix_test_lib.h"
12
13 /**
14 Execute an incomplete readdir of a directory, and verify the correct closedir with the memory cleaning
15 */
16
17 using namespace Davix;
18
19
20 #define MY_BUFFER_SIZE 65000
21
22
23
24
main(int argc,char ** argv)25 int main(int argc, char** argv){
26 if( argc < 2){
27 std::cout << "Usage : " << std::endl;
28 std::cout <<"\t" << argv[0] << " [url] [size_to_read] " << std::endl;
29 std::cout <<"\t" << argv[0] << " [url] [size_to_read] [CERTIFICATE_PATH] " << std::endl;
30 return 0;
31 }
32
33 davix_set_log_level(DAVIX_LOG_ALL);
34 int max_read= atoi(argv[2]);
35 std::cout << " end of the dir number " << max_read << std::endl;
36
37 DavixError* tmp_err=NULL;
38 RequestParams p;
39 std::auto_ptr<Context> c( new Context());
40 DavPosix pos(c.get());
41
42 if(argc > 3){
43 configure_grid_env(argv[3], p);
44 }
45
46
47
48 DAVIX_DIR* d = pos.opendir(&p, argv[1], &tmp_err);
49
50 if(d){
51 struct dirent * dir = NULL;
52 int n= 0;
53 do{
54 dir= pos.readdir(d, &tmp_err);
55 if(dir)
56 std::cout << "N° " << n <<" file : " << dir->d_name << std::endl;
57 n++;
58 }while(dir!= NULL && max_read > n);
59 if(dir == NULL){
60 std::cout << " Normal end of the directory, too little directory, error in the test " << std::endl;
61 return -3;
62 }
63 }
64
65 pos.closedir(d, NULL);
66 if(tmp_err){
67 std::cout << " listing directory error "<< tmp_err->getErrMsg() << std::endl;
68 return -1;
69 }
70 return 0;
71 }
72
73