From: Rich Felker Date: Fri, 7 Sep 2012 02:44:55 +0000 (-0400) Subject: use restrict everywhere it's required by c99 and/or posix 2008 X-Git-Tag: v0.9.5~57 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=400c5e5c8307a2ebe44ef1f203f5a15669f20347;p=oweals%2Fmusl.git use restrict everywhere it's required by c99 and/or posix 2008 to deal with the fact that the public headers may be used with pre-c99 compilers, __restrict is used in place of restrict, and defined appropriately for any supported compiler. we also avoid the form [restrict] since older versions of gcc rejected it due to a bug in the original c99 standard, and instead use the form *restrict. --- diff --git a/include/aio.h b/include/aio.h index 2edd5a2e..3e351348 100644 --- a/include/aio.h +++ b/include/aio.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #include #include @@ -46,7 +52,7 @@ int aio_cancel(int, struct aiocb *); int aio_suspend(const struct aiocb *const [], int, const struct timespec *); int aio_fsync(int, struct aiocb *); -int lio_listio(int, struct aiocb *const [], int, struct sigevent *); +int lio_listio(int, struct aiocb *__restrict const *__restrict, int, struct sigevent *__restrict); #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) #define aiocb64 aiocb diff --git a/include/arpa/inet.h b/include/arpa/inet.h index b604f60b..82e2ac1b 100644 --- a/include/arpa/inet.h +++ b/include/arpa/inet.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #include #include @@ -24,8 +30,8 @@ uint16_t ntohs(uint16_t); in_addr_t inet_addr (const char *); char *inet_ntoa (struct in_addr); -int inet_pton (int, const char *, void *); -const char *inet_ntop (int, const void *, char *, socklen_t); +int inet_pton (int, const char *__restrict, void *__restrict); +const char *inet_ntop (int, const void *__restrict, char *__restrict, socklen_t); int inet_aton (const char *, struct in_addr *); /* nonstandard but widely used */ diff --git a/include/dirent.h b/include/dirent.h index c19f7d58..b6261595 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_ino_t #define __NEED_off_t #ifdef _BSD_SOURCE @@ -30,7 +36,7 @@ int closedir(DIR *); DIR *fdopendir(int); DIR *opendir(const char *); struct dirent *readdir(DIR *); -int readdir_r(DIR *, struct dirent *, struct dirent **); +int readdir_r(DIR *__restrict, struct dirent *__restrict, struct dirent **__restrict); void rewinddir(DIR *); void seekdir(DIR *, long); long telldir(DIR *); diff --git a/include/dlfcn.h b/include/dlfcn.h index e98c8ca6..2e7d0283 100644 --- a/include/dlfcn.h +++ b/include/dlfcn.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define RTLD_LAZY 1 #define RTLD_NOW 2 #define RTLD_GLOBAL 256 @@ -16,7 +22,7 @@ extern "C" { int dlclose(void *); char *dlerror(void); void *dlopen(const char *, int); -void *dlsym(void *, const char *); +void *dlsym(void *__restrict, const char *__restrict); #ifdef _GNU_SOURCE typedef struct { diff --git a/include/glob.h b/include/glob.h index 376baa71..c49a2dea 100644 --- a/include/glob.h +++ b/include/glob.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_size_t #include @@ -17,7 +23,7 @@ typedef struct { void *__dummy2[5]; } glob_t; -int glob(const char *, int, int (*)(const char *, int), glob_t *); +int glob(const char *__restrict, int, int (*)(const char *, int), glob_t *__restrict); void globfree(glob_t *); #define GLOB_ERR 0x01 diff --git a/include/iconv.h b/include/iconv.h index f2ccaf8c..cef06f60 100644 --- a/include/iconv.h +++ b/include/iconv.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_size_t #include @@ -12,7 +18,7 @@ extern "C" { typedef void *iconv_t; iconv_t iconv_open(const char *, const char *); -size_t iconv(iconv_t, char **, size_t *, char **, size_t *); +size_t iconv(iconv_t, char **__restrict, size_t *__restrict, char **__restrict, size_t *__restrict); int iconv_close(iconv_t); #ifdef __cplusplus diff --git a/include/inttypes.h b/include/inttypes.h index 13ba6e0f..23acc5be 100644 --- a/include/inttypes.h +++ b/include/inttypes.h @@ -10,16 +10,22 @@ extern "C" { #define __NEED_wchar_t #include +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + typedef struct { intmax_t quot, rem; } imaxdiv_t; intmax_t imaxabs(intmax_t); imaxdiv_t imaxdiv(intmax_t, intmax_t); -intmax_t strtoimax(const char *, char **, int); -uintmax_t strtoumax(const char *, char **, int); +intmax_t strtoimax(const char *__restrict, char **__restrict, int); +uintmax_t strtoumax(const char *__restrict, char **__restrict, int); -intmax_t wcstoimax(const wchar_t *, wchar_t **, int); -uintmax_t wcstoumax(const wchar_t *, wchar_t **, int); +intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int); +uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int); #if !defined __cplusplus || defined __STDC_FORMAT_MACROS diff --git a/include/monetary.h b/include/monetary.h index df904eb0..11dabb23 100644 --- a/include/monetary.h +++ b/include/monetary.h @@ -5,14 +5,20 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_ssize_t #define __NEED_size_t #define __NEED_locale_t #include -ssize_t strfmon(char *, size_t, const char *, ...); -ssize_t strfmon_l(char *, size_t, locale_t, const char *, ...); +ssize_t strfmon(char *__restrict, size_t, const char *__restrict, ...); +ssize_t strfmon_l(char *__restrict, size_t, locale_t, const char *__restrict, ...); #ifdef __cplusplus } diff --git a/include/mqueue.h b/include/mqueue.h index 92e6ae5e..bd35842c 100644 --- a/include/mqueue.h +++ b/include/mqueue.h @@ -4,6 +4,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_size_t #define __NEED_ssize_t #define __NEED_pthread_attr_t @@ -23,8 +29,8 @@ int mq_notify(mqd_t, const struct sigevent *); mqd_t mq_open(const char *, int, ...); ssize_t mq_receive(mqd_t, char *, size_t, unsigned *); int mq_send(mqd_t, const char *, size_t, unsigned); -int mq_setattr(mqd_t, const struct mq_attr *, struct mq_attr *); -ssize_t mq_timedreceive(mqd_t, char *, size_t, unsigned *, const struct timespec *); +int mq_setattr(mqd_t, const struct mq_attr *__restrict, struct mq_attr *__restrict); +ssize_t mq_timedreceive(mqd_t, char *__restrict, size_t, unsigned *__restrict, const struct timespec *__restrict); int mq_timedsend(mqd_t, const char *, size_t, unsigned, const struct timespec *); int mq_unlink(const char *); diff --git a/include/netdb.h b/include/netdb.h index 42a4b682..d915d9d5 100644 --- a/include/netdb.h +++ b/include/netdb.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) #define __NEED_size_t #endif @@ -55,9 +61,9 @@ struct addrinfo #define EAI_SYSTEM -11 #define EAI_OVERFLOW -12 -int getaddrinfo (const char *, const char *, const struct addrinfo *, struct addrinfo **); +int getaddrinfo (const char *__restrict, const char *__restrict, const struct addrinfo *__restrict, struct addrinfo **__restrict); void freeaddrinfo (struct addrinfo *); -int getnameinfo (const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int); +int getnameinfo (const struct sockaddr *__restrict, socklen_t, char *__restrict, socklen_t, char *__restrict, socklen_t, int); const char *gai_strerror(int); diff --git a/include/pthread.h b/include/pthread.h index d4ffb9ab..417156c8 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -4,6 +4,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_time_t #define __NEED_clockid_t #define __NEED_struct_timespec @@ -71,7 +77,7 @@ extern "C" { #define PTHREAD_BARRIER_SERIAL_THREAD (-1) -int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *); +int pthread_create(pthread_t *__restrict, const pthread_attr_t *__restrict, void *(*)(void *), void *__restrict); int pthread_detach(pthread_t); void pthread_exit(void *); int pthread_join(pthread_t, void **); @@ -91,29 +97,29 @@ int pthread_cancel(pthread_t); int pthread_once(pthread_once_t *, void (*)(void)); -int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *); +int pthread_mutex_init(pthread_mutex_t *__restrict, const pthread_mutexattr_t *__restrict); int pthread_mutex_lock(pthread_mutex_t *); int pthread_mutex_unlock(pthread_mutex_t *); int pthread_mutex_trylock(pthread_mutex_t *); -int pthread_mutex_timedlock(pthread_mutex_t *, const struct timespec *); +int pthread_mutex_timedlock(pthread_mutex_t *__restrict, const struct timespec *__restrict); int pthread_mutex_destroy(pthread_mutex_t *); int pthread_mutex_consistent(pthread_mutex_t *); -int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *); +int pthread_cond_init(pthread_cond_t *__restrict, const pthread_condattr_t *__restrict); int pthread_cond_destroy(pthread_cond_t *); -int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *); -int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *, const struct timespec *); +int pthread_cond_wait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict); +int pthread_cond_timedwait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict, const struct timespec *__restrict); int pthread_cond_broadcast(pthread_cond_t *); int pthread_cond_signal(pthread_cond_t *); -int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *); +int pthread_rwlock_init(pthread_rwlock_t *__restrict, const pthread_rwlockattr_t *__restrict); int pthread_rwlock_destroy(pthread_rwlock_t *); int pthread_rwlock_rdlock(pthread_rwlock_t *); int pthread_rwlock_tryrdlock(pthread_rwlock_t *); -int pthread_rwlock_timedrdlock(pthread_rwlock_t *, const struct timespec *); +int pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict); int pthread_rwlock_wrlock(pthread_rwlock_t *); int pthread_rwlock_trywrlock(pthread_rwlock_t *); -int pthread_rwlock_timedwrlock(pthread_rwlock_t *, const struct timespec *); +int pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict); int pthread_rwlock_unlock(pthread_rwlock_t *); int pthread_spin_init(pthread_spinlock_t *, int); @@ -122,7 +128,7 @@ int pthread_spin_lock(pthread_spinlock_t *); int pthread_spin_trylock(pthread_spinlock_t *); int pthread_spin_unlock(pthread_spinlock_t *); -int pthread_barrier_init(pthread_barrier_t *, const pthread_barrierattr_t *, unsigned); +int pthread_barrier_init(pthread_barrier_t *__restrict, const pthread_barrierattr_t *__restrict, unsigned); int pthread_barrier_destroy(pthread_barrier_t *); int pthread_barrier_wait(pthread_barrier_t *); @@ -134,29 +140,29 @@ int pthread_setspecific(pthread_key_t, const void *); int pthread_attr_init(pthread_attr_t *); int pthread_attr_destroy(pthread_attr_t *); -int pthread_attr_getguardsize(const pthread_attr_t *, size_t *); +int pthread_attr_getguardsize(const pthread_attr_t *__restrict, size_t *__restrict); int pthread_attr_setguardsize(pthread_attr_t *, size_t); -int pthread_attr_getstacksize(const pthread_attr_t *, size_t *); +int pthread_attr_getstacksize(const pthread_attr_t *__restrict, size_t *__restrict); int pthread_attr_setstacksize(pthread_attr_t *, size_t); int pthread_attr_getdetachstate(const pthread_attr_t *, int *); int pthread_attr_setdetachstate(pthread_attr_t *, int); -int pthread_attr_getstack(const pthread_attr_t *, void **, size_t *); +int pthread_attr_getstack(const pthread_attr_t *__restrict, void **__restrict, size_t *__restrict); int pthread_attr_setstack(pthread_attr_t *, void *, size_t); -int pthread_attr_getscope(const pthread_attr_t *, int *); +int pthread_attr_getscope(const pthread_attr_t *__restrict, int *__restrict); int pthread_attr_setscope(pthread_attr_t *, int); -int pthread_attr_getschedpolicy(const pthread_attr_t *, int *); +int pthread_attr_getschedpolicy(const pthread_attr_t *__restrict, int *__restrict); int pthread_attr_setschedpolicy(pthread_attr_t *, int); -int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *); -int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *); -int pthread_attr_getinheritsched(const pthread_attr_t *, int *); +int pthread_attr_getschedparam(const pthread_attr_t *__restrict, struct sched_param *__restrict); +int pthread_attr_setschedparam(pthread_attr_t *__restrict, const struct sched_param *__restrict); +int pthread_attr_getinheritsched(const pthread_attr_t *__restrict, int *__restrict); int pthread_attr_setinheritsched(pthread_attr_t *, int); int pthread_mutexattr_destroy(pthread_mutexattr_t *); -int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, int *); -int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *, int *); -int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *); -int pthread_mutexattr_getrobust(const pthread_mutexattr_t *, int *); -int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *); +int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_getpshared(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_getrobust(const pthread_mutexattr_t *__restrict, int *__restrict); +int pthread_mutexattr_gettype(const pthread_mutexattr_t *__restrict, int *__restrict); int pthread_mutexattr_init(pthread_mutexattr_t *); int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int); int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int); @@ -168,16 +174,16 @@ int pthread_condattr_init(pthread_condattr_t *); int pthread_condattr_destroy(pthread_condattr_t *); int pthread_condattr_setclock(pthread_condattr_t *, clockid_t); int pthread_condattr_setpshared(pthread_condattr_t *, int); -int pthread_condattr_getclock(const pthread_condattr_t *, clockid_t *); -int pthread_condattr_getpshared(const pthread_condattr_t *, int *); +int pthread_condattr_getclock(const pthread_condattr_t *__restrict, clockid_t *__restrict); +int pthread_condattr_getpshared(const pthread_condattr_t *__restrict, int *__restrict); int pthread_rwlockattr_init(pthread_rwlockattr_t *); int pthread_rwlockattr_destroy(pthread_rwlockattr_t *); int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int); -int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, int *); +int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *__restrict, int *__restrict); int pthread_barrierattr_destroy(pthread_barrierattr_t *); -int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, int *); +int pthread_barrierattr_getpshared(const pthread_barrierattr_t *__restrict, int *__restrict); int pthread_barrierattr_init(pthread_barrierattr_t *); int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int); diff --git a/include/regex.h b/include/regex.h index d57208a5..b7167b87 100644 --- a/include/regex.h +++ b/include/regex.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_size_t #include @@ -47,11 +53,11 @@ typedef struct { #define REG_ENOSYS -1 -int regcomp(regex_t *, const char *, int); -int regexec(const regex_t *, const char *, size_t, regmatch_t [], int); +int regcomp(regex_t *__restrict, const char *__restrict, int); +int regexec(const regex_t *__restrict, const char *__restrict, size_t, regmatch_t *__restrict, int); void regfree(regex_t *); -size_t regerror(int, const regex_t *, char *, size_t); +size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t); #ifdef __cplusplus } diff --git a/include/search.h b/include/search.h index 7c4fc583..680eee75 100644 --- a/include/search.h +++ b/include/search.h @@ -5,6 +5,13 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + + #define __NEED_size_t #include @@ -28,7 +35,7 @@ void *lsearch(const void *, void *, size_t *, size_t, void *lfind(const void *, const void *, size_t *, size_t, int (*)(const void *, const void *)); -void *tdelete(const void *, void **, int(*)(const void *, const void *)); +void *tdelete(const void *__restrict, void **__restrict, int(*)(const void *, const void *)); void *tfind(const void *, void *const *, int(*)(const void *, const void *)); void *tsearch(const void *, void **, int (*)(const void *, const void *)); void twalk(const void *, void (*)(const void *, VISIT, int)); diff --git a/include/semaphore.h b/include/semaphore.h index 2e9b8100..724957fb 100644 --- a/include/semaphore.h +++ b/include/semaphore.h @@ -4,6 +4,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_time_t #define __NEED_struct_timespec #include @@ -18,11 +24,11 @@ typedef struct { int sem_close(sem_t *); int sem_destroy(sem_t *); -int sem_getvalue(sem_t *, int *); +int sem_getvalue(sem_t *__restrict, int *__restrict); int sem_init(sem_t *, int, unsigned); sem_t *sem_open(const char *, int, ...); int sem_post(sem_t *); -int sem_timedwait(sem_t *, const struct timespec *); +int sem_timedwait(sem_t *__restrict, const struct timespec *__restrict); int sem_trywait(sem_t *); int sem_unlink(const char *); int sem_wait(sem_t *); diff --git a/include/signal.h b/include/signal.h index d4856a89..e0dae192 100644 --- a/include/signal.h +++ b/include/signal.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) @@ -165,16 +171,16 @@ int sigaddset(sigset_t *, int); int sigdelset(sigset_t *, int); int sigismember(const sigset_t *, int); -int sigprocmask(int, const sigset_t *, sigset_t *); +int sigprocmask(int, const sigset_t *__restrict, sigset_t *__restrict); int sigsuspend(const sigset_t *); -int sigaction(int, const struct sigaction *, struct sigaction *); +int sigaction(int, const struct sigaction *__restrict, struct sigaction *__restrict); int sigpending(sigset_t *); -int sigwait(const sigset_t *, int *); -int sigwaitinfo(const sigset_t *, siginfo_t *); -int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *); +int sigwait(const sigset_t *__restrict, int *__restrict); +int sigwaitinfo(const sigset_t *__restrict, siginfo_t *__restrict); +int sigtimedwait(const sigset_t *__restrict, siginfo_t *__restrict, const struct timespec *__restrict); int sigqueue(pid_t, int, const union sigval); -int pthread_sigmask(int, const sigset_t *, sigset_t *); +int pthread_sigmask(int, const sigset_t *__restrict, sigset_t *__restrict); int pthread_kill(pthread_t, int); void psiginfo(const siginfo_t *, const char *); @@ -184,7 +190,7 @@ void psignal(int, const char *); #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) int killpg(pid_t, int); -int sigaltstack(const stack_t *, stack_t *); +int sigaltstack(const stack_t *__restrict, stack_t *__restrict); int sighold(int); int sigignore(int); int siginterrupt(int, int); diff --git a/include/spawn.h b/include/spawn.h index 99ec6f1d..c934d423 100644 --- a/include/spawn.h +++ b/include/spawn.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_mode_t #define __NEED_pid_t #define __NEED_sigset_t @@ -33,30 +39,30 @@ typedef struct { int __pad[16]; } posix_spawn_file_actions_t; -int posix_spawn(pid_t *, const char *, const posix_spawn_file_actions_t *, - const posix_spawnattr_t *, char *const [], char *const []); -int posix_spawnp(pid_t *, const char *, const posix_spawn_file_actions_t *, - const posix_spawnattr_t *, char *const [], char *const []); +int posix_spawn(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *, + const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict); +int posix_spawnp(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *, + const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict); int posix_spawnattr_init(posix_spawnattr_t *); int posix_spawnattr_destroy(posix_spawnattr_t *); int posix_spawnattr_setflags(posix_spawnattr_t *, short); -int posix_spawnattr_getflags(const posix_spawnattr_t *, short *); +int posix_spawnattr_getflags(const posix_spawnattr_t *__restrict, short *__restrict); int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t); -int posix_spawnattr_getpgroup(const posix_spawnattr_t *, pid_t *); +int posix_spawnattr_getpgroup(const posix_spawnattr_t *__restrict, pid_t *__restrict); -int posix_spawnattr_setsigmask(posix_spawnattr_t *, const sigset_t *); -int posix_spawnattr_getsigmask(const posix_spawnattr_t *, sigset_t *); +int posix_spawnattr_setsigmask(posix_spawnattr_t *__restrict, const sigset_t *__restrict); +int posix_spawnattr_getsigmask(const posix_spawnattr_t *__restrict, sigset_t *__restrict); -int posix_spawnattr_setsigdefault(posix_spawnattr_t *, const sigset_t *); -int posix_spawnattr_getsigdefault(const posix_spawnattr_t *, sigset_t *); +int posix_spawnattr_setsigdefault(posix_spawnattr_t *__restrict, const sigset_t *__restrict); +int posix_spawnattr_getsigdefault(const posix_spawnattr_t *__restrict, sigset_t *__restrict); int posix_spawn_file_actions_init(posix_spawn_file_actions_t *); int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *); -int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *, int, const char *, int, mode_t); +int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *__restrict, int, const char *__restrict, int, mode_t); int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int); int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int); diff --git a/include/stdio.h b/include/stdio.h index 9aa2f782..7d3130e2 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_FILE #define __NEED_va_list #define __NEED_size_t @@ -58,8 +64,8 @@ extern FILE *const stderr; #define stdout (stdout) #define stderr (stderr) -FILE *fopen(const char *, const char *); -FILE *freopen(const char *, const char *, FILE *); +FILE *fopen(const char *__restrict, const char *__restrict); +FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict); int fclose(FILE *); int remove(const char *); @@ -74,11 +80,11 @@ int fseek(FILE *, long, int); long ftell(FILE *); void rewind(FILE *); -int fgetpos(FILE *, fpos_t *); +int fgetpos(FILE *__restrict, fpos_t *__restrict); int fsetpos(FILE *, const fpos_t *); -size_t fread(void *, size_t, size_t, FILE *); -size_t fwrite(const void *, size_t, size_t, FILE *); +size_t fread(void *__restrict, size_t, size_t, FILE *__restrict); +size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict); int fgetc(FILE *); int getc(FILE *); @@ -89,35 +95,35 @@ int fputc(int, FILE *); int putc(int, FILE *); int putchar(int); -char *fgets(char *, int, FILE *); +char *fgets(char *__restrict, int, FILE *__restrict); #if __STDC_VERSION__ < 201112L char *gets(char *); #endif -int fputs(const char *, FILE *); +int fputs(const char *__restrict, FILE *__restrict); int puts(const char *); -int printf(const char *, ...); -int fprintf(FILE *, const char *, ...); -int sprintf(char *, const char *, ...); -int snprintf(char *, size_t, const char *, ...); +int printf(const char *__restrict, ...); +int fprintf(FILE *__restrict, const char *__restrict, ...); +int sprintf(char *__restrict, const char *__restrict, ...); +int snprintf(char *__restrict, size_t, const char *__restrict, ...); -int vprintf(const char *, va_list); -int vfprintf(FILE *, const char *, va_list); -int vsprintf(char *, const char *, va_list); -int vsnprintf(char *, size_t, const char *, va_list); +int vprintf(const char *__restrict, va_list); +int vfprintf(FILE *__restrict, const char *__restrict, va_list); +int vsprintf(char *__restrict, const char *__restrict, va_list); +int vsnprintf(char *__restrict, size_t, const char *__restrict, va_list); -int scanf(const char *, ...); -int fscanf(FILE *, const char *, ...); -int sscanf(const char *, const char *, ...); -int vscanf(const char *, va_list); -int vfscanf(FILE *, const char *, va_list); -int vsscanf(const char *, const char *, va_list); +int scanf(const char *__restrict, ...); +int fscanf(FILE *__restrict, const char *__restrict, ...); +int sscanf(const char *__restrict, const char *__restrict, ...); +int vscanf(const char *__restrict, va_list); +int vfscanf(FILE *__restrict, const char *__restrict, va_list); +int vsscanf(const char *__restrict, const char *__restrict, va_list); void perror(const char *); -int setvbuf(FILE *, char *, int, size_t); -void setbuf(FILE *, char *); +int setvbuf(FILE *__restrict, char *__restrict, int, size_t); +void setbuf(FILE *__restrict, char *__restrict); char *tmpnam(char *); FILE *tmpfile(void); @@ -125,7 +131,7 @@ FILE *tmpfile(void); #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) -FILE *fmemopen(void *, size_t, const char *); +FILE *fmemopen(void *__restrict, size_t, const char *__restrict); FILE *open_memstream(char **, size_t *); FILE *fdopen(int, const char *); FILE *popen(const char *, const char *); @@ -133,8 +139,8 @@ int pclose(FILE *); int fileno(FILE *); int fseeko(FILE *, off_t, int); off_t ftello(FILE *); -int dprintf(int, const char *, ...); -int vdprintf(int, const char *, va_list); +int dprintf(int, const char *__restrict, ...); +int vdprintf(int, const char *__restrict, va_list); void flockfile(FILE *); int ftrylockfile(FILE *); void funlockfile(FILE *); @@ -142,8 +148,8 @@ int getc_unlocked(FILE *); int getchar_unlocked(void); int putc_unlocked(int, FILE *); int putchar_unlocked(int); -ssize_t getdelim(char **, size_t *, int, FILE *); -ssize_t getline(char **, size_t *, FILE *); +ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict); +ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict); int renameat(int, const char *, int, const char *); char *ctermid(char *); #define L_ctermid 20 diff --git a/include/stdlib.h b/include/stdlib.h index 1749cb3b..14cc71bb 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #undef NULL #ifdef __cplusplus #define NULL 0 @@ -22,14 +28,14 @@ long atol (const char *); long long atoll (const char *); double atof (const char *); -float strtof (const char *, char **); -double strtod (const char *, char **); -long double strtold (const char *, char **); +float strtof (const char *__restrict, char **__restrict); +double strtod (const char *__restrict, char **__restrict); +long double strtold (const char *__restrict, char **__restrict); -long strtol (const char *, char **, int); -unsigned long strtoul (const char *, char **, int); -long long strtoll (const char *, char **, int); -unsigned long long strtoull (const char *, char **, int); +long strtol (const char *__restrict, char **__restrict, int); +unsigned long strtoul (const char *__restrict, char **__restrict, int); +long long strtoll (const char *__restrict, char **__restrict, int); +unsigned long long strtoull (const char *__restrict, char **__restrict, int); int rand (void); void srand (unsigned); @@ -67,10 +73,10 @@ ldiv_t ldiv (long, long); lldiv_t lldiv (long long, long long); int mblen (const char *, size_t); -int mbtowc (wchar_t *, const char *, size_t); +int mbtowc (wchar_t *__restrict, const char *__restrict, size_t); int wctomb (char *, wchar_t); -size_t mbstowcs (wchar_t *, const char *, size_t); -size_t wcstombs (char *, const wchar_t *, size_t); +size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t); +size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t); #define EXIT_FAILURE 1 #define EXIT_SUCCESS 0 @@ -108,7 +114,7 @@ int rand_r (unsigned *); #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) -char *realpath (const char *, char *); +char *realpath (const char *__restrict, char *__restrict); long int random (void); void srandom (unsigned int); char *initstate (unsigned int, char *, size_t); diff --git a/include/string.h b/include/string.h index 24cb1ca3..f96f71ee 100644 --- a/include/string.h +++ b/include/string.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #undef NULL #ifdef __cplusplus #define NULL 0 @@ -21,23 +27,23 @@ extern "C" { #include -void *memcpy (void *, const void *, size_t); +void *memcpy (void *__restrict, const void *__restrict, size_t); void *memmove (void *, const void *, size_t); void *memset (void *, int, size_t); int memcmp (const void *, const void *, size_t); void *memchr (const void *, int, size_t); -char *strcpy (char *, const char *); -char *strncpy (char *, const char *, size_t); +char *strcpy (char *__restrict, const char *__restrict); +char *strncpy (char *__restrict, const char *__restrict, size_t); -char *strcat (char *, const char *); -char *strncat (char *, const char *, size_t); +char *strcat (char *__restrict, const char *__restrict); +char *strncat (char *__restrict, const char *__restrict, size_t); int strcmp (const char *, const char *); int strncmp (const char *, const char *, size_t); int strcoll (const char *, const char *); -size_t strxfrm (char *, const char *, size_t); +size_t strxfrm (char *__restrict, const char *__restrict, size_t); char *strchr (const char *, int); char *strrchr (const char *, int); @@ -46,7 +52,7 @@ size_t strcspn (const char *, const char *); size_t strspn (const char *, const char *); char *strpbrk (const char *, const char *); char *strstr (const char *, const char *); -char *strtok (char *, const char *); +char *strtok (char *__restrict, const char *__restrict); size_t strlen (const char *); @@ -59,22 +65,22 @@ char *strerror (int); #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) -char *strtok_r (char *, const char *, char **); +char *strtok_r (char *__restrict, const char *__restrict, char **__restrict); int strerror_r (int, char *, size_t); -char *stpcpy(char *, const char *); -char *stpncpy(char *, const char *, size_t); +char *stpcpy(char *__restrict, const char *__restrict); +char *stpncpy(char *__restrict, const char *__restrict, size_t); size_t strnlen (const char *, size_t); char *strdup (const char *); char *strndup (const char *, size_t); char *strsignal(int); char *strerror_l (int, locale_t); int strcoll_l (const char *, const char *, locale_t); -size_t strxfrm_l (char *, const char *, size_t, locale_t); +size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t); #endif #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) -void *memccpy (void *, const void *, int, size_t); +void *memccpy (void *__restrict, const void *__restrict, int, size_t); #endif #ifdef _BSD_SOURCE diff --git a/include/sys/select.h b/include/sys/select.h index 47d195f4..dd4176dd 100644 --- a/include/sys/select.h +++ b/include/sys/select.h @@ -4,6 +4,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_size_t #define __NEED_time_t #define __NEED_suseconds_t @@ -27,8 +33,8 @@ typedef struct #define FD_CLR(d, s) ((s)->fds_bits[(d)/(8*sizeof(long))] &= ~(1UL<<((d)%(8*sizeof(long))))) #define FD_ISSET(d, s) !!((s)->fds_bits[(d)/(8*sizeof(long))] & (1UL<<((d)%(8*sizeof(long))))) -int select (int, fd_set *, fd_set *, fd_set *, struct timeval *); -int pselect (int, fd_set *, fd_set *, fd_set *, const struct timespec *, const sigset_t *); +int select (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, struct timeval *__restrict); +int pselect (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, const struct timespec *__restrict, const sigset_t *__restrict); #ifdef __cplusplus diff --git a/include/sys/socket.h b/include/sys/socket.h index a384ca12..7024d232 100644 --- a/include/sys/socket.h +++ b/include/sys/socket.h @@ -4,6 +4,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_socklen_t #define __NEED_sa_family_t #define __NEED_size_t @@ -232,19 +238,19 @@ int shutdown (int, int); int bind (int, const struct sockaddr *, socklen_t); int connect (int, const struct sockaddr *, socklen_t); int listen (int, int); -int accept (int, struct sockaddr *, socklen_t *); +int accept (int, struct sockaddr *__restrict, socklen_t *__restrict); -int getsockname (int, struct sockaddr *, socklen_t *); -int getpeername (int, struct sockaddr *, socklen_t *); +int getsockname (int, struct sockaddr *__restrict, socklen_t *__restrict); +int getpeername (int, struct sockaddr *__restrict, socklen_t *__restrict); ssize_t send (int, const void *, size_t, int); ssize_t recv (int, void *, size_t, int); ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t); -ssize_t recvfrom (int, void *, size_t, int, struct sockaddr *, socklen_t *); +ssize_t recvfrom (int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict); ssize_t sendmsg (int, const struct msghdr *, int); ssize_t recvmsg (int, struct msghdr *, int); -int getsockopt (int, int, int, void *, socklen_t *); +int getsockopt (int, int, int, void *__restrict, socklen_t *__restrict); int setsockopt (int, int, int, const void *, socklen_t); int sockatmark (int); diff --git a/include/sys/stat.h b/include/sys/stat.h index 2a7ce233..e16a9682 100644 --- a/include/sys/stat.h +++ b/include/sys/stat.h @@ -4,6 +4,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_dev_t #define __NEED_ino_t #define __NEED_mode_t @@ -68,10 +74,10 @@ extern "C" { #define UTIME_NOW 0x3fffffff #define UTIME_OMIT 0x3ffffffe -int stat(const char *, struct stat *); +int stat(const char *__restrict, struct stat *__restrict); int fstat(int, struct stat *); -int lstat(const char *, struct stat *); -int fstatat(int, const char *, struct stat *, int); +int lstat(const char *__restrict, struct stat *__restrict); +int fstatat(int, const char *__restrict, struct stat *__restrict, int); int chmod(const char *, mode_t); int fchmod(int, mode_t); int fchmodat(int, const char *, mode_t, int); diff --git a/include/sys/statvfs.h b/include/sys/statvfs.h index 0a3ac9e0..be41c287 100644 --- a/include/sys/statvfs.h +++ b/include/sys/statvfs.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_fsblkcnt_t #define __NEED_fsfilcnt_t #include @@ -26,7 +32,7 @@ struct statvfs { int __reserved[6]; }; -int statvfs (const char *, struct statvfs *); +int statvfs (const char *__restrict, struct statvfs *__restrict); int fstatvfs (int, struct statvfs *); #define ST_RDONLY 1 diff --git a/include/sys/time.h b/include/sys/time.h index 144dd230..bf026432 100644 --- a/include/sys/time.h +++ b/include/sys/time.h @@ -4,9 +4,15 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #include -int gettimeofday (struct timeval *, void *); +int gettimeofday (struct timeval *__restrict, void *__restrict); #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) @@ -22,7 +28,7 @@ struct itimerval }; int getitimer (int, struct itimerval *); -int setitimer (int, const struct itimerval *, struct itimerval *); +int setitimer (int, const struct itimerval *__restrict, struct itimerval *__restrict); int utimes (const char *, const struct timeval [2]); #endif diff --git a/include/time.h b/include/time.h index 3cc0d28a..f24789e4 100644 --- a/include/time.h +++ b/include/time.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #undef NULL #ifdef __cplusplus #define NULL 0 @@ -48,7 +54,7 @@ clock_t clock (void); time_t time (time_t *); double difftime (time_t, time_t); time_t mktime (struct tm *); -size_t strftime (char *, size_t, const char *, const struct tm *); +size_t strftime (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict); struct tm *gmtime (const time_t *); struct tm *localtime (const time_t *); char *asctime (const struct tm *); @@ -61,11 +67,11 @@ char *ctime (const time_t *); || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) -size_t strftime_l (char *, size_t, const char *, const struct tm *, locale_t); +size_t strftime_l (char * __restrict, size_t, const char * __restrict, const struct tm * __restrict, locale_t); -struct tm *gmtime_r (const time_t *, struct tm *); -struct tm *localtime_r (const time_t *, struct tm *); -char *asctime_r (const struct tm *, char *); +struct tm *gmtime_r (const time_t *__restrict, struct tm *__restrict); +struct tm *localtime_r (const time_t *__restrict, struct tm *__restrict); +char *asctime_r (const struct tm *__restrict, char *__restrict); char *ctime_r (const time_t *, char *); void tzset (void); @@ -91,9 +97,9 @@ int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *) int clock_getcpuclockid (pid_t, clockid_t *); struct sigevent; -int timer_create (clockid_t, struct sigevent *, timer_t *); +int timer_create (clockid_t, struct sigevent *__restrict, timer_t *__restrict); int timer_delete (timer_t); -int timer_settime (timer_t, int, const struct itimerspec *, struct itimerspec *); +int timer_settime (timer_t, int, const struct itimerspec *__restrict, struct itimerspec *__restrict); int timer_gettime (timer_t, struct itimerspec *); int timer_getoverrun (timer_t); @@ -101,7 +107,7 @@ int timer_getoverrun (timer_t); #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) -char *strptime (const char *, const char *, struct tm *); +char *strptime (const char *__restrict, const char *__restrict, struct tm *__restrict); extern int daylight; extern long timezone; extern char *tzname[2]; diff --git a/include/unistd.h b/include/unistd.h index 12d153b8..ecb23f81 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 @@ -52,8 +58,8 @@ int link(const char *, const char *); int linkat(int, const char *, int, const char *, int); int symlink(const char *, const char *); int symlinkat(const char *, int, const char *); -ssize_t readlink(const char *, char *, size_t); -ssize_t readlinkat(int, const char *, char *, size_t); +ssize_t readlink(const char *__restrict, char *__restrict, size_t); +ssize_t readlinkat(int, const char *__restrict, char *__restrict, size_t); int unlink(const char *); int unlinkat(int, const char *, int); int rmdir(const char *); @@ -141,7 +147,7 @@ void sync(void); pid_t setpgrp(void); char *crypt(const char *, const char *); void encrypt(char *, int); -void swab(const void *, void *, ssize_t); +void swab(const void *__restrict, void *__restrict, ssize_t); #endif #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \ diff --git a/include/wchar.h b/include/wchar.h index 12ddd4f4..b1c6b7fa 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_FILE #define __NEED_va_list #define __NEED_size_t @@ -39,17 +45,17 @@ typedef struct unsigned __opaque1, __opaque2; } mbstate_t; -wchar_t *wcscpy (wchar_t *, const wchar_t *); -wchar_t *wcsncpy (wchar_t *, const wchar_t *, size_t); +wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict); +wchar_t *wcsncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); -wchar_t *wcscat (wchar_t *, const wchar_t *); -wchar_t *wcsncat (wchar_t *, const wchar_t *, size_t); +wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict); +wchar_t *wcsncat (wchar_t *__restrict, const wchar_t *__restrict, size_t); int wcscmp (const wchar_t *, const wchar_t *); int wcsncmp (const wchar_t *, const wchar_t *, size_t); int wcscoll(const wchar_t *, const wchar_t *); -size_t wcsxfrm (wchar_t *, const wchar_t *, size_t n); +size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict, size_t n); wchar_t *wcschr (const wchar_t *, wchar_t); wchar_t *wcsrchr (const wchar_t *, wchar_t); @@ -58,16 +64,16 @@ size_t wcscspn (const wchar_t *, const wchar_t *); size_t wcsspn (const wchar_t *, const wchar_t *); wchar_t *wcspbrk (const wchar_t *, const wchar_t *); -wchar_t *wcstok (wchar_t *, const wchar_t *, wchar_t **); +wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict, wchar_t **__restrict); size_t wcslen (const wchar_t *); -wchar_t *wcsstr (const wchar_t *, const wchar_t *); +wchar_t *wcsstr (const wchar_t *__restrict, const wchar_t *__restrict); wchar_t *wcswcs (const wchar_t *, const wchar_t *); wchar_t *wmemchr (const wchar_t *, wchar_t, size_t); int wmemcmp (const wchar_t *, const wchar_t *, size_t); -wchar_t *wmemcpy (wchar_t *, const wchar_t *, size_t); +wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t); wchar_t *wmemset (wchar_t *, wchar_t, size_t); @@ -75,44 +81,44 @@ wint_t btowc (int); int wctob (wint_t); int mbsinit (const mbstate_t *); -size_t mbrtowc (wchar_t *, const char *, size_t, mbstate_t *); -size_t wcrtomb (char *, wchar_t, mbstate_t *); +size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict); +size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict); -size_t mbrlen (const char *, size_t, mbstate_t *); +size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict); -size_t mbsrtowcs (wchar_t *, const char **, size_t, mbstate_t *); -size_t wcsrtombs (char *, const wchar_t **, size_t, mbstate_t *); +size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t, mbstate_t *__restrict); +size_t wcsrtombs (char *__restrict, const wchar_t **__restrict, size_t, mbstate_t *__restrict); -float wcstof (const wchar_t *, wchar_t **); -double wcstod (const wchar_t *, wchar_t **); -long double wcstold (const wchar_t *, wchar_t **); +float wcstof (const wchar_t *__restrict, wchar_t **__restrict); +double wcstod (const wchar_t *__restrict, wchar_t **__restrict); +long double wcstold (const wchar_t *__restrict, wchar_t **__restrict); -long wcstol (const wchar_t *, wchar_t **, int); -unsigned long wcstoul (const wchar_t *, wchar_t **, int); +long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int); +unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict, int); -long long wcstoll (const wchar_t *, wchar_t **, int); -unsigned long long wcstoull (const wchar_t *, wchar_t **, int); +long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict, int); +unsigned long long wcstoull (const wchar_t *__restrict, wchar_t **__restrict, int); int fwide (FILE *, int); -int wprintf (const wchar_t *, ...); -int fwprintf (FILE *, const wchar_t *, ...); -int swprintf (wchar_t *, size_t, const wchar_t *, ...); +int wprintf (const wchar_t *__restrict, ...); +int fwprintf (FILE *__restrict, const wchar_t *__restrict, ...); +int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...); -int vwprintf (const wchar_t *, va_list); -int vfwprintf (FILE *, const wchar_t *, va_list); -int vswprintf (wchar_t *, size_t, const wchar_t *, va_list); +int vwprintf (const wchar_t *__restrict, va_list); +int vfwprintf (FILE *__restrict, const wchar_t *__restrict, va_list); +int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, va_list); -int wscanf (const wchar_t *, ...); -int fwscanf (FILE *, const wchar_t *, ...); -int swscanf (const wchar_t *, const wchar_t *, ...); +int wscanf (const wchar_t *__restrict, ...); +int fwscanf (FILE *__restrict, const wchar_t *__restrict, ...); +int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...); -int vwscanf (const wchar_t *, va_list); -int vfwscanf (FILE *, const wchar_t *, va_list); -int vswscanf (const wchar_t *, const wchar_t *, va_list); +int vwscanf (const wchar_t *__restrict, va_list); +int vfwscanf (FILE *__restrict, const wchar_t *__restrict, va_list); +int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, va_list); wint_t fgetwc (FILE *); wint_t getwc (FILE *); @@ -122,31 +128,31 @@ wint_t fputwc (wchar_t, FILE *); wint_t putwc (wchar_t, FILE *); wint_t putwchar (wchar_t); -wchar_t *fgetws (wchar_t *, int, FILE *); -int fputws (const wchar_t *, FILE *); +wchar_t *fgetws (wchar_t *__restrict, int, FILE *__restrict); +int fputws (const wchar_t *__restrict, FILE *__restrict); wint_t ungetwc (wint_t, FILE *); struct tm; -size_t wcsftime (wchar_t *, size_t, const wchar_t *, const struct tm *); +size_t wcsftime (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict); #undef iswdigit #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) FILE *open_wmemstream(wchar_t **, size_t *); -size_t mbsnrtowcs(wchar_t *, const char **, size_t, size_t, mbstate_t *); -size_t wcsnrtombs(char *, const wchar_t **, size_t, size_t, mbstate_t *); +size_t mbsnrtowcs(wchar_t *__restrict, const char **__restrict, size_t, size_t, mbstate_t *__restrict); +size_t wcsnrtombs(char *__restrict, const wchar_t **__restrict, size_t, size_t, mbstate_t *__restrict); wchar_t *wcsdup(const wchar_t *); size_t wcsnlen (const wchar_t *, size_t); -wchar_t *wcpcpy (wchar_t *, const wchar_t *); -wchar_t *wcpncpy (wchar_t *, const wchar_t *, size_t); +wchar_t *wcpcpy (wchar_t *__restrict, const wchar_t *__restrict); +wchar_t *wcpncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t); int wcscasecmp(const wchar_t *, const wchar_t *); int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t); int wcsncasecmp(const wchar_t *, const wchar_t *, size_t); int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t); int wcscoll_l(const wchar_t *, const wchar_t *, locale_t); -size_t wcsxfrm_l(wchar_t *, const wchar_t *, size_t n, locale_t); +size_t wcsxfrm_l(wchar_t *__restrict, const wchar_t *__restrict, size_t n, locale_t); #endif #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) diff --git a/include/wordexp.h b/include/wordexp.h index 0691c8ea..e7eb3255 100644 --- a/include/wordexp.h +++ b/include/wordexp.h @@ -5,6 +5,12 @@ extern "C" { #endif +#if __STDC_VERSION__ >= 199901L +#define __restrict restrict +#elif !defined(__GNUC__) +#define __restrict +#endif + #define __NEED_size_t #include @@ -30,7 +36,7 @@ typedef struct #define WRDE_CMDSUB 4 #define WRDE_SYNTAX 5 -int wordexp (const char *, wordexp_t *, int); +int wordexp (const char *__restrict, wordexp_t *__restrict, int); void wordfree (wordexp_t *); #ifdef __cplusplus diff --git a/src/aio/lio_listio.c b/src/aio/lio_listio.c index 8c851ca3..30f7cc05 100644 --- a/src/aio/lio_listio.c +++ b/src/aio/lio_listio.c @@ -64,7 +64,7 @@ static void *wait_thread(void *p) return 0; } -int lio_listio(int mode, struct aiocb *const cbs[], int cnt, struct sigevent *sev) +int lio_listio(int mode, struct aiocb *restrict const cbs[restrict], int cnt, struct sigevent *restrict sev) { int i, ret; struct lio_state *st=0; @@ -81,7 +81,7 @@ int lio_listio(int mode, struct aiocb *const cbs[], int cnt, struct sigevent *se } st->cnt = cnt; st->sev = sev; - memcpy(st->cbs, cbs, cnt*sizeof *cbs); + memcpy(st->cbs, (void*) cbs, cnt*sizeof *cbs); } for (i=0; i -void *__dlsym(void *, const char *, void *); +void *__dlsym(void *restrict, const char *restrict, void *restrict); -void *dlsym(void *p, const char *s) +void *dlsym(void *restrict p, const char *restrict s) { return __dlsym(p, s, 0); } diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index 93a4b44c..1c181339 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -973,7 +973,7 @@ int __dladdr(void *addr, Dl_info *info) return 1; } -void *__dlsym(void *p, const char *s, void *ra) +void *__dlsym(void *restrict p, const char *restrict s, void *restrict ra) { void *res; pthread_rwlock_rdlock(&lock); @@ -986,7 +986,7 @@ void *dlopen(const char *file, int mode) { return 0; } -void *__dlsym(void *p, const char *s, void *ra) +void *__dlsym(void *restrict p, const char *restrict s, void *restrict ra) { return 0; } diff --git a/src/locale/iconv.c b/src/locale/iconv.c index 508d322e..7b341fe9 100644 --- a/src/locale/iconv.c +++ b/src/locale/iconv.c @@ -139,7 +139,7 @@ static void put_32(unsigned char *s, unsigned c, int e) #define mbrtowc_utf8 mbrtowc #define wctomb_utf8 wctomb -size_t iconv(iconv_t cd0, char **in, size_t *inb, char **out, size_t *outb) +size_t iconv(iconv_t cd0, char **restrict in, size_t *restrict inb, char **restrict out, size_t *restrict outb) { size_t x=0; unsigned long cd = (unsigned long)cd0; diff --git a/src/locale/strfmon.c b/src/locale/strfmon.c index 81dfe38f..f510d9a4 100644 --- a/src/locale/strfmon.c +++ b/src/locale/strfmon.c @@ -75,7 +75,7 @@ static ssize_t vstrfmon_l(char *s, size_t n, locale_t loc, const char *fmt, va_l return s-s0; } -ssize_t strfmon_l(char *s, size_t n, locale_t loc, const char *fmt, ...) +ssize_t strfmon_l(char *restrict s, size_t n, locale_t loc, const char *restrict fmt, ...) { va_list ap; ssize_t ret; @@ -88,7 +88,7 @@ ssize_t strfmon_l(char *s, size_t n, locale_t loc, const char *fmt, ...) } -ssize_t strfmon(char *s, size_t n, const char *fmt, ...) +ssize_t strfmon(char *restrict s, size_t n, const char *restrict fmt, ...) { va_list ap; ssize_t ret; diff --git a/src/locale/strftime_l.c b/src/locale/strftime_l.c index 70b2f151..f19f5bf3 100644 --- a/src/locale/strftime_l.c +++ b/src/locale/strftime_l.c @@ -1,7 +1,7 @@ #include #include -size_t strftime_l(char *s, size_t n, const char *f, const struct tm *tm, locale_t l) +size_t strftime_l(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm, locale_t l) { return strftime(s, n, f, tm); } diff --git a/src/locale/strxfrm.c b/src/locale/strxfrm.c index 8f123399..d40be9e1 100644 --- a/src/locale/strxfrm.c +++ b/src/locale/strxfrm.c @@ -1,7 +1,7 @@ #include /* collate only by code points */ -size_t strxfrm(char *dest, const char *src, size_t n) +size_t strxfrm(char *restrict dest, const char *restrict src, size_t n) { size_t l = strlen(src); if (n > l) strcpy(dest, src); diff --git a/src/locale/strxfrm_l.c b/src/locale/strxfrm_l.c index 78e56554..81a7badf 100644 --- a/src/locale/strxfrm_l.c +++ b/src/locale/strxfrm_l.c @@ -1,6 +1,6 @@ #include -size_t strxfrm_l(char *dest, const char *src, size_t n, locale_t l) +size_t strxfrm_l(char *restrict dest, const char *restrict src, size_t n, locale_t l) { return strxfrm(dest, src, n); } diff --git a/src/locale/wcsxfrm.c b/src/locale/wcsxfrm.c index 5f76e5a7..bfa01b5b 100644 --- a/src/locale/wcsxfrm.c +++ b/src/locale/wcsxfrm.c @@ -1,7 +1,7 @@ #include /* collate only by code points */ -size_t wcsxfrm(wchar_t *dest, const wchar_t *src, size_t n) +size_t wcsxfrm(wchar_t *restrict dest, const wchar_t *restrict src, size_t n) { size_t l = wcslen(src); if (l >= n) { diff --git a/src/locale/wcsxfrm_l.c b/src/locale/wcsxfrm_l.c index 831998e9..66a00193 100644 --- a/src/locale/wcsxfrm_l.c +++ b/src/locale/wcsxfrm_l.c @@ -1,6 +1,6 @@ #include -size_t wcsxfrm_l(wchar_t *dest, const wchar_t *src, size_t n, locale_t locale) +size_t wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t locale) { return wcsxfrm(dest, src, n); } diff --git a/src/misc/realpath.c b/src/misc/realpath.c index ef156fcf..57568179 100644 --- a/src/misc/realpath.c +++ b/src/misc/realpath.c @@ -6,7 +6,7 @@ #include #include -char *realpath(const char *filename, char *resolved) +char *realpath(const char *restrict filename, char *restrict resolved) { int fd; ssize_t r; diff --git a/src/misc/wordexp.c b/src/misc/wordexp.c index 15adddbe..617706e5 100644 --- a/src/misc/wordexp.c +++ b/src/misc/wordexp.c @@ -147,7 +147,7 @@ static int do_wordexp(const char *s, wordexp_t *we, int flags) return err; } -int wordexp(const char *s, wordexp_t *we, int flags) +int wordexp(const char *restrict s, wordexp_t *restrict we, int flags) { int r, cs; pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); diff --git a/src/mq/mq_setattr.c b/src/mq/mq_setattr.c index 9064fa07..eae022e9 100644 --- a/src/mq/mq_setattr.c +++ b/src/mq/mq_setattr.c @@ -1,7 +1,7 @@ #include #include "syscall.h" -int mq_setattr(mqd_t mqd, const struct mq_attr *new, struct mq_attr *old) +int mq_setattr(mqd_t mqd, const struct mq_attr *restrict new, struct mq_attr *restrict old) { return syscall(SYS_mq_getsetattr, mqd, new, old); } diff --git a/src/mq/mq_timedreceive.c b/src/mq/mq_timedreceive.c index 099f213a..2cef6a86 100644 --- a/src/mq/mq_timedreceive.c +++ b/src/mq/mq_timedreceive.c @@ -1,7 +1,7 @@ #include #include "syscall.h" -ssize_t mq_timedreceive(mqd_t mqd, char *msg, size_t len, unsigned *prio, const struct timespec *at) +ssize_t mq_timedreceive(mqd_t mqd, char *restrict msg, size_t len, unsigned *restrict prio, const struct timespec *restrict at) { return syscall_cp(SYS_mq_timedreceive, mqd, msg, len, prio, at); } diff --git a/src/multibyte/mbrlen.c b/src/multibyte/mbrlen.c index c9a9f033..c9714ef8 100644 --- a/src/multibyte/mbrlen.c +++ b/src/multibyte/mbrlen.c @@ -11,7 +11,7 @@ #include "internal.h" -size_t mbrlen(const char *s, size_t n, mbstate_t *st) +size_t mbrlen(const char *restrict s, size_t n, mbstate_t *restrict st) { static unsigned internal; return mbrtowc(0, s, n, st ? st : (mbstate_t *)&internal); diff --git a/src/multibyte/mbrtowc.c b/src/multibyte/mbrtowc.c index 291537f8..cc497810 100644 --- a/src/multibyte/mbrtowc.c +++ b/src/multibyte/mbrtowc.c @@ -11,7 +11,7 @@ #include "internal.h" -size_t mbrtowc(wchar_t *wc, const char *src, size_t n, mbstate_t *st) +size_t mbrtowc(wchar_t *restrict wc, const char *restrict src, size_t n, mbstate_t *restrict st) { static unsigned internal_state; unsigned c; diff --git a/src/multibyte/mbsnrtowcs.c b/src/multibyte/mbsnrtowcs.c index f42e30d9..33457f95 100644 --- a/src/multibyte/mbsnrtowcs.c +++ b/src/multibyte/mbsnrtowcs.c @@ -12,7 +12,7 @@ #include "internal.h" -size_t mbsnrtowcs(wchar_t *wcs, const char **src, size_t n, size_t wn, mbstate_t *st) +size_t mbsnrtowcs(wchar_t *restrict wcs, const char **restrict src, size_t n, size_t wn, mbstate_t *restrict st) { size_t l, cnt=0, n2; wchar_t *ws, wbuf[256]; diff --git a/src/multibyte/mbsrtowcs.c b/src/multibyte/mbsrtowcs.c index ebf0d6c9..8313d37b 100644 --- a/src/multibyte/mbsrtowcs.c +++ b/src/multibyte/mbsrtowcs.c @@ -11,7 +11,7 @@ #include "internal.h" -size_t mbsrtowcs(wchar_t *ws, const char **src, size_t wn, mbstate_t *st) +size_t mbsrtowcs(wchar_t *restrict ws, const char **restrict src, size_t wn, mbstate_t *restrict st) { unsigned c; const unsigned char *s = (const void *)*src; diff --git a/src/multibyte/mbstowcs.c b/src/multibyte/mbstowcs.c index 23e1d925..5071baf7 100644 --- a/src/multibyte/mbstowcs.c +++ b/src/multibyte/mbstowcs.c @@ -11,7 +11,7 @@ #include "internal.h" -size_t mbstowcs(wchar_t *ws, const char *s, size_t wn) +size_t mbstowcs(wchar_t *restrict ws, const char *restrict s, size_t wn) { mbstate_t st = { 0 }; return mbsrtowcs(ws, (void*)&s, wn, &st); diff --git a/src/multibyte/mbtowc.c b/src/multibyte/mbtowc.c index bdcaeb3c..b5dd7e3c 100644 --- a/src/multibyte/mbtowc.c +++ b/src/multibyte/mbtowc.c @@ -11,7 +11,7 @@ #include "internal.h" -int mbtowc(wchar_t *wc, const char *s, size_t n) +int mbtowc(wchar_t *restrict wc, const char *restrict s, size_t n) { mbstate_t st = { 0 }; n = mbrtowc(wc, s, n, &st); diff --git a/src/multibyte/wcrtomb.c b/src/multibyte/wcrtomb.c index 36180c8f..250649f5 100644 --- a/src/multibyte/wcrtomb.c +++ b/src/multibyte/wcrtomb.c @@ -11,7 +11,7 @@ #include "internal.h" -size_t wcrtomb(char *s, wchar_t wc, mbstate_t *st) +size_t wcrtomb(char *restrict s, wchar_t wc, mbstate_t *restrict st) { if (!s) return 1; if ((unsigned)wc < 0x80) { diff --git a/src/multibyte/wcsnrtombs.c b/src/multibyte/wcsnrtombs.c index 70b0cacb..a2e308b3 100644 --- a/src/multibyte/wcsnrtombs.c +++ b/src/multibyte/wcsnrtombs.c @@ -11,7 +11,7 @@ #include "internal.h" -size_t wcsnrtombs(char *dst, const wchar_t **wcs, size_t wn, size_t n, mbstate_t *st) +size_t wcsnrtombs(char *restrict dst, const wchar_t **restrict wcs, size_t wn, size_t n, mbstate_t *restrict st) { size_t l, cnt=0, n2; char *s, buf[256]; diff --git a/src/multibyte/wcsrtombs.c b/src/multibyte/wcsrtombs.c index 3c48d65b..2582ac2f 100644 --- a/src/multibyte/wcsrtombs.c +++ b/src/multibyte/wcsrtombs.c @@ -11,7 +11,7 @@ #include "internal.h" -size_t wcsrtombs(char *s, const wchar_t **ws, size_t n, mbstate_t *st) +size_t wcsrtombs(char *restrict s, const wchar_t **restrict ws, size_t n, mbstate_t *restrict st) { const wchar_t *ws2; char buf[4]; diff --git a/src/multibyte/wcstombs.c b/src/multibyte/wcstombs.c index b9c1b18a..b6ae4732 100644 --- a/src/multibyte/wcstombs.c +++ b/src/multibyte/wcstombs.c @@ -11,7 +11,8 @@ #include "internal.h" -size_t wcstombs(char *s, const wchar_t *ws, size_t n) +size_t wcstombs(char *restrict s, const wchar_t *restrict ws, size_t n) { - return wcsrtombs(s, &ws, n, 0); + const wchar_t * x = ws; + return wcsrtombs(s, &x, n, 0); } diff --git a/src/network/accept.c b/src/network/accept.c index f6b75ba4..521e9ef9 100644 --- a/src/network/accept.c +++ b/src/network/accept.c @@ -2,7 +2,7 @@ #include "syscall.h" #include "libc.h" -int accept(int fd, struct sockaddr *addr, socklen_t *len) +int accept(int fd, struct sockaddr *restrict addr, socklen_t *restrict len) { return socketcall_cp(accept, fd, addr, len, 0, 0, 0); } diff --git a/src/network/getaddrinfo.c b/src/network/getaddrinfo.c index 83862166..b9e562f7 100644 --- a/src/network/getaddrinfo.c +++ b/src/network/getaddrinfo.c @@ -47,7 +47,7 @@ struct aibuf { /* Extra slots needed for storing canonical name */ #define EXTRA ((256+sizeof(struct aibuf)-1)/sizeof(struct aibuf)) -int getaddrinfo(const char *host, const char *serv, const struct addrinfo *hint, struct addrinfo **res) +int getaddrinfo(const char *restrict host, const char *restrict serv, const struct addrinfo *restrict hint, struct addrinfo **restrict res) { int flags = hint ? hint->ai_flags : 0; int family = hint ? hint->ai_family : AF_UNSPEC; diff --git a/src/network/getnameinfo.c b/src/network/getnameinfo.c index 0763ca88..3d115c75 100644 --- a/src/network/getnameinfo.c +++ b/src/network/getnameinfo.c @@ -8,9 +8,9 @@ #include #include "__dns.h" -int getnameinfo(const struct sockaddr *sa, socklen_t sl, - char *node, socklen_t nodelen, - char *serv, socklen_t servlen, +int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl, + char *restrict node, socklen_t nodelen, + char *restrict serv, socklen_t servlen, int flags) { char buf[256]; diff --git a/src/network/getpeername.c b/src/network/getpeername.c index 22effdae..6567b451 100644 --- a/src/network/getpeername.c +++ b/src/network/getpeername.c @@ -1,7 +1,7 @@ #include #include "syscall.h" -int getpeername(int fd, struct sockaddr *addr, socklen_t *len) +int getpeername(int fd, struct sockaddr *restrict addr, socklen_t *restrict len) { return socketcall(getpeername, fd, addr, len, 0, 0, 0); } diff --git a/src/network/getsockname.c b/src/network/getsockname.c index 271e3b41..7885fc13 100644 --- a/src/network/getsockname.c +++ b/src/network/getsockname.c @@ -1,7 +1,7 @@ #include #include "syscall.h" -int getsockname(int fd, struct sockaddr *addr, socklen_t *len) +int getsockname(int fd, struct sockaddr *restrict addr, socklen_t *restrict len) { return socketcall(getsockname, fd, addr, len, 0, 0, 0); } diff --git a/src/network/getsockopt.c b/src/network/getsockopt.c index a9e0a72d..28079d8c 100644 --- a/src/network/getsockopt.c +++ b/src/network/getsockopt.c @@ -1,7 +1,7 @@ #include #include "syscall.h" -int getsockopt(int fd, int level, int optname, void *optval, socklen_t *optlen) +int getsockopt(int fd, int level, int optname, void *restrict optval, socklen_t *restrict optlen) { return socketcall(getsockopt, fd, level, optname, optval, optlen, 0); } diff --git a/src/network/inet_ntop.c b/src/network/inet_ntop.c index 4817187d..76ae556c 100644 --- a/src/network/inet_ntop.c +++ b/src/network/inet_ntop.c @@ -6,7 +6,7 @@ #include #include -const char *inet_ntop(int af, const void *a0, char *s, socklen_t l) +const char *inet_ntop(int af, const void *restrict a0, char *restrict s, socklen_t l) { const unsigned char *a = a0; int i, j, max, best; diff --git a/src/network/inet_pton.c b/src/network/inet_pton.c index bb16fb90..5c4850a6 100644 --- a/src/network/inet_pton.c +++ b/src/network/inet_pton.c @@ -14,7 +14,7 @@ static int hexval(unsigned c) return -1; } -int inet_pton(int af, const char *s, void *a0) +int inet_pton(int af, const char *restrict s, void *restrict a0) { uint16_t ip[8]; unsigned char *a = a0; diff --git a/src/network/recvfrom.c b/src/network/recvfrom.c index 035a15f8..436f3447 100644 --- a/src/network/recvfrom.c +++ b/src/network/recvfrom.c @@ -2,7 +2,7 @@ #include "syscall.h" #include "libc.h" -ssize_t recvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *addr, socklen_t *alen) +ssize_t recvfrom(int fd, void *restrict buf, size_t len, int flags, struct sockaddr *restrict addr, socklen_t *restrict alen) { return socketcall_cp(recvfrom, fd, buf, len, flags, addr, alen); } diff --git a/src/process/posix_spawn.c b/src/process/posix_spawn.c index 9f2d7423..1120be08 100644 --- a/src/process/posix_spawn.c +++ b/src/process/posix_spawn.c @@ -8,11 +8,11 @@ extern char **environ; -int __posix_spawnx(pid_t *res, const char *path, +int __posix_spawnx(pid_t *restrict res, const char *restrict path, int (*exec)(const char *, char *const *), const posix_spawn_file_actions_t *fa, - const posix_spawnattr_t *attr, - char *const argv[], char *const envp[]) + const posix_spawnattr_t *restrict attr, + char *const argv[restrict], char *const envp[restrict]) { pid_t pid; sigset_t oldmask; @@ -89,10 +89,10 @@ int __posix_spawnx(pid_t *res, const char *path, return 0; } -int posix_spawn(pid_t *res, const char *path, +int posix_spawn(pid_t *restrict res, const char *restrict path, const posix_spawn_file_actions_t *fa, - const posix_spawnattr_t *attr, - char *const argv[], char *const envp[]) + const posix_spawnattr_t *restrict attr, + char *const argv[restrict], char *const envp[restrict]) { return __posix_spawnx(res, path, execv, fa, attr, argv, envp); } diff --git a/src/process/posix_spawn_file_actions_addopen.c b/src/process/posix_spawn_file_actions_addopen.c index af3ca604..368922c7 100644 --- a/src/process/posix_spawn_file_actions_addopen.c +++ b/src/process/posix_spawn_file_actions_addopen.c @@ -4,7 +4,7 @@ #include #include "fdop.h" -int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *fa, int fd, const char *path, int flags, mode_t mode) +int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *restrict fa, int fd, const char *restrict path, int flags, mode_t mode) { struct fdop *op = malloc(sizeof *op + strlen(path) + 1); if (!op) return ENOMEM; diff --git a/src/process/posix_spawnattr_getflags.c b/src/process/posix_spawnattr_getflags.c index 7353d24a..aa635dda 100644 --- a/src/process/posix_spawnattr_getflags.c +++ b/src/process/posix_spawnattr_getflags.c @@ -1,6 +1,6 @@ #include -int posix_spawnattr_getflags(const posix_spawnattr_t *attr, short *flags) +int posix_spawnattr_getflags(const posix_spawnattr_t *restrict attr, short *restrict flags) { *flags = attr->__flags; return 0; diff --git a/src/process/posix_spawnattr_getpgroup.c b/src/process/posix_spawnattr_getpgroup.c index 2c72e985..0480527d 100644 --- a/src/process/posix_spawnattr_getpgroup.c +++ b/src/process/posix_spawnattr_getpgroup.c @@ -1,6 +1,6 @@ #include -int posix_spawnattr_getpgroup(const posix_spawnattr_t *attr, pid_t *pgrp) +int posix_spawnattr_getpgroup(const posix_spawnattr_t *restrict attr, pid_t *restrict pgrp) { *pgrp = attr->__pgrp; return 0; diff --git a/src/process/posix_spawnattr_getsigdefault.c b/src/process/posix_spawnattr_getsigdefault.c index 5f0dfb58..a49050aa 100644 --- a/src/process/posix_spawnattr_getsigdefault.c +++ b/src/process/posix_spawnattr_getsigdefault.c @@ -1,6 +1,6 @@ #include -int posix_spawnattr_getsigdefault(const posix_spawnattr_t *attr, sigset_t *def) +int posix_spawnattr_getsigdefault(const posix_spawnattr_t *restrict attr, sigset_t *restrict def) { *def = attr->__def; return 0; diff --git a/src/process/posix_spawnattr_getsigmask.c b/src/process/posix_spawnattr_getsigmask.c index b4490756..f60ad7f3 100644 --- a/src/process/posix_spawnattr_getsigmask.c +++ b/src/process/posix_spawnattr_getsigmask.c @@ -1,6 +1,6 @@ #include -int posix_spawnattr_getsigmask(const posix_spawnattr_t *attr, sigset_t *mask) +int posix_spawnattr_getsigmask(const posix_spawnattr_t *restrict attr, sigset_t *restrict mask) { *mask = attr->__mask; return 0; diff --git a/src/process/posix_spawnattr_setsigdefault.c b/src/process/posix_spawnattr_setsigdefault.c index a6ddd4d8..56869726 100644 --- a/src/process/posix_spawnattr_setsigdefault.c +++ b/src/process/posix_spawnattr_setsigdefault.c @@ -1,6 +1,6 @@ #include -int posix_spawnattr_setsigdefault(posix_spawnattr_t *attr, const sigset_t *def) +int posix_spawnattr_setsigdefault(posix_spawnattr_t *restrict attr, const sigset_t *restrict def) { attr->__def = *def; return 0; diff --git a/src/process/posix_spawnattr_setsigmask.c b/src/process/posix_spawnattr_setsigmask.c index 6afbf876..f2532f8e 100644 --- a/src/process/posix_spawnattr_setsigmask.c +++ b/src/process/posix_spawnattr_setsigmask.c @@ -1,6 +1,6 @@ #include -int posix_spawnattr_setsigmask(posix_spawnattr_t *attr, const sigset_t *mask) +int posix_spawnattr_setsigmask(posix_spawnattr_t *restrict attr, const sigset_t *restrict mask) { attr->__mask = *mask; return 0; diff --git a/src/process/posix_spawnp.c b/src/process/posix_spawnp.c index 04d768d0..91355fb8 100644 --- a/src/process/posix_spawnp.c +++ b/src/process/posix_spawnp.c @@ -1,15 +1,15 @@ #include #include -int __posix_spawnx(pid_t *, const char *, +int __posix_spawnx(pid_t *restrict, const char *restrict, int (*)(const char *, char *const *), const posix_spawn_file_actions_t *, - const posix_spawnattr_t *, char *const [], char *const []); + const posix_spawnattr_t *restrict, char *const *restrict, char *const *restrict); -int posix_spawnp(pid_t *res, const char *file, +int posix_spawnp(pid_t *restrict res, const char *restrict file, const posix_spawn_file_actions_t *fa, - const posix_spawnattr_t *attr, - char *const argv[], char *const envp[]) + const posix_spawnattr_t *restrict attr, + char *const argv[restrict], char *const envp[restrict]) { return __posix_spawnx(res, file, execvp, fa, attr, argv, envp); } diff --git a/src/regex/glob.c b/src/regex/glob.c index 3476e010..6c07e6b3 100644 --- a/src/regex/glob.c +++ b/src/regex/glob.c @@ -156,7 +156,7 @@ static int sort(const void *a, const void *b) return strcmp(*(const char **)a, *(const char **)b); } -int glob(const char *pat, int flags, int (*errfunc)(const char *path, int err), glob_t *g) +int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, int err), glob_t *restrict g) { const char *p=pat, *d; struct match head = { .next = NULL }, *tail = &head; diff --git a/src/regex/regcomp.c b/src/regex/regcomp.c index 322a5e67..399989e7 100644 --- a/src/regex/regcomp.c +++ b/src/regex/regcomp.c @@ -3091,7 +3091,7 @@ tre_ast_to_tnfa(tre_ast_node_t *node, tre_tnfa_transition_t *transitions, int -regcomp(regex_t *preg, const char *regex, int cflags) +regcomp(regex_t *restrict preg, const char *restrict regex, int cflags) { tre_stack_t *stack; tre_ast_node_t *tree, *tmp_ast_l, *tmp_ast_r; diff --git a/src/regex/regerror.c b/src/regex/regerror.c index 0645b8e7..df4afa4f 100644 --- a/src/regex/regerror.c +++ b/src/regex/regerror.c @@ -26,7 +26,7 @@ static const char messages[] = { "\0Unknown error" }; -size_t regerror(int e, const regex_t *preg, char *buf, size_t size) +size_t regerror(int e, const regex_t *restrict preg, char *restrict buf, size_t size) { const char *s; for (s=messages; e && *s; e--, s+=strlen(s)+1); diff --git a/src/regex/regexec.c b/src/regex/regexec.c index 8107aae7..855cef57 100644 --- a/src/regex/regexec.c +++ b/src/regex/regexec.c @@ -977,8 +977,8 @@ tre_fill_pmatch(size_t nmatch, regmatch_t pmatch[], int cflags, */ int -regexec(const regex_t *preg, const char *string, - size_t nmatch, regmatch_t pmatch[], int eflags) +regexec(const regex_t *restrict preg, const char *restrict string, + size_t nmatch, regmatch_t pmatch[restrict], int eflags) { tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD; reg_errcode_t status; diff --git a/src/select/pselect.c b/src/select/pselect.c index 48fcefed..50343fb7 100644 --- a/src/select/pselect.c +++ b/src/select/pselect.c @@ -2,7 +2,7 @@ #include "syscall.h" #include "libc.h" -int pselect(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, const struct timespec *ts, const sigset_t *mask) +int pselect(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, const struct timespec *restrict ts, const sigset_t *restrict mask) { long data[2] = { (long)mask, __SYSCALL_SSLEN }; struct timespec ts_tmp; diff --git a/src/select/select.c b/src/select/select.c index 696cb288..f93597b5 100644 --- a/src/select/select.c +++ b/src/select/select.c @@ -2,7 +2,7 @@ #include "syscall.h" #include "libc.h" -int select(int n, fd_set *rfds, fd_set *wfds, fd_set *efds, struct timeval *tv) +int select(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, struct timeval *restrict tv) { return syscall_cp(SYS_select, n, rfds, wfds, efds, tv); } diff --git a/src/signal/setitimer.c b/src/signal/setitimer.c index 3b237580..21b1f45d 100644 --- a/src/signal/setitimer.c +++ b/src/signal/setitimer.c @@ -1,7 +1,7 @@ #include #include "syscall.h" -int setitimer(int which, const struct itimerval *new, struct itimerval *old) +int setitimer(int which, const struct itimerval *restrict new, struct itimerval *restrict old) { return syscall(SYS_setitimer, which, new, old); } diff --git a/src/signal/sigaction.c b/src/signal/sigaction.c index e0c58b73..2331dc93 100644 --- a/src/signal/sigaction.c +++ b/src/signal/sigaction.c @@ -11,7 +11,7 @@ void __restore(), __restore_rt(); static pthread_t dummy(void) { return 0; } weak_alias(dummy, __pthread_self_def); -int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old) +int __libc_sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old) { struct k_sigaction ksa; if (sa) { @@ -31,7 +31,7 @@ int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old) return 0; } -int __sigaction(int sig, const struct sigaction *sa, struct sigaction *old) +int __sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old) { if (sig-32U < 3) { errno = EINVAL; diff --git a/src/signal/sigaltstack.c b/src/signal/sigaltstack.c index 550f2f9d..62cb81ad 100644 --- a/src/signal/sigaltstack.c +++ b/src/signal/sigaltstack.c @@ -2,7 +2,7 @@ #include #include "syscall.h" -int sigaltstack(const stack_t *ss, stack_t *old) +int sigaltstack(const stack_t *restrict ss, stack_t *restrict old) { if (ss) { if (ss->ss_size < MINSIGSTKSZ) { diff --git a/src/signal/sigprocmask.c b/src/signal/sigprocmask.c index 67e2b82e..297e20c6 100644 --- a/src/signal/sigprocmask.c +++ b/src/signal/sigprocmask.c @@ -1,7 +1,7 @@ #include #include -int sigprocmask(int how, const sigset_t *set, sigset_t *old) +int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict old) { int r = pthread_sigmask(how, set, old); if (!r) return r; diff --git a/src/signal/sigtimedwait.c b/src/signal/sigtimedwait.c index f62db2f3..4f8589b5 100644 --- a/src/signal/sigtimedwait.c +++ b/src/signal/sigtimedwait.c @@ -3,7 +3,7 @@ #include "syscall.h" #include "libc.h" -int sigtimedwait(const sigset_t *mask, siginfo_t *si, const struct timespec *timeout) +int sigtimedwait(const sigset_t *restrict mask, siginfo_t *restrict si, const struct timespec *restrict timeout) { int ret; do ret = syscall_cp(SYS_rt_sigtimedwait, mask, diff --git a/src/signal/sigwait.c b/src/signal/sigwait.c index 9569d6b0..48a855bb 100644 --- a/src/signal/sigwait.c +++ b/src/signal/sigwait.c @@ -1,7 +1,7 @@ #include #include -int sigwait(const sigset_t *mask, int *sig) +int sigwait(const sigset_t *restrict mask, int *restrict sig) { siginfo_t si; if (sigtimedwait(mask, &si, NULL) < 0) diff --git a/src/signal/sigwaitinfo.c b/src/signal/sigwaitinfo.c index e79feb91..c7b164df 100644 --- a/src/signal/sigwaitinfo.c +++ b/src/signal/sigwaitinfo.c @@ -1,7 +1,7 @@ #include #include -int sigwaitinfo(const sigset_t *mask, siginfo_t *si) +int sigwaitinfo(const sigset_t *restrict mask, siginfo_t *restrict si) { return sigtimedwait(mask, si, NULL); } diff --git a/src/stat/fstatat.c b/src/stat/fstatat.c index d6b9390c..863d5268 100644 --- a/src/stat/fstatat.c +++ b/src/stat/fstatat.c @@ -2,7 +2,7 @@ #include "syscall.h" #include "libc.h" -int fstatat(int fd, const char *path, struct stat *buf, int flag) +int fstatat(int fd, const char *restrict path, struct stat *restrict buf, int flag) { return syscall(SYS_fstatat, fd, path, buf, flag); } diff --git a/src/stat/lstat.c b/src/stat/lstat.c index 9053d998..8f60358c 100644 --- a/src/stat/lstat.c +++ b/src/stat/lstat.c @@ -2,7 +2,7 @@ #include "syscall.h" #include "libc.h" -int lstat(const char *path, struct stat *buf) +int lstat(const char *restrict path, struct stat *restrict buf) { return syscall(SYS_lstat, path, buf); } diff --git a/src/stat/stat.c b/src/stat/stat.c index c5491eb0..c6de7168 100644 --- a/src/stat/stat.c +++ b/src/stat/stat.c @@ -2,7 +2,7 @@ #include "syscall.h" #include "libc.h" -int stat(const char *path, struct stat *buf) +int stat(const char *restrict path, struct stat *restrict buf) { return syscall(SYS_stat, path, buf); } diff --git a/src/stat/statvfs.c b/src/stat/statvfs.c index 5fadb3b4..637bf82f 100644 --- a/src/stat/statvfs.c +++ b/src/stat/statvfs.c @@ -39,7 +39,7 @@ static void fixup(struct statvfs *out, const struct statfs *in) out->f_namemax = in->f_namelen; } -int statvfs(const char *path, struct statvfs *buf) +int statvfs(const char *restrict path, struct statvfs *restrict buf) { struct statfs kbuf; if (__statfs(path, &kbuf)<0) return -1; diff --git a/src/stdio/dprintf.c b/src/stdio/dprintf.c index fa28322f..93082ee7 100644 --- a/src/stdio/dprintf.c +++ b/src/stdio/dprintf.c @@ -1,7 +1,7 @@ #include #include -int dprintf(int fd, const char *fmt, ...) +int dprintf(int fd, const char *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/fgetpos.c b/src/stdio/fgetpos.c index 5b663d1e..c3fa0eb0 100644 --- a/src/stdio/fgetpos.c +++ b/src/stdio/fgetpos.c @@ -1,6 +1,6 @@ #include "stdio_impl.h" -int fgetpos(FILE *f, fpos_t *pos) +int fgetpos(FILE *restrict f, fpos_t *restrict pos) { off_t off = __ftello(f); if (off < 0) return -1; diff --git a/src/stdio/fgets.c b/src/stdio/fgets.c index 3135a69a..ee0ac30e 100644 --- a/src/stdio/fgets.c +++ b/src/stdio/fgets.c @@ -2,7 +2,7 @@ #define MIN(a,b) ((a)<(b) ? (a) : (b)) -char *fgets(char *s, int n, FILE *f) +char *fgets(char *restrict s, int n, FILE *restrict f) { char *p = s; unsigned char *z; diff --git a/src/stdio/fgetws.c b/src/stdio/fgetws.c index 2e76b565..fab9bd0f 100644 --- a/src/stdio/fgetws.c +++ b/src/stdio/fgetws.c @@ -2,7 +2,7 @@ wint_t __fgetwc_unlocked(FILE *); -wchar_t *fgetws(wchar_t *s, int n, FILE *f) +wchar_t *fgetws(wchar_t *restrict s, int n, FILE *restrict f) { wchar_t *p = s; diff --git a/src/stdio/fmemopen.c b/src/stdio/fmemopen.c index 1b054a97..770fd995 100644 --- a/src/stdio/fmemopen.c +++ b/src/stdio/fmemopen.c @@ -67,7 +67,7 @@ static int mclose(FILE *m) return 0; } -FILE *fmemopen(void *buf, size_t size, const char *mode) +FILE *fmemopen(void *restrict buf, size_t size, const char *restrict mode) { FILE *f; struct cookie *c; diff --git a/src/stdio/fopen.c b/src/stdio/fopen.c index 0d5b1af2..560b77e4 100644 --- a/src/stdio/fopen.c +++ b/src/stdio/fopen.c @@ -1,6 +1,6 @@ #include "stdio_impl.h" -FILE *fopen(const char *filename, const char *mode) +FILE *fopen(const char *restrict filename, const char *restrict mode) { FILE *f; int fd; diff --git a/src/stdio/fprintf.c b/src/stdio/fprintf.c index a220cc10..948743f7 100644 --- a/src/stdio/fprintf.c +++ b/src/stdio/fprintf.c @@ -1,7 +1,7 @@ #include #include -int fprintf(FILE *f, const char *fmt, ...) +int fprintf(FILE *restrict f, const char *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/fputs.c b/src/stdio/fputs.c index e6bdb204..b41bc8c7 100644 --- a/src/stdio/fputs.c +++ b/src/stdio/fputs.c @@ -1,6 +1,6 @@ #include "stdio_impl.h" -int fputs(const char *s, FILE *f) +int fputs(const char *restrict s, FILE *restrict f) { size_t l = strlen(s); if (!l) return 0; diff --git a/src/stdio/fputws.c b/src/stdio/fputws.c index b75f95bc..0b593c08 100644 --- a/src/stdio/fputws.c +++ b/src/stdio/fputws.c @@ -1,6 +1,6 @@ #include "stdio_impl.h" -int fputws(const wchar_t *ws, FILE *f) +int fputws(const wchar_t *restrict ws, FILE *restrict f) { unsigned char buf[BUFSIZ]; size_t l=0; diff --git a/src/stdio/fread.c b/src/stdio/fread.c index 5c235777..3f31af8a 100644 --- a/src/stdio/fread.c +++ b/src/stdio/fread.c @@ -2,7 +2,7 @@ #define MIN(a,b) ((a)<(b) ? (a) : (b)) -size_t fread(void *destv, size_t size, size_t nmemb, FILE *f) +size_t fread(void *restrict destv, size_t size, size_t nmemb, FILE *restrict f) { unsigned char *dest = destv; size_t len = size*nmemb, l = len, k; diff --git a/src/stdio/freopen.c b/src/stdio/freopen.c index b1f8fe71..57c3cd29 100644 --- a/src/stdio/freopen.c +++ b/src/stdio/freopen.c @@ -7,7 +7,7 @@ /* Locking is not necessary because, in the event of failure, the stream * passed to freopen is invalid as soon as freopen is called. */ -FILE *freopen(const char *filename, const char *mode, FILE *f) +FILE *freopen(const char *restrict filename, const char *restrict mode, FILE *restrict f) { int fl; FILE *f2; diff --git a/src/stdio/fscanf.c b/src/stdio/fscanf.c index 51fc9b30..ff6c7767 100644 --- a/src/stdio/fscanf.c +++ b/src/stdio/fscanf.c @@ -1,7 +1,7 @@ #include #include -int fscanf(FILE *f, const char *fmt, ...) +int fscanf(FILE *restrict f, const char *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/fwprintf.c b/src/stdio/fwprintf.c index 26d9729a..9ce4f010 100644 --- a/src/stdio/fwprintf.c +++ b/src/stdio/fwprintf.c @@ -2,7 +2,7 @@ #include #include -int fwprintf(FILE *f, const wchar_t *fmt, ...) +int fwprintf(FILE *restrict f, const wchar_t *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/fwrite.c b/src/stdio/fwrite.c index 1b8641ac..8027b306 100644 --- a/src/stdio/fwrite.c +++ b/src/stdio/fwrite.c @@ -1,6 +1,6 @@ #include "stdio_impl.h" -size_t __fwritex(const unsigned char *s, size_t l, FILE *f) +size_t __fwritex(const unsigned char *restrict s, size_t l, FILE *restrict f) { size_t i=0; @@ -24,7 +24,7 @@ size_t __fwritex(const unsigned char *s, size_t l, FILE *f) return l+i; } -size_t fwrite(const void *src, size_t size, size_t nmemb, FILE *f) +size_t fwrite(const void *restrict src, size_t size, size_t nmemb, FILE *restrict f) { size_t k, l = size*nmemb; if (!l) return l; diff --git a/src/stdio/fwscanf.c b/src/stdio/fwscanf.c index a6892cf6..2f30dab4 100644 --- a/src/stdio/fwscanf.c +++ b/src/stdio/fwscanf.c @@ -2,7 +2,7 @@ #include #include -int fwscanf(FILE *f, const wchar_t *fmt, ...) +int fwscanf(FILE *restrict f, const wchar_t *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/getdelim.c b/src/stdio/getdelim.c index b7e04acb..5015c3a6 100644 --- a/src/stdio/getdelim.c +++ b/src/stdio/getdelim.c @@ -2,7 +2,7 @@ #define MIN(a,b) ((a)<(b) ? (a) : (b)) -ssize_t getdelim(char **s, size_t *n, int delim, FILE *f) +ssize_t getdelim(char **restrict s, size_t *restrict n, int delim, FILE *restrict f) { char *tmp; unsigned char *z; diff --git a/src/stdio/getline.c b/src/stdio/getline.c index a3a6651b..476d0b09 100644 --- a/src/stdio/getline.c +++ b/src/stdio/getline.c @@ -1,6 +1,6 @@ #include -ssize_t getline(char **s, size_t *n, FILE *f) +ssize_t getline(char **restrict s, size_t *restrict n, FILE *restrict f) { return getdelim(s, n, '\n', f); } diff --git a/src/stdio/printf.c b/src/stdio/printf.c index 7b7c329f..cebfe404 100644 --- a/src/stdio/printf.c +++ b/src/stdio/printf.c @@ -1,7 +1,7 @@ #include #include -int printf(const char *fmt, ...) +int printf(const char *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/scanf.c b/src/stdio/scanf.c index a04a4402..3b35bdce 100644 --- a/src/stdio/scanf.c +++ b/src/stdio/scanf.c @@ -1,7 +1,7 @@ #include #include -int scanf(const char *fmt, ...) +int scanf(const char *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/setbuf.c b/src/stdio/setbuf.c index 1b98d503..74ad7834 100644 --- a/src/stdio/setbuf.c +++ b/src/stdio/setbuf.c @@ -1,6 +1,6 @@ #include -void setbuf(FILE *f, char *buf) +void setbuf(FILE *restrict f, char *restrict buf) { setvbuf(f, buf, buf ? _IOFBF : _IONBF, BUFSIZ); } diff --git a/src/stdio/setvbuf.c b/src/stdio/setvbuf.c index 6dea0ebf..541a125f 100644 --- a/src/stdio/setvbuf.c +++ b/src/stdio/setvbuf.c @@ -9,7 +9,7 @@ * In the case of stderr where the preexisting buffer is length 1, it * is not possible to set line buffering or full buffering. */ -int setvbuf(FILE *f, char *buf, int type, size_t size) +int setvbuf(FILE *restrict f, char *restrict buf, int type, size_t size) { f->lbf = EOF; diff --git a/src/stdio/snprintf.c b/src/stdio/snprintf.c index 4071c2f6..771503b2 100644 --- a/src/stdio/snprintf.c +++ b/src/stdio/snprintf.c @@ -1,7 +1,7 @@ #include #include -int snprintf(char *s, size_t n, const char *fmt, ...) +int snprintf(char *restrict s, size_t n, const char *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/sprintf.c b/src/stdio/sprintf.c index 6b225409..9dff524c 100644 --- a/src/stdio/sprintf.c +++ b/src/stdio/sprintf.c @@ -1,7 +1,7 @@ #include #include -int sprintf(char *s, const char *fmt, ...) +int sprintf(char *restrict s, const char *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/sscanf.c b/src/stdio/sscanf.c index a1cea699..b575edf7 100644 --- a/src/stdio/sscanf.c +++ b/src/stdio/sscanf.c @@ -1,7 +1,7 @@ #include #include -int sscanf(const char *s, const char *fmt, ...) +int sscanf(const char *restrict s, const char *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/swprintf.c b/src/stdio/swprintf.c index 5ece97c4..cbf83d23 100644 --- a/src/stdio/swprintf.c +++ b/src/stdio/swprintf.c @@ -2,7 +2,7 @@ #include #include -int swprintf(wchar_t *s, size_t n, const wchar_t *fmt, ...) +int swprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/swscanf.c b/src/stdio/swscanf.c index b66ad03e..1fe3c3d8 100644 --- a/src/stdio/swscanf.c +++ b/src/stdio/swscanf.c @@ -2,7 +2,7 @@ #include #include -int swscanf(const wchar_t *s, const wchar_t *fmt, ...) +int swscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/vdprintf.c b/src/stdio/vdprintf.c index b41a3c74..c35d9b4f 100644 --- a/src/stdio/vdprintf.c +++ b/src/stdio/vdprintf.c @@ -5,7 +5,7 @@ static size_t wrap_write(FILE *f, const unsigned char *buf, size_t len) return __stdio_write(f, buf, len); } -int vdprintf(int fd, const char *fmt, va_list ap) +int vdprintf(int fd, const char *restrict fmt, va_list ap) { FILE f = { .fd = fd, .lbf = EOF, .write = wrap_write, diff --git a/src/stdio/vfprintf.c b/src/stdio/vfprintf.c index d186d58b..6525938f 100644 --- a/src/stdio/vfprintf.c +++ b/src/stdio/vfprintf.c @@ -636,7 +636,7 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg, return 1; } -int vfprintf(FILE *f, const char *fmt, va_list ap) +int vfprintf(FILE *restrict f, const char *restrict fmt, va_list ap) { va_list ap2; int nl_type[NL_ARGMAX+1] = {0}; diff --git a/src/stdio/vfscanf.c b/src/stdio/vfscanf.c index 61b0edb1..54d08495 100644 --- a/src/stdio/vfscanf.c +++ b/src/stdio/vfscanf.c @@ -71,7 +71,7 @@ static int readwc(int c, wchar_t **wcs, mbstate_t *st) return 0; } -int vfscanf(FILE *f, const char *fmt, va_list ap) +int vfscanf(FILE *restrict f, const char *restrict fmt, va_list ap) { int width; int size; diff --git a/src/stdio/vfwprintf.c b/src/stdio/vfwprintf.c index 62829806..a42ba195 100644 --- a/src/stdio/vfwprintf.c +++ b/src/stdio/vfwprintf.c @@ -336,7 +336,7 @@ static int wprintf_core(FILE *f, const wchar_t *fmt, va_list *ap, union arg *nl_ return 1; } -int vfwprintf(FILE *f, const wchar_t *fmt, va_list ap) +int vfwprintf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap) { va_list ap2; int nl_type[NL_ARGMAX] = {0}; diff --git a/src/stdio/vfwscanf.c b/src/stdio/vfwscanf.c index de74fe0c..b3bc6f3a 100644 --- a/src/stdio/vfwscanf.c +++ b/src/stdio/vfwscanf.c @@ -86,7 +86,7 @@ static int in_set(const wchar_t *set, int c) ((f)->rend && (c)<128U ? *--(f)->rpos : ungetwc((c),(f))) #endif -int vfwscanf(FILE *f, const wchar_t *fmt, va_list ap) +int vfwscanf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap) { int width; int size; diff --git a/src/stdio/vprintf.c b/src/stdio/vprintf.c index 67b38dac..30d2bffa 100644 --- a/src/stdio/vprintf.c +++ b/src/stdio/vprintf.c @@ -1,6 +1,6 @@ #include -int vprintf(const char *fmt, va_list ap) +int vprintf(const char *restrict fmt, va_list ap) { return vfprintf(stdout, fmt, ap); } diff --git a/src/stdio/vscanf.c b/src/stdio/vscanf.c index 6f55b1c3..6901958a 100644 --- a/src/stdio/vscanf.c +++ b/src/stdio/vscanf.c @@ -1,7 +1,7 @@ #include #include -int vscanf(const char *fmt, va_list ap) +int vscanf(const char *restrict fmt, va_list ap) { return vfscanf(stdin, fmt, ap); } diff --git a/src/stdio/vsnprintf.c b/src/stdio/vsnprintf.c index ba17bd7d..6f19b028 100644 --- a/src/stdio/vsnprintf.c +++ b/src/stdio/vsnprintf.c @@ -10,7 +10,7 @@ static size_t sn_write(FILE *f, const unsigned char *s, size_t l) return l; } -int vsnprintf(char *s, size_t n, const char *fmt, va_list ap) +int vsnprintf(char *restrict s, size_t n, const char *restrict fmt, va_list ap) { int r; char b; diff --git a/src/stdio/vsprintf.c b/src/stdio/vsprintf.c index 7836ccb2..c57349d4 100644 --- a/src/stdio/vsprintf.c +++ b/src/stdio/vsprintf.c @@ -1,7 +1,7 @@ #include #include -int vsprintf(char *s, const char *fmt, va_list ap) +int vsprintf(char *restrict s, const char *restrict fmt, va_list ap) { return vsnprintf(s, INT_MAX, fmt, ap); } diff --git a/src/stdio/vsscanf.c b/src/stdio/vsscanf.c index fbc15e69..049f4dd0 100644 --- a/src/stdio/vsscanf.c +++ b/src/stdio/vsscanf.c @@ -5,7 +5,7 @@ static size_t do_read(FILE *f, unsigned char *buf, size_t len) return __string_read(f, buf, len); } -int vsscanf(const char *s, const char *fmt, va_list ap) +int vsscanf(const char *restrict s, const char *restrict fmt, va_list ap) { FILE f = { .buf = (void *)s, .cookie = (void *)s, diff --git a/src/stdio/vswprintf.c b/src/stdio/vswprintf.c index 8e8f80ce..f3d4fec1 100644 --- a/src/stdio/vswprintf.c +++ b/src/stdio/vswprintf.c @@ -22,7 +22,7 @@ static size_t sw_write(FILE *f, const unsigned char *s, size_t l) return i<0 ? i : l0; } -int vswprintf(wchar_t *s, size_t n, const wchar_t *fmt, va_list ap) +int vswprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, va_list ap) { int r; FILE f; diff --git a/src/stdio/vswscanf.c b/src/stdio/vswscanf.c index 4c39f806..a205200a 100644 --- a/src/stdio/vswscanf.c +++ b/src/stdio/vswscanf.c @@ -23,7 +23,7 @@ static size_t wstring_read(FILE *f, unsigned char *buf, size_t len) return 1; } -int vswscanf(const wchar_t *s, const wchar_t *fmt, va_list ap) +int vswscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, va_list ap) { unsigned char buf[256]; FILE f = { diff --git a/src/stdio/vwprintf.c b/src/stdio/vwprintf.c index c1923e62..eeeecdc7 100644 --- a/src/stdio/vwprintf.c +++ b/src/stdio/vwprintf.c @@ -1,7 +1,7 @@ #include #include -int vwprintf(const wchar_t *fmt, va_list ap) +int vwprintf(const wchar_t *restrict fmt, va_list ap) { return vfwprintf(stdout, fmt, ap); } diff --git a/src/stdio/vwscanf.c b/src/stdio/vwscanf.c index 86da0457..9297cf0d 100644 --- a/src/stdio/vwscanf.c +++ b/src/stdio/vwscanf.c @@ -2,7 +2,7 @@ #include #include -int vwscanf(const wchar_t *fmt, va_list ap) +int vwscanf(const wchar_t *restrict fmt, va_list ap) { return vfwscanf(stdin, fmt, ap); } diff --git a/src/stdio/wprintf.c b/src/stdio/wprintf.c index 20ca61a0..342cd979 100644 --- a/src/stdio/wprintf.c +++ b/src/stdio/wprintf.c @@ -2,7 +2,7 @@ #include #include -int wprintf(const wchar_t *fmt, ...) +int wprintf(const wchar_t *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdio/wscanf.c b/src/stdio/wscanf.c index 34b58846..a207cc1b 100644 --- a/src/stdio/wscanf.c +++ b/src/stdio/wscanf.c @@ -2,7 +2,7 @@ #include #include -int wscanf(const wchar_t *fmt, ...) +int wscanf(const wchar_t *restrict fmt, ...) { int ret; va_list ap; diff --git a/src/stdlib/strtod.c b/src/stdlib/strtod.c index 1886efa5..c6f89e79 100644 --- a/src/stdlib/strtod.c +++ b/src/stdlib/strtod.c @@ -16,17 +16,17 @@ static long double strtox(const char *s, char **p, int prec) return y; } -float strtof(const char *s, char **p) +float strtof(const char *restrict s, char **restrict p) { return strtox(s, p, 0); } -double strtod(const char *s, char **p) +double strtod(const char *restrict s, char **restrict p) { return strtox(s, p, 1); } -long double strtold(const char *s, char **p) +long double strtold(const char *restrict s, char **restrict p) { return strtox(s, p, 2); } diff --git a/src/stdlib/strtol.c b/src/stdlib/strtol.c index 4a949cb0..23a2f3b6 100644 --- a/src/stdlib/strtol.c +++ b/src/stdlib/strtol.c @@ -22,32 +22,32 @@ static unsigned long long strtox(const char *s, char **p, int base, unsigned lon return y; } -unsigned long long strtoull(const char *s, char **p, int base) +unsigned long long strtoull(const char *restrict s, char **restrict p, int base) { return strtox(s, p, base, ULLONG_MAX); } -long long strtoll(const char *s, char **p, int base) +long long strtoll(const char *restrict s, char **restrict p, int base) { return strtox(s, p, base, LLONG_MIN); } -unsigned long strtoul(const char *s, char **p, int base) +unsigned long strtoul(const char *restrict s, char **restrict p, int base) { return strtox(s, p, base, ULONG_MAX); } -long strtol(const char *s, char **p, int base) +long strtol(const char *restrict s, char **restrict p, int base) { return strtox(s, p, base, 0UL+LONG_MIN); } -intmax_t strtoimax(const char *s, char **p, int base) +intmax_t strtoimax(const char *restrict s, char **restrict p, int base) { return strtoll(s, p, base); } -uintmax_t strtoumax(const char *s, char **p, int base) +uintmax_t strtoumax(const char *restrict s, char **restrict p, int base) { return strtoull(s, p, base); } diff --git a/src/stdlib/wcstod.c b/src/stdlib/wcstod.c index 5ec45dd7..03670b0b 100644 --- a/src/stdlib/wcstod.c +++ b/src/stdlib/wcstod.c @@ -47,17 +47,17 @@ static long double wcstox(const wchar_t *s, wchar_t **p, int prec) return y; } -float wcstof(const wchar_t *s, wchar_t **p) +float wcstof(const wchar_t *restrict s, wchar_t **restrict p) { return wcstox(s, p, 0); } -double wcstod(const wchar_t *s, wchar_t **p) +double wcstod(const wchar_t *restrict s, wchar_t **restrict p) { return wcstox(s, p, 1); } -long double wcstold(const wchar_t *s, wchar_t **p) +long double wcstold(const wchar_t *restrict s, wchar_t **restrict p) { return wcstox(s, p, 2); } diff --git a/src/stdlib/wcstol.c b/src/stdlib/wcstol.c index 840bb0a6..3d7c97da 100644 --- a/src/stdlib/wcstol.c +++ b/src/stdlib/wcstol.c @@ -47,32 +47,32 @@ static unsigned long long wcstox(const wchar_t *s, wchar_t **p, int base, unsign return y; } -unsigned long long wcstoull(const wchar_t *s, wchar_t **p, int base) +unsigned long long wcstoull(const wchar_t *restrict s, wchar_t **restrict p, int base) { return wcstox(s, p, base, ULLONG_MAX); } -long long wcstoll(const wchar_t *s, wchar_t **p, int base) +long long wcstoll(const wchar_t *restrict s, wchar_t **restrict p, int base) { return wcstox(s, p, base, LLONG_MIN); } -unsigned long wcstoul(const wchar_t *s, wchar_t **p, int base) +unsigned long wcstoul(const wchar_t *restrict s, wchar_t **restrict p, int base) { return wcstox(s, p, base, ULONG_MAX); } -long wcstol(const wchar_t *s, wchar_t **p, int base) +long wcstol(const wchar_t *restrict s, wchar_t **restrict p, int base) { return wcstox(s, p, base, 0UL+LONG_MIN); } -intmax_t wcstoimax(const wchar_t *s, wchar_t **p, int base) +intmax_t wcstoimax(const wchar_t *restrict s, wchar_t **restrict p, int base) { return wcstoll(s, p, base); } -uintmax_t wcstoumax(const wchar_t *s, wchar_t **p, int base) +uintmax_t wcstoumax(const wchar_t *restrict s, wchar_t **restrict p, int base) { return wcstoull(s, p, base); } diff --git a/src/string/memccpy.c b/src/string/memccpy.c index 2ccb31bb..b85009c8 100644 --- a/src/string/memccpy.c +++ b/src/string/memccpy.c @@ -8,7 +8,7 @@ #define HIGHS (ONES * (UCHAR_MAX/2+1)) #define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) -void *memccpy(void *dest, const void *src, int c, size_t n) +void *memccpy(void *restrict dest, const void *restrict src, int c, size_t n) { unsigned char *d = dest; const unsigned char *s = src; diff --git a/src/string/memcpy.c b/src/string/memcpy.c index 02cb4694..8e98302f 100644 --- a/src/string/memcpy.c +++ b/src/string/memcpy.c @@ -6,7 +6,7 @@ #define ALIGN (sizeof(size_t)-1) #define ONES ((size_t)-1/UCHAR_MAX) -void *memcpy(void *dest, const void *src, size_t n) +void *memcpy(void *restrict dest, const void *restrict src, size_t n) { unsigned char *d = dest; const unsigned char *s = src; diff --git a/src/string/stpcpy.c b/src/string/stpcpy.c index 10ca4933..da96f215 100644 --- a/src/string/stpcpy.c +++ b/src/string/stpcpy.c @@ -9,7 +9,7 @@ #define HIGHS (ONES * (UCHAR_MAX/2+1)) #define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) -char *__stpcpy(char *d, const char *s) +char *__stpcpy(char *restrict d, const char *restrict s) { size_t *wd; const size_t *ws; diff --git a/src/string/stpncpy.c b/src/string/stpncpy.c index a04cdce8..0a2c2a9d 100644 --- a/src/string/stpncpy.c +++ b/src/string/stpncpy.c @@ -9,7 +9,7 @@ #define HIGHS (ONES * (UCHAR_MAX/2+1)) #define HASZERO(x) ((x)-ONES & ~(x) & HIGHS) -char *__stpncpy(char *d, const char *s, size_t n) +char *__stpncpy(char *restrict d, const char *restrict s, size_t n) { size_t *wd; const size_t *ws; diff --git a/src/string/strcat.c b/src/string/strcat.c index 29fdb611..33f749b1 100644 --- a/src/string/strcat.c +++ b/src/string/strcat.c @@ -1,6 +1,6 @@ #include -char *strcat(char *dest, const char *src) +char *strcat(char *restrict dest, const char *restrict src) { strcpy(dest + strlen(dest), src); return dest; diff --git a/src/string/strcpy.c b/src/string/strcpy.c index 7675e9ce..f7e3ba38 100644 --- a/src/string/strcpy.c +++ b/src/string/strcpy.c @@ -2,7 +2,7 @@ char *__stpcpy(char *, const char *); -char *strcpy(char *dest, const char *src) +char *strcpy(char *restrict dest, const char *restrict src) { #if 1 __stpcpy(dest, src); diff --git a/src/string/strncat.c b/src/string/strncat.c index 08685ad6..01ca2a23 100644 --- a/src/string/strncat.c +++ b/src/string/strncat.c @@ -1,6 +1,6 @@ #include -char *strncat(char *d, const char *s, size_t n) +char *strncat(char *restrict d, const char *restrict s, size_t n) { char *a = d; d += strlen(d); diff --git a/src/string/strncpy.c b/src/string/strncpy.c index c0cd7974..441ba033 100644 --- a/src/string/strncpy.c +++ b/src/string/strncpy.c @@ -2,7 +2,7 @@ char *__stpncpy(char *, const char *, size_t); -char *strncpy(char *d, const char *s, size_t n) +char *strncpy(char *restrict d, const char *restrict s, size_t n) { __stpncpy(d, s, n); return d; diff --git a/src/string/strtok.c b/src/string/strtok.c index 1ba221cb..35087902 100644 --- a/src/string/strtok.c +++ b/src/string/strtok.c @@ -1,6 +1,6 @@ #include -char *strtok(char *s, const char *sep) +char *strtok(char *restrict s, const char *restrict sep) { static char *p; if (!s && !(s = p)) return NULL; diff --git a/src/string/strtok_r.c b/src/string/strtok_r.c index c763897a..862d4fe4 100644 --- a/src/string/strtok_r.c +++ b/src/string/strtok_r.c @@ -1,6 +1,6 @@ #include -char *strtok_r(char *s, const char *sep, char **p) +char *strtok_r(char *restrict s, const char *restrict sep, char **restrict p) { if (!s && !(s = *p)) return NULL; s += strspn(s, sep); diff --git a/src/string/swab.c b/src/string/swab.c index b2132884..9ed6fcda 100644 --- a/src/string/swab.c +++ b/src/string/swab.c @@ -1,6 +1,6 @@ #include -void swab(const void *_src, void *_dest, ssize_t n) +void swab(const void *restrict _src, void *restrict _dest, ssize_t n) { const char *src = _src; char *dest = _dest; diff --git a/src/string/wcpcpy.c b/src/string/wcpcpy.c index fdf878f6..ef401343 100644 --- a/src/string/wcpcpy.c +++ b/src/string/wcpcpy.c @@ -1,6 +1,6 @@ #include -wchar_t *wcpcpy(wchar_t *d, const wchar_t *s) +wchar_t *wcpcpy(wchar_t *restrict d, const wchar_t *restrict s) { return wcscpy(d, s) + wcslen(s); } diff --git a/src/string/wcpncpy.c b/src/string/wcpncpy.c index aef80962..b667f6d6 100644 --- a/src/string/wcpncpy.c +++ b/src/string/wcpncpy.c @@ -1,6 +1,6 @@ #include -wchar_t *wcpncpy(wchar_t *d, const wchar_t *s, size_t n) +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/src/string/wcscat.c b/src/string/wcscat.c index 946f16e2..d4f00ebd 100644 --- a/src/string/wcscat.c +++ b/src/string/wcscat.c @@ -1,6 +1,6 @@ #include -wchar_t *wcscat(wchar_t *dest, const wchar_t *src) +wchar_t *wcscat(wchar_t *restrict dest, const wchar_t *restrict src) { wcscpy(dest + wcslen(dest), src); return dest; diff --git a/src/string/wcscpy.c b/src/string/wcscpy.c index e0ac194f..625bf53d 100644 --- a/src/string/wcscpy.c +++ b/src/string/wcscpy.c @@ -1,6 +1,6 @@ #include -wchar_t *wcscpy(wchar_t *d, const wchar_t *s) +wchar_t *wcscpy(wchar_t *restrict d, const wchar_t *restrict s) { wchar_t *a = d; while ((*d++ = *s++)); diff --git a/src/string/wcsncat.c b/src/string/wcsncat.c index 9d61bbbd..8563f1a2 100644 --- a/src/string/wcsncat.c +++ b/src/string/wcsncat.c @@ -1,6 +1,6 @@ #include -wchar_t *wcsncat(wchar_t *d, const wchar_t *s, size_t n) +wchar_t *wcsncat(wchar_t *restrict d, const wchar_t *restrict s, size_t n) { wchar_t *a = d; d += wcslen(d); diff --git a/src/string/wcsncpy.c b/src/string/wcsncpy.c index 714eeb64..4bede04d 100644 --- a/src/string/wcsncpy.c +++ b/src/string/wcsncpy.c @@ -1,6 +1,6 @@ #include -wchar_t *wcsncpy(wchar_t *d, const wchar_t *s, size_t n) +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++; diff --git a/src/string/wcsstr.c b/src/string/wcsstr.c index fc4bacec..037d0965 100644 --- a/src/string/wcsstr.c +++ b/src/string/wcsstr.c @@ -93,7 +93,7 @@ static wchar_t *twoway_wcsstr(const wchar_t *h, const wchar_t *n) } } -wchar_t *wcsstr(const wchar_t *h, const wchar_t *n) +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; diff --git a/src/string/wcstok.c b/src/string/wcstok.c index c932d0a0..ecc80331 100644 --- a/src/string/wcstok.c +++ b/src/string/wcstok.c @@ -1,6 +1,6 @@ #include -wchar_t *wcstok(wchar_t *s, const wchar_t *sep, wchar_t **p) +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); diff --git a/src/string/wmemcpy.c b/src/string/wmemcpy.c index 330e37c7..55a8e1d8 100644 --- a/src/string/wmemcpy.c +++ b/src/string/wmemcpy.c @@ -1,7 +1,7 @@ #include #include -wchar_t *wmemcpy(wchar_t *d, const wchar_t *s, size_t n) +wchar_t *wmemcpy(wchar_t *restrict d, const wchar_t *restrict s, size_t n) { wchar_t *a = d; while (n--) *d++ = *s++; diff --git a/src/thread/pthread_attr_getguardsize.c b/src/thread/pthread_attr_getguardsize.c index 71133f80..93ba05dd 100644 --- a/src/thread/pthread_attr_getguardsize.c +++ b/src/thread/pthread_attr_getguardsize.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_attr_getguardsize(const pthread_attr_t *a, size_t *size) +int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size) { *size = a->_a_guardsize + DEFAULT_GUARD_SIZE; return 0; diff --git a/src/thread/pthread_attr_getschedparam.c b/src/thread/pthread_attr_getschedparam.c index 804f6f0f..5806bdf1 100644 --- a/src/thread/pthread_attr_getschedparam.c +++ b/src/thread/pthread_attr_getschedparam.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_attr_getschedparam(const pthread_attr_t *a, struct sched_param *param) +int pthread_attr_getschedparam(const pthread_attr_t *restrict a, struct sched_param *restrict param) { param->sched_priority = 0; return 0; diff --git a/src/thread/pthread_attr_getscope.c b/src/thread/pthread_attr_getscope.c index fc42a52f..c0167b6a 100644 --- a/src/thread/pthread_attr_getscope.c +++ b/src/thread/pthread_attr_getscope.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_attr_getscope(const pthread_attr_t *a, int *scope) +int pthread_attr_getscope(const pthread_attr_t *restrict a, int *restrict scope) { return 0; } diff --git a/src/thread/pthread_attr_getstack.c b/src/thread/pthread_attr_getstack.c index 07ac5926..70adbb03 100644 --- a/src/thread/pthread_attr_getstack.c +++ b/src/thread/pthread_attr_getstack.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_attr_getstack(const pthread_attr_t *a, void **addr, size_t *size) +int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size) { if (!a->_a_stackaddr) return EINVAL; diff --git a/src/thread/pthread_attr_getstacksize.c b/src/thread/pthread_attr_getstacksize.c index 9575203d..f69cc1e6 100644 --- a/src/thread/pthread_attr_getstacksize.c +++ b/src/thread/pthread_attr_getstacksize.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_attr_getstacksize(const pthread_attr_t *a, size_t *size) +int pthread_attr_getstacksize(const pthread_attr_t *restrict a, size_t *restrict size) { *size = a->_a_stacksize + DEFAULT_STACK_SIZE; return 0; diff --git a/src/thread/pthread_attr_setschedparam.c b/src/thread/pthread_attr_setschedparam.c index b305f2fa..77ce9c98 100644 --- a/src/thread/pthread_attr_setschedparam.c +++ b/src/thread/pthread_attr_setschedparam.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_attr_setschedparam(pthread_attr_t *a, const struct sched_param *param) +int pthread_attr_setschedparam(pthread_attr_t *restrict a, const struct sched_param *restrict param) { if (param->sched_priority) return ENOTSUP; return 0; diff --git a/src/thread/pthread_barrier_init.c b/src/thread/pthread_barrier_init.c index ccaab4eb..01e8cd6b 100644 --- a/src/thread/pthread_barrier_init.c +++ b/src/thread/pthread_barrier_init.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_barrier_init(pthread_barrier_t *b, const pthread_barrierattr_t *a, unsigned count) +int pthread_barrier_init(pthread_barrier_t *restrict b, const pthread_barrierattr_t *restrict a, unsigned count) { if (count-1 > INT_MAX-1) return EINVAL; *b = (pthread_barrier_t){ ._b_limit = count-1 | (a?*a:0) }; diff --git a/src/thread/pthread_barrierattr_getpshared.c b/src/thread/pthread_barrierattr_getpshared.c index 8428bbec..df337c29 100644 --- a/src/thread/pthread_barrierattr_getpshared.c +++ b/src/thread/pthread_barrierattr_getpshared.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_barrierattr_getpshared(const pthread_barrierattr_t *a, int *pshared) +int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict a, int *restrict pshared) { *pshared = !!*a; return 0; diff --git a/src/thread/pthread_cond_init.c b/src/thread/pthread_cond_init.c index 03aff768..2eac30f1 100644 --- a/src/thread/pthread_cond_init.c +++ b/src/thread/pthread_cond_init.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_cond_init(pthread_cond_t *c, const pthread_condattr_t *a) +int pthread_cond_init(pthread_cond_t *restrict c, const pthread_condattr_t *restrict a) { memset(c, 0, sizeof *c); if (a) { diff --git a/src/thread/pthread_cond_timedwait.c b/src/thread/pthread_cond_timedwait.c index 1d0f578c..1f25c8e7 100644 --- a/src/thread/pthread_cond_timedwait.c +++ b/src/thread/pthread_cond_timedwait.c @@ -36,7 +36,7 @@ static void cleanup(void *p) pthread_mutex_lock(cm->m); } -int pthread_cond_timedwait(pthread_cond_t *c, pthread_mutex_t *m, const struct timespec *ts) +int pthread_cond_timedwait(pthread_cond_t *restrict c, pthread_mutex_t *restrict m, const struct timespec *restrict ts) { struct cm cm = { .c=c, .m=m }; int r, e=0, seq; diff --git a/src/thread/pthread_cond_wait.c b/src/thread/pthread_cond_wait.c index eb70e5f7..8735bf14 100644 --- a/src/thread/pthread_cond_wait.c +++ b/src/thread/pthread_cond_wait.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_cond_wait(pthread_cond_t *c, pthread_mutex_t *m) +int pthread_cond_wait(pthread_cond_t *restrict c, pthread_mutex_t *restrict m) { return pthread_cond_timedwait(c, m, 0); } diff --git a/src/thread/pthread_condattr_getclock.c b/src/thread/pthread_condattr_getclock.c index a77cc3e0..d2933843 100644 --- a/src/thread/pthread_condattr_getclock.c +++ b/src/thread/pthread_condattr_getclock.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_condattr_getclock(const pthread_condattr_t *a, clockid_t *clk) +int pthread_condattr_getclock(const pthread_condattr_t *restrict a, clockid_t *restrict clk) { *clk = *a & 0x7fffffff; return 0; diff --git a/src/thread/pthread_condattr_getpshared.c b/src/thread/pthread_condattr_getpshared.c index b620976c..4991e495 100644 --- a/src/thread/pthread_condattr_getpshared.c +++ b/src/thread/pthread_condattr_getpshared.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_condattr_getpshared(const pthread_condattr_t *a, int *pshared) +int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restrict pshared) { *pshared = *a>>31; return 0; diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c index 52b48d6f..4567b41c 100644 --- a/src/thread/pthread_create.c +++ b/src/thread/pthread_create.c @@ -84,7 +84,7 @@ static void init_file_lock(FILE *f) if (f && f->lock<0) f->lock = 0; } -int pthread_create(pthread_t *res, const pthread_attr_t *attr, void *(*entry)(void *), void *arg) +int pthread_create(pthread_t *restrict res, const pthread_attr_t *restrict attr, void *(*entry)(void *), void *restrict arg) { int ret; size_t size = DEFAULT_STACK_SIZE + DEFAULT_GUARD_SIZE; diff --git a/src/thread/pthread_mutex_init.c b/src/thread/pthread_mutex_init.c index 75ddf02b..fb689271 100644 --- a/src/thread/pthread_mutex_init.c +++ b/src/thread/pthread_mutex_init.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_mutex_init(pthread_mutex_t *m, const pthread_mutexattr_t *a) +int pthread_mutex_init(pthread_mutex_t *restrict m, const pthread_mutexattr_t *restrict a) { memset(m, 0, sizeof *m); if (a) m->_m_type = *a & 7; diff --git a/src/thread/pthread_mutex_timedlock.c b/src/thread/pthread_mutex_timedlock.c index 44bd4bbe..c24270d8 100644 --- a/src/thread/pthread_mutex_timedlock.c +++ b/src/thread/pthread_mutex_timedlock.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_mutex_timedlock(pthread_mutex_t *m, const struct timespec *at) +int pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct timespec *restrict at) { int r, t; diff --git a/src/thread/pthread_mutexattr_getpshared.c b/src/thread/pthread_mutexattr_getpshared.c index 3e0438b3..e7340b1a 100644 --- a/src/thread/pthread_mutexattr_getpshared.c +++ b/src/thread/pthread_mutexattr_getpshared.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_mutexattr_getpshared(const pthread_mutexattr_t *a, int *pshared) +int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared) { *pshared = *a>>31; return 0; diff --git a/src/thread/pthread_mutexattr_getrobust.c b/src/thread/pthread_mutexattr_getrobust.c index b83cb7c6..4d176f20 100644 --- a/src/thread/pthread_mutexattr_getrobust.c +++ b/src/thread/pthread_mutexattr_getrobust.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_mutexattr_getrobust(const pthread_mutexattr_t *a, int *robust) +int pthread_mutexattr_getrobust(const pthread_mutexattr_t *restrict a, int *restrict robust) { *robust = *a / 4U % 2; return 0; diff --git a/src/thread/pthread_mutexattr_gettype.c b/src/thread/pthread_mutexattr_gettype.c index 9edb16c6..7688b068 100644 --- a/src/thread/pthread_mutexattr_gettype.c +++ b/src/thread/pthread_mutexattr_gettype.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_mutexattr_gettype(const pthread_mutexattr_t *a, int *type) +int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict a, int *restrict type) { *type = *a & 3; return 0; diff --git a/src/thread/pthread_rwlock_init.c b/src/thread/pthread_rwlock_init.c index f87d566c..29003bc6 100644 --- a/src/thread/pthread_rwlock_init.c +++ b/src/thread/pthread_rwlock_init.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_rwlock_init(pthread_rwlock_t *rw, const pthread_rwlockattr_t *a) +int pthread_rwlock_init(pthread_rwlock_t *restrict rw, const pthread_rwlockattr_t *restrict a) { memset(rw, 0, sizeof *rw); if (a) { diff --git a/src/thread/pthread_rwlock_timedrdlock.c b/src/thread/pthread_rwlock_timedrdlock.c index b5cb404a..c0c94c97 100644 --- a/src/thread/pthread_rwlock_timedrdlock.c +++ b/src/thread/pthread_rwlock_timedrdlock.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_rwlock_timedrdlock(pthread_rwlock_t *rw, const struct timespec *at) +int pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at) { int r, t; while ((r=pthread_rwlock_tryrdlock(rw))==EBUSY) { diff --git a/src/thread/pthread_rwlock_timedwrlock.c b/src/thread/pthread_rwlock_timedwrlock.c index aa2fd199..339a1679 100644 --- a/src/thread/pthread_rwlock_timedwrlock.c +++ b/src/thread/pthread_rwlock_timedwrlock.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_rwlock_timedwrlock(pthread_rwlock_t *rw, const struct timespec *at) +int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at) { int r, t; while ((r=pthread_rwlock_trywrlock(rw))==EBUSY) { diff --git a/src/thread/pthread_rwlockattr_getpshared.c b/src/thread/pthread_rwlockattr_getpshared.c index 0217bf4e..02fd8c80 100644 --- a/src/thread/pthread_rwlockattr_getpshared.c +++ b/src/thread/pthread_rwlockattr_getpshared.c @@ -1,6 +1,6 @@ #include "pthread_impl.h" -int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *a, int *pshared) +int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict a, int *restrict pshared) { *pshared = *(int *)a; return 0; diff --git a/src/thread/pthread_sigmask.c b/src/thread/pthread_sigmask.c index cddc2bca..f6102ad4 100644 --- a/src/thread/pthread_sigmask.c +++ b/src/thread/pthread_sigmask.c @@ -3,7 +3,7 @@ #include #include "syscall.h" -int pthread_sigmask(int how, const sigset_t *set, sigset_t *old) +int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict old) { int ret; if ((unsigned)how - SIG_BLOCK > 2U) return EINVAL; diff --git a/src/thread/sem_getvalue.c b/src/thread/sem_getvalue.c index 643c0968..d9d83071 100644 --- a/src/thread/sem_getvalue.c +++ b/src/thread/sem_getvalue.c @@ -1,6 +1,6 @@ #include -int sem_getvalue(sem_t *sem, int *valp) +int sem_getvalue(sem_t *restrict sem, int *restrict valp) { int val = sem->__val[0]; *valp = val < 0 ? 0 : val; diff --git a/src/thread/sem_timedwait.c b/src/thread/sem_timedwait.c index 64b4342c..6d0d0114 100644 --- a/src/thread/sem_timedwait.c +++ b/src/thread/sem_timedwait.c @@ -6,7 +6,7 @@ static void cleanup(void *p) a_dec(p); } -int sem_timedwait(sem_t *sem, const struct timespec *at) +int sem_timedwait(sem_t *restrict sem, const struct timespec *restrict at) { while (sem_trywait(sem)) { int r; diff --git a/src/time/__asctime.c b/src/time/__asctime.c index 7cc4f503..5362f0db 100644 --- a/src/time/__asctime.c +++ b/src/time/__asctime.c @@ -5,7 +5,7 @@ const char *__langinfo(nl_item); -char *__asctime(const struct tm *tm, char *buf) +char *__asctime(const struct tm *restrict tm, char *restrict buf) { /* FIXME: change __langinfo to __C_langinfo once we have locales */ if (snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n", diff --git a/src/time/asctime_r.c b/src/time/asctime_r.c index e51b8804..7dfbb121 100644 --- a/src/time/asctime_r.c +++ b/src/time/asctime_r.c @@ -1,8 +1,8 @@ #include -char *__asctime(const struct tm *, char *); +char *__asctime(const struct tm *restrict, char *restrict); -char *asctime_r(const struct tm *tm, char *buf) +char *asctime_r(const struct tm *restrict tm, char *restrict buf) { return __asctime(tm, buf); } diff --git a/src/time/gettimeofday.c b/src/time/gettimeofday.c index 09afb70b..691f8e90 100644 --- a/src/time/gettimeofday.c +++ b/src/time/gettimeofday.c @@ -2,7 +2,7 @@ #include #include "syscall.h" -int gettimeofday(struct timeval *tv, void *tz) +int gettimeofday(struct timeval *restrict tv, void *restrict tz) { struct timespec ts; if (!tv) return 0; diff --git a/src/time/gmtime_r.c b/src/time/gmtime_r.c index 5b565a65..13a2548f 100644 --- a/src/time/gmtime_r.c +++ b/src/time/gmtime_r.c @@ -2,7 +2,7 @@ #include "__time.h" -struct tm *gmtime_r(const time_t *t, struct tm *result) +struct tm *gmtime_r(const time_t *restrict t, struct tm *restrict result) { __time_to_tm(*t, result); result->tm_isdst = 0; diff --git a/src/time/localtime_r.c b/src/time/localtime_r.c index 2bf10378..389a5917 100644 --- a/src/time/localtime_r.c +++ b/src/time/localtime_r.c @@ -2,7 +2,7 @@ #include "__time.h" -struct tm *localtime_r(const time_t *t, struct tm *result) +struct tm *localtime_r(const time_t *restrict t, struct tm *restrict result) { __tzset(); __time_to_tm(*t - __timezone, result); diff --git a/src/time/strftime.c b/src/time/strftime.c index f1b94631..b69a83a4 100644 --- a/src/time/strftime.c +++ b/src/time/strftime.c @@ -8,7 +8,7 @@ const char *__langinfo(nl_item); -size_t strftime(char *s, size_t n, const char *f, const struct tm *tm) +size_t strftime(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm) { nl_item item; int val; diff --git a/src/time/strptime.c b/src/time/strptime.c index 4c0bb26c..0f66e6c6 100644 --- a/src/time/strptime.c +++ b/src/time/strptime.c @@ -7,7 +7,7 @@ #include #include -char *strptime(const char *s, const char *f, struct tm *tm) +char *strptime(const char *restrict s, const char *restrict f, struct tm *restrict tm) { int i, w, neg, adj, min, range, *dest; const char *ex; diff --git a/src/time/timer_create.c b/src/time/timer_create.c index 813678a1..560f1a84 100644 --- a/src/time/timer_create.c +++ b/src/time/timer_create.c @@ -76,7 +76,7 @@ static void *start(void *arg) return 0; } -int timer_create(clockid_t clk, struct sigevent *evp, timer_t *res) +int timer_create(clockid_t clk, struct sigevent *restrict evp, timer_t *restrict res) { static pthread_once_t once = PTHREAD_ONCE_INIT; pthread_t td; diff --git a/src/time/timer_settime.c b/src/time/timer_settime.c index c400d45c..baf5076b 100644 --- a/src/time/timer_settime.c +++ b/src/time/timer_settime.c @@ -1,7 +1,7 @@ #include #include "pthread_impl.h" -int timer_settime(timer_t t, int flags, const struct itimerspec *val, struct itimerspec *old) +int timer_settime(timer_t t, int flags, const struct itimerspec *restrict val, struct itimerspec *restrict old) { if ((uintptr_t)t >= 0x100000) t = ((pthread_t)t)->result; return syscall(SYS_timer_settime, (long)t, flags, val, old); diff --git a/src/time/wcsftime.c b/src/time/wcsftime.c index 7db76922..da6c1f8a 100644 --- a/src/time/wcsftime.c +++ b/src/time/wcsftime.c @@ -2,7 +2,7 @@ #include #include -size_t wcsftime(wchar_t *wcs, size_t n, const wchar_t *f, const struct tm *tm) +size_t wcsftime(wchar_t *restrict wcs, size_t n, const wchar_t *restrict f, const struct tm *restrict tm) { size_t k, n0=n; char out[100], in[4]; diff --git a/src/unistd/readlink.c b/src/unistd/readlink.c index 0c6d3861..ec291e3d 100644 --- a/src/unistd/readlink.c +++ b/src/unistd/readlink.c @@ -1,7 +1,7 @@ #include #include "syscall.h" -ssize_t readlink(const char *path, char *buf, size_t bufsize) +ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize) { return syscall(SYS_readlink, path, buf, bufsize); } diff --git a/src/unistd/readlinkat.c b/src/unistd/readlinkat.c index e9498650..9af45cd5 100644 --- a/src/unistd/readlinkat.c +++ b/src/unistd/readlinkat.c @@ -1,7 +1,7 @@ #include #include "syscall.h" -ssize_t readlinkat(int fd, const char *path, char *buf, size_t bufsize) +ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize) { return syscall(SYS_readlinkat, fd, path, buf, bufsize); }