diff options
author | Tomasz Wasilczyk <twasilczyk@google.com> | 2023-09-08 19:59:48 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-09-08 19:59:48 +0000 |
commit | b2b037d9f05eaef2c09fdd8ec905d75dc7ac2644 (patch) | |
tree | 77f9394715d6db9d327e8b1bd22ec82db5f939b3 /libutils | |
parent | 9cbae9d75bcb531a12d0a5b23088f396091690cd (diff) | |
parent | 4b6a7c3940bc6d5e89e15179d8d49600e6dd4857 (diff) | |
download | core-b2b037d9f05eaef2c09fdd8ec905d75dc7ac2644.tar.gz |
Merge "Revert "Revert "Drop all path-related methods from android::String8""" into main
Diffstat (limited to 'libutils')
-rw-r--r-- | libutils/String8.cpp | 108 | ||||
-rw-r--r-- | libutils/String8_fuzz.cpp | 24 | ||||
-rw-r--r-- | libutils/abi-dumps/arm64/source-based/libutils.so.lsdump | 88 | ||||
-rw-r--r-- | libutils/abi-dumps/arm_arm64/source-based/libutils.so.lsdump | 88 | ||||
-rw-r--r-- | libutils/include/utils/String8.h | 75 |
5 files changed, 8 insertions, 375 deletions
diff --git a/libutils/String8.cpp b/libutils/String8.cpp index 2b72847e5..4301f0ea3 100644 --- a/libutils/String8.cpp +++ b/libutils/String8.cpp @@ -430,31 +430,6 @@ void String8::toLower() // --------------------------------------------------------------------------- // Path functions -static void setPathName(String8& s, const char* name) { - size_t len = strlen(name); - char* buf = s.lockBuffer(len); - - memcpy(buf, name, len); - - // remove trailing path separator, if present - if (len > 0 && buf[len - 1] == OS_PATH_SEPARATOR) len--; - buf[len] = '\0'; - - s.unlockBuffer(len); -} - -String8 String8::getPathLeaf(void) const -{ - const char* cp; - const char*const buf = mString; - - cp = strrchr(buf, OS_PATH_SEPARATOR); - if (cp == nullptr) - return String8(*this); - else - return String8(cp+1); -} - String8 String8::getPathDir(void) const { const char* cp; @@ -467,40 +442,14 @@ String8 String8::getPathDir(void) const return String8(str, cp - str); } -String8 String8::walkPath(String8* outRemains) const -{ - const char* cp; - const char*const str = mString; - const char* buf = str; - - cp = strchr(buf, OS_PATH_SEPARATOR); - if (cp == buf) { - // don't include a leading '/'. - buf = buf+1; - cp = strchr(buf, OS_PATH_SEPARATOR); - } - - if (cp == nullptr) { - String8 res = buf != str ? String8(buf) : *this; - if (outRemains) *outRemains = String8(""); - return res; - } - - String8 res(buf, cp-buf); - if (outRemains) *outRemains = String8(cp+1); - return res; -} - /* * Helper function for finding the start of an extension in a pathname. * * Returns a pointer inside mString, or NULL if no extension was found. */ -char* String8::find_extension(void) const -{ +static const char* find_extension(const char* str) { const char* lastSlash; const char* lastDot; - const char* const str = mString; // only look at the filename lastSlash = strrchr(str, OS_PATH_SEPARATOR); @@ -515,67 +464,16 @@ char* String8::find_extension(void) const return nullptr; // looks good, ship it - return const_cast<char*>(lastDot); + return lastDot; } String8 String8::getPathExtension(void) const { - char* ext; - - ext = find_extension(); + auto ext = find_extension(mString); if (ext != nullptr) return String8(ext); else return String8(""); } -String8 String8::getBasePath(void) const -{ - char* ext; - const char* const str = mString; - - ext = find_extension(); - if (ext == nullptr) - return String8(*this); - else - return String8(str, ext - str); -} - -String8& String8::appendPath(const char* name) -{ - // TODO: The test below will fail for Win32 paths. Fix later or ignore. - if (name[0] != OS_PATH_SEPARATOR) { - if (*name == '\0') { - // nothing to do - return *this; - } - - size_t len = length(); - if (len == 0) { - // no existing filename, just use the new one - setPathName(*this, name); - return *this; - } - - // make room for oldPath + '/' + newPath - int newlen = strlen(name); - - char* buf = lockBuffer(len+1+newlen); - - // insert a '/' if needed - if (buf[len-1] != OS_PATH_SEPARATOR) - buf[len++] = OS_PATH_SEPARATOR; - - memcpy(buf+len, name, newlen+1); - len += newlen; - - unlockBuffer(len); - - return *this; - } else { - setPathName(*this, name); - return *this; - } -} - }; // namespace android diff --git a/libutils/String8_fuzz.cpp b/libutils/String8_fuzz.cpp index 6f7a54f9f..cbce05058 100644 --- a/libutils/String8_fuzz.cpp +++ b/libutils/String8_fuzz.cpp @@ -68,30 +68,6 @@ std::vector<std::function<void(FuzzedDataProvider*, android::String8*, android:: int start_index = dataProvider->ConsumeIntegralInRange<int>(0, str1->size()); str1->find(str2->c_str(), start_index); }, - - // Path handling - [](FuzzedDataProvider*, android::String8* str1, android::String8*) -> void { - str1->getBasePath(); - }, - [](FuzzedDataProvider*, android::String8* str1, android::String8*) -> void { - str1->getPathExtension(); - }, - [](FuzzedDataProvider*, android::String8* str1, android::String8*) -> void { - str1->getPathLeaf(); - }, - [](FuzzedDataProvider*, android::String8* str1, android::String8*) -> void { - str1->getPathDir(); - }, - [](FuzzedDataProvider*, android::String8* str1, android::String8*) -> void { - std::shared_ptr<android::String8> path_out_str = - std::make_shared<android::String8>(); - str1->walkPath(path_out_str.get()); - path_out_str->clear(); - }, - [](FuzzedDataProvider* dataProvider, android::String8* str1, - android::String8*) -> void { - str1->appendPath(dataProvider->ConsumeBytesWithTerminator<char>(5).data()); - }, }; void fuzzFormat(FuzzedDataProvider* dataProvider, android::String8* str1, bool shouldAppend) { diff --git a/libutils/abi-dumps/arm64/source-based/libutils.so.lsdump b/libutils/abi-dumps/arm64/source-based/libutils.so.lsdump index 46baddecd..8881b44eb 100644 --- a/libutils/abi-dumps/arm64/source-based/libutils.so.lsdump +++ b/libutils/abi-dumps/arm64/source-based/libutils.so.lsdump @@ -704,9 +704,6 @@ "name" : "_ZN7android7RefBaseD2Ev" }, { - "name" : "_ZN7android7String810appendPathEPKc" - }, - { "name" : "_ZN7android7String810lockBufferEm" }, { @@ -1145,15 +1142,6 @@ "name" : "_ZNK7android7String810getPathDirEv" }, { - "name" : "_ZNK7android7String811getBasePathEv" - }, - { - "name" : "_ZNK7android7String811getPathLeafEv" - }, - { - "name" : "_ZNK7android7String814find_extensionEv" - }, - { "name" : "_ZNK7android7String816getPathExtensionEv" }, { @@ -1163,9 +1151,6 @@ "name" : "_ZNK7android7String86lengthEv" }, { - "name" : "_ZNK7android7String88walkPathEPS0_" - }, - { "name" : "_ZNK7android8String1610startsWithEPKDs" }, { @@ -6809,22 +6794,6 @@ "source_file" : "system/core/libutils/include/utils/RefBase.h" }, { - "function_name" : "android::String8::appendPath", - "linker_set_key" : "_ZN7android7String810appendPathEPKc", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPN7android7String8E" - }, - { - "referenced_type" : "_ZTIPKc" - } - ], - "return_type" : "_ZTIRN7android7String8E", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { "function_name" : "android::String8::lockBuffer", "linker_set_key" : "_ZN7android7String810lockBufferEm", "parameters" : @@ -9104,6 +9073,7 @@ "source_file" : "system/core/libutils/include/utils/RefBase.h" }, { + "access" : "private", "function_name" : "android::String8::getPathDir", "linker_set_key" : "_ZNK7android7String810getPathDirEv", "parameters" : @@ -9117,46 +9087,7 @@ "source_file" : "system/core/libutils/include/utils/String8.h" }, { - "function_name" : "android::String8::getBasePath", - "linker_set_key" : "_ZNK7android7String811getBasePathEv", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPKN7android7String8E" - } - ], - "return_type" : "_ZTIN7android7String8E", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { - "function_name" : "android::String8::getPathLeaf", - "linker_set_key" : "_ZNK7android7String811getPathLeafEv", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPKN7android7String8E" - } - ], - "return_type" : "_ZTIN7android7String8E", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { "access" : "private", - "function_name" : "android::String8::find_extension", - "linker_set_key" : "_ZNK7android7String814find_extensionEv", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPKN7android7String8E" - } - ], - "return_type" : "_ZTIPc", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { "function_name" : "android::String8::getPathExtension", "linker_set_key" : "_ZNK7android7String816getPathExtensionEv", "parameters" : @@ -9203,23 +9134,6 @@ "source_file" : "system/core/libutils/include/utils/String8.h" }, { - "function_name" : "android::String8::walkPath", - "linker_set_key" : "_ZNK7android7String88walkPathEPS0_", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPKN7android7String8E" - }, - { - "default_arg" : true, - "referenced_type" : "_ZTIPN7android7String8E" - } - ], - "return_type" : "_ZTIN7android7String8E", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { "function_name" : "android::String16::startsWith", "linker_set_key" : "_ZNK7android8String1610startsWithEPKDs", "parameters" : diff --git a/libutils/abi-dumps/arm_arm64/source-based/libutils.so.lsdump b/libutils/abi-dumps/arm_arm64/source-based/libutils.so.lsdump index 219c76665..e8236ea5b 100644 --- a/libutils/abi-dumps/arm_arm64/source-based/libutils.so.lsdump +++ b/libutils/abi-dumps/arm_arm64/source-based/libutils.so.lsdump @@ -704,9 +704,6 @@ "name" : "_ZN7android7RefBaseD2Ev" }, { - "name" : "_ZN7android7String810appendPathEPKc" - }, - { "name" : "_ZN7android7String810lockBufferEj" }, { @@ -1145,15 +1142,6 @@ "name" : "_ZNK7android7String810getPathDirEv" }, { - "name" : "_ZNK7android7String811getBasePathEv" - }, - { - "name" : "_ZNK7android7String811getPathLeafEv" - }, - { - "name" : "_ZNK7android7String814find_extensionEv" - }, - { "name" : "_ZNK7android7String816getPathExtensionEv" }, { @@ -1163,9 +1151,6 @@ "name" : "_ZNK7android7String86lengthEv" }, { - "name" : "_ZNK7android7String88walkPathEPS0_" - }, - { "name" : "_ZNK7android8String1610startsWithEPKDs" }, { @@ -6805,22 +6790,6 @@ "source_file" : "system/core/libutils/include/utils/RefBase.h" }, { - "function_name" : "android::String8::appendPath", - "linker_set_key" : "_ZN7android7String810appendPathEPKc", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPN7android7String8E" - }, - { - "referenced_type" : "_ZTIPKc" - } - ], - "return_type" : "_ZTIRN7android7String8E", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { "function_name" : "android::String8::lockBuffer", "linker_set_key" : "_ZN7android7String810lockBufferEj", "parameters" : @@ -9100,6 +9069,7 @@ "source_file" : "system/core/libutils/include/utils/RefBase.h" }, { + "access" : "private", "function_name" : "android::String8::getPathDir", "linker_set_key" : "_ZNK7android7String810getPathDirEv", "parameters" : @@ -9113,46 +9083,7 @@ "source_file" : "system/core/libutils/include/utils/String8.h" }, { - "function_name" : "android::String8::getBasePath", - "linker_set_key" : "_ZNK7android7String811getBasePathEv", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPKN7android7String8E" - } - ], - "return_type" : "_ZTIN7android7String8E", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { - "function_name" : "android::String8::getPathLeaf", - "linker_set_key" : "_ZNK7android7String811getPathLeafEv", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPKN7android7String8E" - } - ], - "return_type" : "_ZTIN7android7String8E", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { "access" : "private", - "function_name" : "android::String8::find_extension", - "linker_set_key" : "_ZNK7android7String814find_extensionEv", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPKN7android7String8E" - } - ], - "return_type" : "_ZTIPc", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { "function_name" : "android::String8::getPathExtension", "linker_set_key" : "_ZNK7android7String816getPathExtensionEv", "parameters" : @@ -9199,23 +9130,6 @@ "source_file" : "system/core/libutils/include/utils/String8.h" }, { - "function_name" : "android::String8::walkPath", - "linker_set_key" : "_ZNK7android7String88walkPathEPS0_", - "parameters" : - [ - { - "is_this_ptr" : true, - "referenced_type" : "_ZTIPKN7android7String8E" - }, - { - "default_arg" : true, - "referenced_type" : "_ZTIPN7android7String8E" - } - ], - "return_type" : "_ZTIN7android7String8E", - "source_file" : "system/core/libutils/include/utils/String8.h" - }, - { "function_name" : "android::String16::startsWith", "linker_set_key" : "_ZNK7android8String1610startsWithEPKDs", "parameters" : diff --git a/libutils/include/utils/String8.h b/libutils/include/utils/String8.h index 2a3d679d0..928e943b9 100644 --- a/libutils/include/utils/String8.h +++ b/libutils/include/utils/String8.h @@ -126,80 +126,11 @@ public: void toLower(); - - /* - * These methods operate on the string as if it were a path name. - */ - - /* - * Get just the filename component. - * - * "/tmp/foo/bar.c" --> "bar.c" - */ - String8 getPathLeaf(void) const; - - /* - * Remove the last (file name) component, leaving just the directory - * name. - * - * "/tmp/foo/bar.c" --> "/tmp/foo" - * "/tmp" --> "" // ????? shouldn't this be "/" ???? XXX - * "bar.c" --> "" - */ - String8 getPathDir(void) const; - - /* - * Retrieve the front (root dir) component. Optionally also return the - * remaining components. - * - * "/tmp/foo/bar.c" --> "tmp" (remain = "foo/bar.c") - * "/tmp" --> "tmp" (remain = "") - * "bar.c" --> "bar.c" (remain = "") - */ - String8 walkPath(String8* outRemains = nullptr) const; - - /* - * Return the filename extension. This is the last '.' and any number - * of characters that follow it. The '.' is included in case we - * decide to expand our definition of what constitutes an extension. - * - * "/tmp/foo/bar.c" --> ".c" - * "/tmp" --> "" - * "/tmp/foo.bar/baz" --> "" - * "foo.jpeg" --> ".jpeg" - * "foo." --> "" - */ - String8 getPathExtension(void) const; - - /* - * Return the path without the extension. Rules for what constitutes - * an extension are described in the comment for getPathExtension(). - * - * "/tmp/foo/bar.c" --> "/tmp/foo/bar" - */ - String8 getBasePath(void) const; - - /* - * Add a component to the pathname. We guarantee that there is - * exactly one path separator between the old path and the new. - * If there is no existing name, we just copy the new name in. - * - * If leaf is a fully qualified path (i.e. starts with '/', it - * replaces whatever was there before. - */ - String8& appendPath(const char* leaf); - String8& appendPath(const String8& leaf) { return appendPath(leaf.c_str()); } - - /* - * Like appendPath(), but does not affect this string. Returns a new one instead. - */ - String8 appendPathCopy(const char* leaf) const - { String8 p(*this); p.appendPath(leaf); return p; } - String8 appendPathCopy(const String8& leaf) const { return appendPathCopy(leaf.c_str()); } - private: + String8 getPathDir(void) const; + String8 getPathExtension(void) const; + status_t real_append(const char* other, size_t numChars); - char* find_extension(void) const; const char* mString; }; |