Переглянути джерело

LibC: Add rindex() and index() APIs

These POSIX APIs are defined as mapping directly to
`strrchr` and `strchr` respectively.

These are needed for the latest version of the stress-ng port,
and also give us better POSIX compliance.
Brian Gianforcaro 3 роки тому
батько
коміт
fb8df01036
2 змінених файлів з 15 додано та 0 видалено
  1. 12 0
      Userland/Libraries/LibC/string.cpp
  2. 3 0
      Userland/Libraries/LibC/string.h

+ 12 - 0
Userland/Libraries/LibC/string.cpp

@@ -227,6 +227,12 @@ char* strchr(const char* str, int c)
     }
 }
 
+// https://pubs.opengroup.org/onlinepubs/9699959399/functions/index.html
+char* index(const char* str, int c)
+{
+    return strchr(str, c);
+}
+
 char* strchrnul(const char* str, int c)
 {
     char ch = c;
@@ -260,6 +266,12 @@ char* strrchr(const char* str, int ch)
     return last;
 }
 
+// https://pubs.opengroup.org/onlinepubs/9699959399/functions/rindex.html
+char* rindex(const char* str, int ch)
+{
+    return strrchr(str, ch);
+}
+
 // https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcat.html
 char* strcat(char* dest, const char* src)
 {

+ 3 - 0
Userland/Libraries/LibC/string.h

@@ -38,6 +38,9 @@ char* strchrnul(const char*, int c);
 char* strstr(const char* haystack, const char* needle);
 char* strrchr(const char*, int c);
 
+char* index(const char* str, int ch);
+char* rindex(const char* str, int ch);
+
 char* strcat(char* dest, const char* src);
 char* strncat(char* dest, const char* src, size_t);