123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- From a8452dc7e80eb17572c7458e33a4f4d609e6a3da Mon Sep 17 00:00:00 2001
- From: Tuomas Tynkkynen <tuomas@tuxera.com>
- Date: Fri, 3 Jun 2016 23:03:51 +0300
- Subject: [PATCH] Extract a function for splitting a colon-separated string
- We're going to need this logic in another place, so make a function of
- this.
- [Upstream-commit: https://github.com/NixOS/patchelf/commit/2e3fdc2030c75c19df6fc2924083cfad53856562]
- Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
- ---
- src/patchelf.cc | 28 +++++++++++++++++++---------
- 1 file changed, 19 insertions(+), 9 deletions(-)
- diff --git a/src/patchelf.cc b/src/patchelf.cc
- index c870638..1d9a772 100644
- --- a/src/patchelf.cc
- +++ b/src/patchelf.cc
- @@ -57,6 +57,22 @@ unsigned char * contents = 0;
- #define ElfFileParamNames Elf_Ehdr, Elf_Phdr, Elf_Shdr, Elf_Addr, Elf_Off, Elf_Dyn, Elf_Sym
-
-
- +static vector<string> splitColonDelimitedString(const char * s){
- + vector<string> parts;
- + const char * pos = s;
- + while (*pos) {
- + const char * end = strchr(pos, ':');
- + if (!end) end = strchr(pos, 0);
- +
- + parts.push_back(string(pos, end - pos));
- + if (*end == ':') ++end;
- + pos = end;
- + }
- +
- + return parts;
- +}
- +
- +
- static unsigned int getPageSize(){
- return pageSize;
- }
- @@ -1093,15 +1109,9 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)
-
- newRPath = "";
-
- - char * pos = rpath;
- - while (*pos) {
- - char * end = strchr(pos, ':');
- - if (!end) end = strchr(pos, 0);
- -
- - /* Get the name of the directory. */
- - string dirName(pos, end - pos);
- - if (*end == ':') ++end;
- - pos = end;
- + vector<string> rpathDirs = splitColonDelimitedString(rpath);
- + for (vector<string>::iterator it = rpathDirs.begin(); it != rpathDirs.end(); ++it) {
- + const string & dirName = *it;
-
- /* Non-absolute entries are allowed (e.g., the special
- "$ORIGIN" hack). */
- --
- 1.9.1
|