Revert "Remove unused String8::setPathName."
This reverts commit c214426e0ce5f38aed925d24b1f3ec43aab2fd55.
Reason for revert: This is not unused; broke build internally
Change-Id: I18e8b7954256ae015ad32743fa6a75850b00913e
diff --git a/libutils/String8.cpp b/libutils/String8.cpp
index 8511da9..195e122 100644
--- a/libutils/String8.cpp
+++ b/libutils/String8.cpp
@@ -429,17 +429,24 @@
// ---------------------------------------------------------------------------
// Path functions
-static void setPathName(String8& s, const char* name) {
- size_t len = strlen(name);
- char* buf = s.lockBuffer(len);
+void String8::setPathName(const char* name)
+{
+ setPathName(name, strlen(name));
+}
+
+void String8::setPathName(const char* name, size_t len)
+{
+ char* buf = lockBuffer(len);
memcpy(buf, name, len);
// remove trailing path separator, if present
- if (len > 0 && buf[len - 1] == OS_PATH_SEPARATOR) len--;
+ if (len > 0 && buf[len-1] == OS_PATH_SEPARATOR)
+ len--;
+
buf[len] = '\0';
- s.unlockBuffer(len);
+ unlockBuffer(len);
}
String8 String8::getPathLeaf(void) const
@@ -552,7 +559,7 @@
size_t len = length();
if (len == 0) {
// no existing filename, just use the new one
- setPathName(*this, name);
+ setPathName(name);
return *this;
}
@@ -572,7 +579,7 @@
return *this;
} else {
- setPathName(*this, name);
+ setPathName(name);
return *this;
}
}
diff --git a/libutils/String8_fuzz.cpp b/libutils/String8_fuzz.cpp
index faf49b6..a45d675 100644
--- a/libutils/String8_fuzz.cpp
+++ b/libutils/String8_fuzz.cpp
@@ -91,6 +91,10 @@
},
[](FuzzedDataProvider* dataProvider, android::String8* str1,
android::String8*) -> void {
+ str1->setPathName(dataProvider->ConsumeBytesWithTerminator<char>(5).data());
+ },
+ [](FuzzedDataProvider* dataProvider, android::String8* str1,
+ android::String8*) -> void {
str1->appendPath(dataProvider->ConsumeBytesWithTerminator<char>(5).data());
},
};
diff --git a/libutils/include/utils/String8.h b/libutils/include/utils/String8.h
index 8b2dcf9..cee5dc6 100644
--- a/libutils/include/utils/String8.h
+++ b/libutils/include/utils/String8.h
@@ -137,6 +137,14 @@
*/
/*
+ * Set the filename field to a specific value.
+ *
+ * Normalizes the filename, removing a trailing '/' if present.
+ */
+ void setPathName(const char* name);
+ void setPathName(const char* name, size_t numChars);
+
+ /*
* Get just the filename component.
*
* "/tmp/foo/bar.c" --> "bar.c"