Directory: | ./ |
---|---|
File: | tmp_project/PhoenixOptionParser/src/path_completion.cpp |
Date: | 2025-03-14 11:56:07 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 68 | 71 | 95.8% |
Branches: | 117 | 141 | 83.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | /*************************************** | ||
2 | Auteur : Pierre Aubert | ||
3 | Mail : pierre.aubert@lapp.in2p3.fr | ||
4 | Licence : CeCILL-C | ||
5 | ****************************************/ | ||
6 | |||
7 | #include <dirent.h> | ||
8 | |||
9 | #include "path_completion.h" | ||
10 | |||
11 | ///Complete the path directory | ||
12 | /** @param pathDir : path of the directory | ||
13 | * @return completed directory | ||
14 | */ | ||
15 | 3 | PPath completePathDir(const PPath & pathDir){ | |
16 |
1/4✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
|
3 | if(pathDir == ""){return PString(".");} |
17 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
3 | else if(pathDir[0] == '/'){return pathDir;} |
18 | ✗ | else if(pathDir.isSameBegining("./")){return pathDir;} | |
19 | ✗ | else{return PPath(PString("./") + pathDir);} | |
20 | } | ||
21 | |||
22 | ///Complete the path directory with a prefix | ||
23 | /** @param pathDir : path of the directory | ||
24 | * @return completed directory | ||
25 | */ | ||
26 | 3 | PPath prefixPathDir(const PPath & pathDir){ | |
27 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
|
3 | if(pathDir == ""){return pathDir;} |
28 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
|
3 | else if(pathDir[pathDir.size() - 1lu] == '/'){return pathDir;} |
29 |
4/5✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 3 times.
✓ Branch 9 taken 3 times.
✓ Branch 12 taken 3 times.
|
3 | else if(pathDir[pathDir.size() - 1lu] != '/'){return PPath(pathDir + PString("/"));} |
30 | ✗ | else{return pathDir;} | |
31 | } | ||
32 | |||
33 | ///Return all path/files which match the basePath | ||
34 | /** @param basePath : incomming path | ||
35 | * @return all path/files which match the basePath | ||
36 | */ | ||
37 | 5 | PPath path_completion_all(const PPath & basePath){ | |
38 | // std::cerr << "path_completion_all : basePath = '"<<basePath<<"'" << std::endl; | ||
39 |
4/4✓ Branch 1 taken 1 times.
✓ Branch 2 taken 4 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
|
6 | if(basePath == ""){return PString("./");} |
40 |
5/5✓ Branch 1 taken 4 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 3 times.
✓ Branch 6 taken 1 times.
✓ Branch 9 taken 1 times.
|
5 | if(basePath.isFileExist()){return PString("");} |
41 | |||
42 |
2/2✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
|
3 | PPath listMatchingPath(""); |
43 |
3/3✓ Branch 1 taken 3 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1 times.
|
3 | if(basePath.isDirectoryExist()){ |
44 |
1/1✓ Branch 1 taken 2 times.
|
2 | PPath completedPathDir(completePathDir(basePath)); |
45 |
1/1✓ Branch 1 taken 2 times.
|
2 | PPath prefixPath(prefixPathDir(basePath)); |
46 |
1/1✓ Branch 2 taken 2 times.
|
2 | DIR * dp = opendir(completedPathDir.c_str()); |
47 |
1/1✓ Branch 1 taken 2 times.
|
2 | dirent * dptr = readdir(dp); |
48 |
2/2✓ Branch 0 taken 7 times.
✓ Branch 1 taken 2 times.
|
9 | while(NULL != dptr){ |
49 |
2/2✓ Branch 1 taken 7 times.
✓ Branch 4 taken 7 times.
|
7 | PPath pathName(dptr->d_name); |
50 |
6/6✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 4 times.
|
7 | if(pathName != "." && pathName != ".."){ |
51 |
4/4✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
✓ Branch 7 taken 3 times.
✓ Branch 10 taken 3 times.
|
3 | listMatchingPath += prefixPath + pathName + PString("\n"); |
52 | } | ||
53 |
1/1✓ Branch 1 taken 7 times.
|
7 | dptr = readdir(dp); |
54 | 7 | } | |
55 |
1/1✓ Branch 1 taken 2 times.
|
2 | closedir(dp); |
56 | 2 | }else{ | |
57 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | PPath baseDir(basePath.getParentDirectory()), startNewPath(basePath.getFileName()); |
58 |
1/1✓ Branch 1 taken 1 times.
|
1 | PPath completedPathDir(completePathDir(baseDir)); |
59 |
1/1✓ Branch 1 taken 1 times.
|
1 | PPath prefixPath(prefixPathDir(baseDir)); |
60 |
1/1✓ Branch 2 taken 1 times.
|
1 | DIR * dp = opendir(completedPathDir.c_str()); |
61 | |||
62 |
1/1✓ Branch 1 taken 1 times.
|
1 | dirent * dptr = readdir(dp); |
63 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
|
4 | while(NULL != dptr){ |
64 |
2/2✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
|
3 | PPath pathName(dptr->d_name); |
65 |
6/6✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 2 times.
|
3 | if(pathName != "." && pathName != ".."){ |
66 |
2/3✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | if(pathName.isSameBegining(startNewPath)){ |
67 |
4/4✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
|
1 | listMatchingPath += prefixPath + pathName + PString("\n"); |
68 | } | ||
69 | } | ||
70 |
1/1✓ Branch 1 taken 3 times.
|
3 | dptr = readdir(dp); |
71 | 3 | } | |
72 | |||
73 |
1/1✓ Branch 1 taken 1 times.
|
1 | closedir(dp); |
74 | 1 | } | |
75 | // std::cerr << "path_completion_all : listMatchingPath = '"<<listMatchingPath<<"'" << std::endl; | ||
76 |
1/1✓ Branch 1 taken 3 times.
|
3 | return listMatchingPath; |
77 | 3 | } | |
78 | |||
79 | ///Return all directories only which match the basePath | ||
80 | /** @param basePath : incomming path | ||
81 | * @return all directories which match the basePath | ||
82 | */ | ||
83 | 2 | PPath path_completion_dirOnly(const PPath & basePath){ | |
84 |
1/6✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | if(basePath == ""){return PString("./");} |
85 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
|
2 | PPath listMatchingPath(""); |
86 |
3/3✓ Branch 1 taken 2 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
|
2 | if(basePath.isDirectoryExist()){ |
87 |
1/1✓ Branch 2 taken 1 times.
|
1 | DIR * dp = opendir(basePath.c_str()); |
88 |
1/1✓ Branch 1 taken 1 times.
|
1 | dirent * dptr = readdir(dp); |
89 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | while(NULL != dptr){ |
90 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
|
4 | if(dptr->d_type == DT_DIR){ //We search for directory only |
91 |
2/2✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
|
3 | PPath pathName(dptr->d_name); |
92 |
6/6✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 2 times.
|
3 | if(pathName != "." && pathName != ".."){ |
93 |
4/4✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
|
1 | listMatchingPath += basePath / pathName + PString("\n"); |
94 | } | ||
95 | 3 | } | |
96 |
1/1✓ Branch 1 taken 4 times.
|
4 | dptr = readdir(dp); |
97 | } | ||
98 | }else{ | ||
99 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
|
1 | PPath baseDir(basePath.getParentDirectory()), startNewPath(basePath.getFileName()); |
100 |
1/1✓ Branch 2 taken 1 times.
|
1 | DIR * dp = opendir(baseDir.c_str()); |
101 | |||
102 |
1/1✓ Branch 1 taken 1 times.
|
1 | dirent * dptr = readdir(dp); |
103 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | while(NULL != dptr){ |
104 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
|
4 | if(dptr->d_type == DT_DIR){ //We search for directory only |
105 |
2/2✓ Branch 1 taken 3 times.
✓ Branch 4 taken 3 times.
|
3 | PPath pathName(dptr->d_name); |
106 |
6/6✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 2 times.
|
3 | if(pathName != "." && pathName != ".."){ |
107 |
2/3✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | if(pathName.isSameBegining(startNewPath)){ |
108 |
4/4✓ Branch 1 taken 1 times.
✓ Branch 4 taken 1 times.
✓ Branch 7 taken 1 times.
✓ Branch 10 taken 1 times.
|
1 | listMatchingPath += baseDir / pathName + PString("\n"); |
109 | } | ||
110 | } | ||
111 | 3 | } | |
112 |
1/1✓ Branch 1 taken 4 times.
|
4 | dptr = readdir(dp); |
113 | } | ||
114 | |||
115 |
1/1✓ Branch 1 taken 1 times.
|
1 | closedir(dp); |
116 | 1 | } | |
117 |
1/1✓ Branch 1 taken 2 times.
|
2 | return listMatchingPath; |
118 | 2 | } | |
119 | |||
120 | |||
121 |