At some point in the beginning of OSv the musl sources were copied to libc/ folder and then gradually removed in favor of the original copies in musl/src/ folder.
This patch removes another 15 files from libc/string/ which only differred by "__reserved" vs "restrict" keyword. The original musl sources have "restrict" keyword and their corresponding copies have "__reserved" keyword even though per this commit log 5cd0168fc566e5f7263b04948b4df6695d8ae721 they seem to have been copied "as is" from musl. Based on what I have researched the __restrict keyword is a GCC extension and predates "restrict" and it happens to have same effect on pointer optimization as the latter one. We also compile all C source files with "-std=gnu99" option which adds GCC extensions to c99. So all in all I think we can drop the difference and simply point to the original musl sources. This patch further eliminates unnecessary files in libc/ folder. Signed-off-by: Waldemar Kozaczuk <[email protected]> --- Makefile | 30 ++++++------ libc/string/strcat.c | 7 --- libc/string/strcpy.c | 16 ------- libc/string/strncat.c | 10 ---- libc/string/strncpy.c | 9 ---- libc/string/strtok.c | 13 ----- libc/string/swab.c | 13 ----- libc/string/wcpcpy.c | 6 --- libc/string/wcpncpy.c | 6 --- libc/string/wcscat.c | 7 --- libc/string/wcscpy.c | 8 ---- libc/string/wcsncat.c | 10 ---- libc/string/wcsncpy.c | 9 ---- libc/string/wcsstr.c | 108 ------------------------------------------ libc/string/wcstok.c | 12 ----- libc/string/wmemcpy.c | 9 ---- 16 files changed, 15 insertions(+), 258 deletions(-) delete mode 100644 libc/string/strcat.c delete mode 100644 libc/string/strcpy.c delete mode 100644 libc/string/strncat.c delete mode 100644 libc/string/strncpy.c delete mode 100644 libc/string/strtok.c delete mode 100644 libc/string/swab.c delete mode 100644 libc/string/wcpcpy.c delete mode 100644 libc/string/wcpncpy.c delete mode 100644 libc/string/wcscat.c delete mode 100644 libc/string/wcscpy.c delete mode 100644 libc/string/wcsncat.c delete mode 100644 libc/string/wcsncpy.c delete mode 100644 libc/string/wcsstr.c delete mode 100644 libc/string/wcstok.c delete mode 100644 libc/string/wmemcpy.c diff --git a/Makefile b/Makefile index 28f4f575..7c7c0489 100644 --- a/Makefile +++ b/Makefile @@ -1574,12 +1574,12 @@ libc += string/__stpcpy_chk.o libc += string/stpncpy.o musl += string/strcasecmp.o musl += string/strcasestr.o -libc += string/strcat.o +musl += string/strcat.o libc += string/__strcat_chk.o musl += string/strchr.o libc += string/strchrnul.o musl += string/strcmp.o -libc += string/strcpy.o +musl += string/strcpy.o libc += string/__strcpy_chk.o musl += string/strcspn.o musl += string/strdup.o @@ -1588,10 +1588,10 @@ libc += string/strlcat.o libc += string/strlcpy.o libc += string/strlen.o musl += string/strncasecmp.o -libc += string/strncat.o +musl += string/strncat.o libc += string/__strncat_chk.o musl += string/strncmp.o -libc += string/strncpy.o +musl += string/strncpy.o libc += string/__strncpy_chk.o libc += string/__strndup.o musl += string/strndup.o @@ -1603,37 +1603,37 @@ libc += string/stresep.o libc += string/strsignal.o musl += string/strspn.o musl += string/strstr.o -libc += string/strtok.o +musl += string/strtok.o libc += string/strtok_r.o musl += string/strverscmp.o -libc += string/swab.o -libc += string/wcpcpy.o -libc += string/wcpncpy.o +musl += string/swab.o +musl += string/wcpcpy.o +musl += string/wcpncpy.o musl += string/wcscasecmp.o musl += string/wcscasecmp_l.o -libc += string/wcscat.o +musl += string/wcscat.o musl += string/wcschr.o musl += string/wcscmp.o -libc += string/wcscpy.o +musl += string/wcscpy.o libc += string/__wcscpy_chk.o musl += string/wcscspn.o musl += string/wcsdup.o musl += string/wcslen.o musl += string/wcsncasecmp.o musl += string/wcsncasecmp_l.o -libc += string/wcsncat.o +musl += string/wcsncat.o musl += string/wcsncmp.o -libc += string/wcsncpy.o +musl += string/wcsncpy.o musl += string/wcsnlen.o musl += string/wcspbrk.o musl += string/wcsrchr.o musl += string/wcsspn.o -libc += string/wcsstr.o -libc += string/wcstok.o +musl += string/wcsstr.o +musl += string/wcstok.o musl += string/wcswcs.o musl += string/wmemchr.o musl += string/wmemcmp.o -libc += string/wmemcpy.o +musl += string/wmemcpy.o musl += string/wmemmove.o musl += string/wmemset.o diff --git a/libc/string/strcat.c b/libc/string/strcat.c deleted file mode 100644 index 43b7e254..00000000 --- a/libc/string/strcat.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <string.h> - -char *strcat(char *__restrict dest, const char *__restrict src) -{ - strcpy(dest + strlen(dest), src); - return dest; -} diff --git a/libc/string/strcpy.c b/libc/string/strcpy.c deleted file mode 100644 index 8488f6ee..00000000 --- a/libc/string/strcpy.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <string.h> - -char *__stpcpy(char *, const char *); - -char *strcpy(char *__restrict dest, const char *__restrict src) -{ -#if 1 - __stpcpy(dest, src); - return dest; -#else - const unsigned char *s = src; - unsigned char *d = dest; - while ((*d++ = *s++)); - return dest; -#endif -} diff --git a/libc/string/strncat.c b/libc/string/strncat.c deleted file mode 100644 index 6f8d8da8..00000000 --- a/libc/string/strncat.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <string.h> - -char *strncat(char *__restrict d, const char *__restrict s, size_t n) -{ - char *a = d; - d += strlen(d); - while (n && *s) n--, *d++ = *s++; - *d++ = 0; - return a; -} diff --git a/libc/string/strncpy.c b/libc/string/strncpy.c deleted file mode 100644 index f43d4d73..00000000 --- a/libc/string/strncpy.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <string.h> - -char *__stpncpy(char *, const char *, size_t); - -char *strncpy(char *__restrict d, const char *__restrict s, size_t n) -{ - __stpncpy(d, s, n); - return d; -} diff --git a/libc/string/strtok.c b/libc/string/strtok.c deleted file mode 100644 index e2205c09..00000000 --- a/libc/string/strtok.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <string.h> - -char *strtok(char *__restrict s, const char *__restrict sep) -{ - static char *p; - if (!s && !(s = p)) return NULL; - s += strspn(s, sep); - if (!*s) return p = 0; - p = s + strcspn(s, sep); - if (*p) *p++ = 0; - else p = 0; - return s; -} diff --git a/libc/string/swab.c b/libc/string/swab.c deleted file mode 100644 index a4c9286d..00000000 --- a/libc/string/swab.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <unistd.h> - -void swab(const void *__restrict _src, void *__restrict _dest, ssize_t n) -{ - const char *src = _src; - char *dest = _dest; - for (; n>0; n-=2) { - dest[0] = src[1]; - dest[1] = src[0]; - dest += 2; - src += 2; - } -} diff --git a/libc/string/wcpcpy.c b/libc/string/wcpcpy.c deleted file mode 100644 index b1c20284..00000000 --- a/libc/string/wcpcpy.c +++ /dev/null @@ -1,6 +0,0 @@ -#include <wchar.h> - -wchar_t *wcpcpy(wchar_t *__restrict d, const wchar_t *__restrict s) -{ - return wcscpy(d, s) + wcslen(s); -} diff --git a/libc/string/wcpncpy.c b/libc/string/wcpncpy.c deleted file mode 100644 index f6d0add0..00000000 --- a/libc/string/wcpncpy.c +++ /dev/null @@ -1,6 +0,0 @@ -#include <wchar.h> - -wchar_t *wcpncpy(wchar_t *__restrict d, const wchar_t *__restrict s, size_t n) -{ - return wcsncpy(d, s, n) + wcsnlen(s, n); -} diff --git a/libc/string/wcscat.c b/libc/string/wcscat.c deleted file mode 100644 index 1c907db4..00000000 --- a/libc/string/wcscat.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <wchar.h> - -wchar_t *wcscat(wchar_t *__restrict dest, const wchar_t *__restrict src) -{ - wcscpy(dest + wcslen(dest), src); - return dest; -} diff --git a/libc/string/wcscpy.c b/libc/string/wcscpy.c deleted file mode 100644 index b09443a2..00000000 --- a/libc/string/wcscpy.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <wchar.h> - -wchar_t *wcscpy(wchar_t *__restrict d, const wchar_t *__restrict s) -{ - wchar_t *a = d; - while ((*d++ = *s++)); - return a; -} diff --git a/libc/string/wcsncat.c b/libc/string/wcsncat.c deleted file mode 100644 index 1ca0288d..00000000 --- a/libc/string/wcsncat.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <wchar.h> - -wchar_t *wcsncat(wchar_t *__restrict d, const wchar_t *__restrict s, size_t n) -{ - wchar_t *a = d; - d += wcslen(d); - while (n && *s) n--, *d++ = *s++; - *d++ = 0; - return a; -} diff --git a/libc/string/wcsncpy.c b/libc/string/wcsncpy.c deleted file mode 100644 index 55903637..00000000 --- a/libc/string/wcsncpy.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <wchar.h> - -wchar_t *wcsncpy(wchar_t *__restrict d, const wchar_t *__restrict s, size_t n) -{ - wchar_t *a = d; - while (n && *s) n--, *d++ = *s++; - wmemset(d, 0, n); - return a; -} diff --git a/libc/string/wcsstr.c b/libc/string/wcsstr.c deleted file mode 100644 index e0e8dffb..00000000 --- a/libc/string/wcsstr.c +++ /dev/null @@ -1,108 +0,0 @@ -#include <wchar.h> -#include <string.h> -#include <stdlib.h> -#include <stdint.h> - -#define MAX(a,b) ((a)>(b)?(a):(b)) -#define MIN(a,b) ((a)<(b)?(a):(b)) - -static wchar_t *twoway_wcsstr(const wchar_t *h, const wchar_t *n) -{ - const wchar_t *z; - size_t l, ip, jp, k, p, ms, p0, mem, mem0; - - /* Computing length of needle */ - for (l=0; n[l] && h[l]; l++); - if (n[l]) return 0; /* hit the end of h */ - - /* Compute maximal suffix */ - ip = -1; jp = 0; k = p = 1; - while (jp+k<l) { - if (n[ip+k] == n[jp+k]) { - if (k == p) { - jp += p; - k = 1; - } else k++; - } else if (n[ip+k] > n[jp+k]) { - jp += k; - k = 1; - p = jp - ip; - } else { - ip = jp++; - k = p = 1; - } - } - ms = ip; - p0 = p; - - /* And with the opposite comparison */ - ip = -1; jp = 0; k = p = 1; - while (jp+k<l) { - if (n[ip+k] == n[jp+k]) { - if (k == p) { - jp += p; - k = 1; - } else k++; - } else if (n[ip+k] < n[jp+k]) { - jp += k; - k = 1; - p = jp - ip; - } else { - ip = jp++; - k = p = 1; - } - } - if (ip+1 > ms+1) ms = ip; - else p = p0; - - /* Periodic needle? */ - if (wmemcmp(n, n+p, ms+1)) { - mem0 = 0; - p = MAX(ms, l-ms-1) + 1; - } else mem0 = l-p; - mem = 0; - - /* Initialize incremental end-of-haystack pointer */ - z = h; - - /* Search loop */ - for (;;) { - /* Update incremental end-of-haystack pointer */ - if (z-h < l) { - /* Fast estimate for MIN(l,63) */ - size_t grow = l | 63; - const wchar_t *z2 = wmemchr(z, 0, grow); - if (z2) { - z = z2; - if (z-h < l) return 0; - } else z += grow; - } - - /* Compare right half */ - for (k=MAX(ms+1,mem); n[k] && n[k] == h[k]; k++); - if (n[k]) { - h += k-ms; - mem = 0; - continue; - } - /* Compare left half */ - for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--); - if (k == mem) return (wchar_t *)h; - h += p; - mem = mem0; - } -} - -wchar_t *wcsstr(const wchar_t *__restrict h, const wchar_t *__restrict n) -{ - /* Return immediately on empty needle or haystack */ - if (!n[0]) return (wchar_t *)h; - if (!h[0]) return 0; - - /* Use faster algorithms for short needles */ - h = wcschr(h, *n); - if (!h || !n[1]) return (wchar_t *)h; - if (!h[1]) return 0; - - return twoway_wcsstr(h, n); -} diff --git a/libc/string/wcstok.c b/libc/string/wcstok.c deleted file mode 100644 index 15b07cd2..00000000 --- a/libc/string/wcstok.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <wchar.h> - -wchar_t *wcstok(wchar_t *__restrict s, const wchar_t *__restrict sep, wchar_t **__restrict p) -{ - if (!s && !(s = *p)) return NULL; - s += wcsspn(s, sep); - if (!*s) return *p = 0; - *p = s + wcscspn(s, sep); - if (**p) *(*p)++ = 0; - else *p = 0; - return s; -} diff --git a/libc/string/wmemcpy.c b/libc/string/wmemcpy.c deleted file mode 100644 index 79606cb8..00000000 --- a/libc/string/wmemcpy.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <string.h> -#include <wchar.h> - -wchar_t *wmemcpy(wchar_t *__restrict d, const wchar_t *__restrict s, size_t n) -{ - wchar_t *a = d; - while (n--) *d++ = *s++; - return a; -} -- 2.25.1 -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/20200727164350.10609-2-jwkozaczuk%40gmail.com.
