GCC Code Coverage Report


Directory: cvmfs/
File: cvmfs/shortstring.cc
Date: 2025-08-31 02:39:21
Exec Total Coverage
Lines: 29 29 100.0%
Branches: 24 26 92.3%

Line Branch Exec Source
1 /**
2 * This file is part of the CernVM File System.
3 *
4 * Some common functions.
5 */
6
7
8 #include "shortstring.h"
9
10 #ifdef CVMFS_NAMESPACE_GUARD
11 namespace CVMFS_NAMESPACE_GUARD {
12 #endif
13
14 49444 PathString GetParentPath(const PathString &path) {
15 49444 const int length = static_cast<int>(path.GetLength());
16
2/2
✓ Branch 0 taken 25 times.
✓ Branch 1 taken 49419 times.
49444 if (length == 0)
17 25 return path;
18 49419 const char *chars = path.GetChars();
19
20
2/2
✓ Branch 0 taken 194508 times.
✓ Branch 1 taken 25 times.
194533 for (int i = length - 1; i >= 0; --i) {
21
2/2
✓ Branch 0 taken 49394 times.
✓ Branch 1 taken 145114 times.
194508 if (chars[i] == '/')
22 49394 return PathString(chars, i);
23 }
24
25 25 return path;
26 }
27
28 117 NameString GetFileName(const PathString &path) {
29 117 NameString name;
30 117 const int length = static_cast<int>(path.GetLength());
31 117 const char *chars = path.GetChars();
32
33 int i;
34
2/2
✓ Branch 0 taken 468 times.
✓ Branch 1 taken 35 times.
503 for (i = length - 1; i >= 0; --i) {
35
2/2
✓ Branch 0 taken 82 times.
✓ Branch 1 taken 386 times.
468 if (chars[i] == '/')
36 82 break;
37 }
38 117 i++;
39
2/2
✓ Branch 0 taken 82 times.
✓ Branch 1 taken 35 times.
117 if (i < length) {
40
1/2
✓ Branch 1 taken 82 times.
✗ Branch 2 not taken.
82 name.Append(chars + i, length - i);
41 }
42
43 117 return name;
44 }
45
46
47 1707 bool IsSubPath(const PathString &parent, const PathString &path) {
48 // If parent is "", then any path is a subpath
49
2/2
✓ Branch 1 taken 1689 times.
✓ Branch 2 taken 18 times.
1707 if (parent.GetLength() == 0) {
50 1689 return true;
51 }
52
53 // If the parent string is the prefix of the path string and either
54 // the strings are identical or the separator character is a "/",
55 // then the path is a subpath
56 18 if (path.StartsWith(parent)
57
6/6
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 9 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 6 times.
✓ Branch 7 taken 12 times.
24 && ((path.GetLength() == parent.GetLength())
58
2/2
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 3 times.
6 || (path.GetChars()[parent.GetLength()] == '/')
59
1/2
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 || (path.GetChars()[parent.GetLength() - 1] == '/'))) {
60 6 return true;
61 }
62
63 12 return false;
64 }
65
66 #ifdef CVMFS_NAMESPACE_GUARD
67 } // namespace CVMFS_NAMESPACE_GUARD
68 #endif
69