Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
731d908c
Commit
731d908c
authored
May 28, 2020
by
Derek Mauro
Browse files
Merge pull request #2677 from IYP-Programer-Yeah:fix-file-path-normalize-function
PiperOrigin-RevId: 312486861
parents
99ea9ca3
c09fbb23
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
12 additions
and
24 deletions
+12
-24
googletest/src/gtest-filepath.cc
googletest/src/gtest-filepath.cc
+12
-24
No files found.
googletest/src/gtest-filepath.cc
View file @
731d908c
...
...
@@ -349,33 +349,21 @@ FilePath FilePath::RemoveTrailingPathSeparator() const {
// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
// redundancies that might be in a pathname involving "." or "..".
void
FilePath
::
Normalize
()
{
if
(
pathname_
.
c_str
()
==
nullptr
)
{
pathname_
=
""
;
return
;
}
const
char
*
src
=
pathname_
.
c_str
();
char
*
const
dest
=
new
char
[
pathname_
.
length
()
+
1
];
char
*
dest_ptr
=
dest
;
memset
(
dest_ptr
,
0
,
pathname_
.
length
()
+
1
);
while
(
*
src
!=
'\0'
)
{
*
dest_ptr
=
*
src
;
if
(
!
IsPathSeparator
(
*
src
))
{
src
++
;
std
::
string
normalized_pathname
;
normalized_pathname
.
reserve
(
pathname_
.
length
());
for
(
const
char
character
:
pathname_
)
{
if
(
!
IsPathSeparator
(
character
))
{
normalized_pathname
.
push_back
(
character
);
}
else
if
(
normalized_pathname
.
empty
()
||
normalized_pathname
.
back
()
!=
kPathSeparator
)
{
normalized_pathname
.
push_back
(
kPathSeparator
);
}
else
{
#if GTEST_HAS_ALT_PATH_SEP_
if
(
*
dest_ptr
==
kAlternatePathSeparator
)
{
*
dest_ptr
=
kPathSeparator
;
}
#endif
while
(
IsPathSeparator
(
*
src
))
src
++
;
continue
;
}
dest_ptr
++
;
}
*
dest_ptr
=
'\0'
;
pathname_
=
dest
;
delete
[]
dest
;
pathname_
=
normalized_pathname
;
}
}
// namespace internal
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment