Index: include/stdio.h =================================================================== --- include/stdio.h +++ include/stdio.h @@ -250,12 +250,12 @@ int fgetpos(FILE * __restrict, fpos_t * __restrict); char *fgets(char * __restrict, int, FILE * __restrict); FILE *fopen(const char * __restrict, const char * __restrict); -int fprintf(FILE * __restrict, const char * __restrict, ...); +int fprintf(FILE * __restrict, const char * _Nonnull __restrict, ...); int fputc(int, FILE *); int fputs(const char * __restrict, FILE * __restrict); size_t fread(void * __restrict, size_t, size_t, FILE * __restrict); FILE *freopen(const char * __restrict, const char * __restrict, FILE * __restrict); -int fscanf(FILE * __restrict, const char * __restrict, ...); +int fscanf(FILE * __restrict, const char * _Nonnull __restrict, ...); int fseek(FILE *, long, int); int fsetpos(FILE *, const fpos_t *); long ftell(FILE *); @@ -264,34 +264,34 @@ int getchar(void); char *gets(char *); void perror(const char *); -int printf(const char * __restrict, ...); +int printf(const char * _Nonnull __restrict, ...); int putc(int, FILE *); int putchar(int); int puts(const char *); int remove(const char *); int rename(const char *, const char *); void rewind(FILE *); -int scanf(const char * __restrict, ...); +int scanf(const char * _Nonnull __restrict, ...); void setbuf(FILE * __restrict, char * __restrict); int setvbuf(FILE * __restrict, char * __restrict, int, size_t); -int sprintf(char * __restrict, const char * __restrict, ...); -int sscanf(const char * __restrict, const char * __restrict, ...); +int sprintf(char * __restrict, const char * _Nonnull __restrict, ...); +int sscanf(const char * __restrict, const char * _Nonnull __restrict, ...); FILE *tmpfile(void); char *tmpnam(char *); int ungetc(int, FILE *); -int vfprintf(FILE * __restrict, const char * __restrict, +int vfprintf(FILE * __restrict, const char * _Nonnull __restrict, __va_list); -int vprintf(const char * __restrict, __va_list); -int vsprintf(char * __restrict, const char * __restrict, +int vprintf(const char * _Nonnull __restrict, __va_list); +int vsprintf(char * __restrict, const char * _Nonnull __restrict, __va_list); #if __ISO_C_VISIBLE >= 1999 -int snprintf(char * __restrict, size_t, const char * __restrict, +int snprintf(char * __restrict, size_t, const char * _Nonnull __restrict, ...) __printflike(3, 4); -int vfscanf(FILE * __restrict, const char * __restrict, __va_list) +int vfscanf(FILE * __restrict, const char * _Nonnull __restrict, __va_list) __scanflike(2, 0); -int vscanf(const char * __restrict, __va_list) __scanflike(1, 0); -int vsnprintf(char * __restrict, size_t, const char * __restrict, +int vscanf(const char * _Nonnull __restrict, __va_list) __scanflike(1, 0); +int vsnprintf(char * __restrict, size_t, const char * _Nonnull __restrict, __va_list) __printflike(3, 0); int vsscanf(const char * __restrict, const char * __restrict, __va_list) __scanflike(2, 0); Index: include/string.h =================================================================== --- include/string.h +++ include/string.h @@ -37,6 +37,8 @@ #include #include +__NULLABILITY_PRAGMA_PUSH + /* * Prototype functions which were historically defined in , but * are required by POSIX to be prototyped in . @@ -52,75 +54,83 @@ __BEGIN_DECLS #if __XSI_VISIBLE >= 600 -void *memccpy(void * __restrict, const void * __restrict, int, size_t); +void *memccpy(void * _Nonnull __restrict, const void * _Nonnull __restrict, + int, size_t); #endif -void *memchr(const void *, int, size_t) __pure; +void *memchr(const void * _Nonnull, int, size_t) __pure; #if __BSD_VISIBLE -void *memrchr(const void *, int, size_t) __pure; +void *memrchr(const void * _Nonnull, int, size_t) __pure; #endif -int memcmp(const void *, const void *, size_t) __pure; -void *memcpy(void * __restrict, const void * __restrict, size_t); +int memcmp(const void * _Nonnull, const void * _Nonnull, size_t) __pure; +void *memcpy(void * _Nonnull __restrict, const void * _Nonnull __restrict, + size_t); #if __BSD_VISIBLE -void *memmem(const void *, size_t, const void *, size_t) __pure; +void *memmem(const void * _Nonnull, size_t, const void * _Nonnull, size_t) + __pure; #endif -void *memmove(void *, const void *, size_t); -void *memset(void *, int, size_t); +void *memmove(void * _Nonnull, const void * _Nonnull, size_t); +void *memset(void * _Nonnull, int, size_t); #if __POSIX_VISIBLE >= 200809 -char *stpcpy(char * __restrict, const char * __restrict); -char *stpncpy(char * __restrict, const char * __restrict, size_t); +char *stpcpy(char * _Nonnull __restrict, const char * _Nonnull __restrict); +char *stpncpy(char * _Nonnull __restrict, const char * _Nonnull __restrict, + size_t); #endif #if __BSD_VISIBLE -char *strcasestr(const char *, const char *) __pure; +char *strcasestr(const char * _Nonnull, const char * _Nonnull) __pure; #endif -char *strcat(char * __restrict, const char * __restrict); +char *strcat(char * _Nonnull __restrict, const char * _Nonnull __restrict); char *strchr(const char *, int) __pure; #if __BSD_VISIBLE -char *strchrnul(const char*, int) __pure; +char *strchrnul(const char * _Nonnull, int) __pure; #endif -int strcmp(const char *, const char *) __pure; -int strcoll(const char *, const char *); -char *strcpy(char * __restrict, const char * __restrict); -size_t strcspn(const char *, const char *) __pure; +int strcmp(const char * _Nonnull, const char * _Nonnull) __pure; +int strcoll(const char * _Nonnull, const char * _Nonnull); +char *strcpy(char * _Nonnull __restrict, const char * _Nonnull __restrict); +size_t strcspn(const char * _Nonnull, const char * _Nonnull) __pure; #if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE -char *strdup(const char *) __malloc_like; +char *strdup(const char * _Nonnull) __malloc_like; #endif char *strerror(int); #if __POSIX_VISIBLE >= 200112 int strerror_r(int, char *, size_t); #endif #if __BSD_VISIBLE -size_t strlcat(char * __restrict, const char * __restrict, size_t); -size_t strlcpy(char * __restrict, const char * __restrict, size_t); +size_t strlcat(char * _Nonnull __restrict, const char * _Nonnull __restrict, + size_t); +size_t strlcpy(char * _Nonnull __restrict, const char * _Nonnull __restrict, + size_t); #endif -size_t strlen(const char *) __pure; +size_t strlen(const char * _Nonnull) __pure; #if __BSD_VISIBLE void strmode(int, char *); #endif -char *strncat(char * __restrict, const char * __restrict, size_t); -int strncmp(const char *, const char *, size_t) __pure; -char *strncpy(char * __restrict, const char * __restrict, size_t); +char *strncat(char * _Nonnull __restrict, const char * _Nonnull __restrict, + size_t); +int strncmp(const char * _Nonnull, const char * _Nonnull, size_t) __pure; +char *strncpy(char * _Nonnull __restrict, const char * _Nonnull __restrict, + size_t); #if __POSIX_VISIBLE >= 200809 -char *strndup(const char *, size_t) __malloc_like; -size_t strnlen(const char *, size_t) __pure; +char *strndup(const char * _Nonnull, size_t) __malloc_like; +size_t strnlen(const char * _Nonnull, size_t) __pure; #endif #if __BSD_VISIBLE char *strnstr(const char *, const char *, size_t) __pure; #endif -char *strpbrk(const char *, const char *) __pure; -char *strrchr(const char *, int) __pure; +char *strpbrk(const char * _Nonnull, const char * _Nonnull) __pure; +char *strrchr(const char * _Nonnull, int) __pure; #if __BSD_VISIBLE -char *strsep(char **, const char *); +char *strsep(char ** _Nonnull, const char * _Nonnull); #endif #if __POSIX_VISIBLE >= 200809 char *strsignal(int); #endif -size_t strspn(const char *, const char *) __pure; -char *strstr(const char *, const char *) __pure; -char *strtok(char * __restrict, const char * __restrict); +size_t strspn(const char * _Nonnull, const char * _Nonnull) __pure; +char *strstr(const char * _Nonnull, const char * _Nonnull) __pure; +char *strtok(char * __restrict, const char * _Nonnull __restrict); #if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 500 -char *strtok_r(char *, const char *, char **); +char *strtok_r(char *, const char * _Nonnull, char ** _Nonnull); #endif -size_t strxfrm(char * __restrict, const char * __restrict, size_t); +size_t strxfrm(char * __restrict, const char * _Nonnull __restrict, size_t); #if __BSD_VISIBLE #ifndef _SWAB_DECLARED @@ -143,4 +153,6 @@ #endif __END_DECLS +__NULLABILITY_PRAGMA_POP + #endif /* _STRING_H_ */