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