Correction to file remove utility
[ Merge of http://go/wvgerrit/84989 ] FileUtils::Remove() when used with wildcards would ignore a prefix specified before the asterisk and delete all files with the same extension. Fix proposed by broadcom. Bug: 120039689 Test: WV unit/integration tests Change-Id: Iddc6c6b1983c41b501b21f34626f56c0b74af6c8
This commit is contained in:
@@ -76,8 +76,11 @@ bool FileUtils::Remove(const std::string& path) {
|
||||
|
||||
DIR* dir;
|
||||
std::string dir_path = path.substr(0, delimiter_pos);
|
||||
std::string prepend =
|
||||
path.substr(delimiter_pos + 1, wildcard_pos - delimiter_pos - 1);
|
||||
if ((dir = opendir(dir_path.c_str())) == nullptr) {
|
||||
LOGW("File::Remove: directory open failed for wildcard");
|
||||
LOGW("File::Remove: directory open failed for wildcard: %d, %s", errno,
|
||||
strerror(errno));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -88,7 +91,9 @@ bool FileUtils::Remove(const std::string& path) {
|
||||
size_t filename_len = strlen(entry->d_name);
|
||||
if (filename_len > ext.size()) {
|
||||
if (strcmp(entry->d_name + filename_len - ext.size(), ext.c_str()) ==
|
||||
0) {
|
||||
0 &&
|
||||
!IsCurrentOrParentDirectory(entry->d_name) &&
|
||||
strncmp(entry->d_name, prepend.c_str(), prepend.size()) == 0) {
|
||||
std::string file_path_to_remove =
|
||||
dir_path + kDirectoryDelimiter + entry->d_name;
|
||||
if (!Remove(file_path_to_remove)) {
|
||||
|
||||
Reference in New Issue
Block a user