scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit 6b1309ac40e3f1842f42b5fbd995b40dbf8e3932
parent f22374d59ae47eaf74ad42b55b576a442c608517
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Thu, 30 Jun 2022 14:22:29 +0200

libc: Fix all the constness problems

The const warnings were ignored based in wrong assumptions about how
the C standard specifies the type qualifier behaviour related to
pointers.

Diffstat:
Minclude/bits/darwin/sys.h | 2+-
Minclude/bits/dragonfly/sys.h | 2+-
Minclude/bits/linux/sys.h | 2+-
Minclude/bits/netbsd/sys.h | 2+-
Minclude/bits/openbsd/sys.h | 2+-
Msrc/libc/arch/posix/getenv.c | 6+++---
Msrc/libc/arch/posix/system.c | 4++--
Msrc/libc/stdlib/bsearch.c | 2+-
Msrc/libc/stdlib/strtol.c | 4++--
Msrc/libc/stdlib/strtoll.c | 4++--
Msrc/libc/stdlib/strtoul.c | 4++--
Msrc/libc/stdlib/strtoull.c | 4++--
Msrc/libc/string/memchr.c | 2+-
Msrc/libc/string/strchr.c | 2+-
Msrc/libc/string/strpbrk.c | 2+-
Msrc/libc/string/strrchr.c | 2+-
Msrc/libc/string/strstr.c | 4++--
17 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/include/bits/darwin/sys.h b/include/bits/darwin/sys.h @@ -23,7 +23,7 @@ typedef int pid_t; struct sigaction; struct rusage; -extern int _execve(char *, char *[], char *[]); +extern int _execve(const char *, const char *[], const char *[]); extern int _fork(void); extern pid_t _getpid(void); extern int _kill(pid_t, int); diff --git a/include/bits/dragonfly/sys.h b/include/bits/dragonfly/sys.h @@ -23,7 +23,7 @@ typedef int pid_t; struct sigaction; struct rusage; -extern int _execve(char *, char *[], char *[]); +extern int _execve(const char *, const char *[], const char *[]); extern int _fork(void); extern pid_t _getpid(void); extern int _kill(pid_t, int); diff --git a/include/bits/linux/sys.h b/include/bits/linux/sys.h @@ -23,7 +23,7 @@ typedef int pid_t; struct sigaction; struct rusage; -extern int _execve(char *, char *[], char *[]); +extern int _execve(const char *, const char *[], const char *[]); extern int _fork(void); extern pid_t _getpid(void); extern int _kill(pid_t, int); diff --git a/include/bits/netbsd/sys.h b/include/bits/netbsd/sys.h @@ -23,7 +23,7 @@ typedef int pid_t; struct sigaction; struct rusage; -extern int _execve(char *, char *[], char *[]); +extern int _execve(const char *, const char *[], const char *[]); extern int _fork(void); extern pid_t _getpid(void); extern int _kill(pid_t, int); diff --git a/include/bits/openbsd/sys.h b/include/bits/openbsd/sys.h @@ -23,7 +23,7 @@ typedef int pid_t; struct sigaction; struct rusage; -extern int _execve(char *, char *[], char *[]); +extern int _execve(const char *, const char *[], const char *[]); extern int _fork(void); extern pid_t _getpid(void); extern int _kill(pid_t, int); diff --git a/src/libc/arch/posix/getenv.c b/src/libc/arch/posix/getenv.c @@ -3,17 +3,17 @@ #undef getenv -extern char **_environ; +extern const char **_environ; char * getenv(const char *name) { - char **p, *s; + const char **p, *s; size_t len = strlen(name); for (p = _environ; s = *p; ++p) { if (!strncmp(name, s, len) && s[len] == '=') - return s + len + 1; + return (char *) s + len + 1; } return NULL; } diff --git a/src/libc/arch/posix/system.c b/src/libc/arch/posix/system.c @@ -9,7 +9,7 @@ #undef system -extern char **_environ; +extern const char **_environ; int system(const char *cmd) @@ -24,7 +24,7 @@ system(const char *cmd) case -1: return -1; case 0: - _execve(SHELL, (char*[]) {"sh", "-c", cmd, NULL}, _environ); + _execve(SHELL, (const char*[]) {"sh", "-c", cmd, NULL}, _environ); _exit(127); default: while (_waitpid(pid, &st, 0) < 0 && errno == EINTR) diff --git a/src/libc/stdlib/bsearch.c b/src/libc/stdlib/bsearch.c @@ -7,7 +7,7 @@ bsearch(const void *key, const void *ary, size_t n, size_t size, { int t; size_t mid, low, high; - char *cur, *base = ary; + char *cur, *base = (char *) ary; low = 0; high = n - 1; diff --git a/src/libc/stdlib/strtol.c b/src/libc/stdlib/strtol.c @@ -9,11 +9,11 @@ #undef strtol long -strtol(const char * restrict s, char ** restrict end, int base) +strtol(const char * restrict ptr, char ** restrict end, int base) { int d, sign = -1; long n; - const char *t; + char *t, *s = (char *) ptr; if (end) *end = s; diff --git a/src/libc/stdlib/strtoll.c b/src/libc/stdlib/strtoll.c @@ -9,11 +9,11 @@ #undef strtoll long long -strtoll(const char * restrict s, char ** restrict end, int base) +strtoll(const char * restrict ptr, char ** restrict end, int base) { int d, sign = -1; long long n; - const char *t; + char *t, *s = (char *) ptr; if (end) *end = s; diff --git a/src/libc/stdlib/strtoul.c b/src/libc/stdlib/strtoul.c @@ -9,11 +9,11 @@ #undef strtoul unsigned long -strtoul(const char * restrict s, char ** restrict end, int base) +strtoul(const char * restrict ptr, char ** restrict end, int base) { int d, sign = 1; unsigned long n; - const char *t; + char *t, *s = (char *) ptr; if (end) *end = s; diff --git a/src/libc/stdlib/strtoull.c b/src/libc/stdlib/strtoull.c @@ -9,11 +9,11 @@ #undef strtoull unsigned long long -strtoull(const char * restrict s, char ** restrict end, int base) +strtoull(const char * restrict ptr, char ** restrict end, int base) { int d, sign = 1; unsigned long long n; - const char *t; + char *t, *s = (char *) ptr; if (end) *end = s; diff --git a/src/libc/string/memchr.c b/src/libc/string/memchr.c @@ -5,7 +5,7 @@ void * memchr(const void *s, int c, size_t n) { - const unsigned char *bp = s; + unsigned char *bp = (unsigned char *) s; while (n > 0 && *bp++ != c) --n; diff --git a/src/libc/string/strchr.c b/src/libc/string/strchr.c @@ -8,5 +8,5 @@ strchr(const char *s, int c) while (*s && *s != c) ++s; - return (*s == c) ? s : NULL; + return (*s == c) ? (char *) s : NULL; } diff --git a/src/libc/string/strpbrk.c b/src/libc/string/strpbrk.c @@ -16,5 +16,5 @@ strpbrk(const char *s1, const char *s2) while ((ch = *s) != 0 && !map[ch]) s++; - return (ch == '\0') ? NULL : s; + return (ch == '\0') ? NULL : (char *) s; } diff --git a/src/libc/string/strrchr.c b/src/libc/string/strrchr.c @@ -12,5 +12,5 @@ strrchr(const char *s, int c) while (t > s && *t != c) --t; - return (*t == c) ? t : NULL; + return (*t == c) ? (char *) t : NULL; } diff --git a/src/libc/string/strstr.c b/src/libc/string/strstr.c @@ -11,11 +11,11 @@ strstr(const char *s1, const char *s2) int len; if ((len = strlen(s2)) == 0) - return s1; + return (char *) s1; for (p = s1; p = strchr(p, c); ++p) { if (!strncmp(p, s2, len)) - return p; + return (char *) p; } return NULL;