Date: Mon, 7 Oct 2002 23:20:38 -0400 From: Craig Rodrigues <rodrigc@attbi.com> To: freebsd-standards@freebsd.org Subject: Re: restrict qualifier task Message-ID: <20021007232038.A13773@attbi.com> In-Reply-To: <20021006214520.B97120@espresso.q9media.com>; from mike@FreeBSD.org on Sun, Oct 06, 2002 at 09:45:20PM -0400 References: <20021006214520.B97120@espresso.q9media.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--a8Wt8u1KmwUX3Y2C Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, Here is my patch. __restrict was already added to sigwait() in the .c file and man page, but not in the header file. -- Craig Rodrigues http://www.gis.net/~craigr rodrigc@attbi.com --a8Wt8u1KmwUX3Y2C Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="restrict-patch.txt" --- ./include/signal.h.orig Mon Oct 7 20:23:24 2002 +++ ./include/signal.h Mon Oct 7 20:24:49 2002 @@ -72,8 +72,7 @@ int sigpending(sigset_t *); int sigprocmask(int, const sigset_t * __restrict, sigset_t * __restrict); int sigsuspend(const sigset_t *); -/* XXX missing restrict qualifier. */ -int sigwait(const sigset_t *, int *); +int sigwait(const sigset_t * __restrict, int * __restrict); #endif #if __BSD_VISIBLE || __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 600 --- ./include/stdio.h.orig Mon Oct 7 20:34:41 2002 +++ ./include/stdio.h Mon Oct 7 20:43:41 2002 @@ -219,9 +219,6 @@ /* * Functions defined in ANSI C standard. * - * XXX fgetpos(), fgets(), fopen(), fputs(), fread(), freopen(), fscanf(), - * fwrite(), scanf(), sscanf(), vscanf(), and vsscanf() are missing the - * restrict type-qualifier. */ void clearerr(FILE *); int fclose(FILE *); @@ -229,19 +226,19 @@ int ferror(FILE *); int fflush(FILE *); int fgetc(FILE *); -int fgetpos(FILE *, fpos_t *); -char *fgets(char *, int, FILE *); -FILE *fopen(const char *, const char *); +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 fputc(int, FILE *); -int fputs(const char *, FILE *); -size_t fread(void *, size_t, size_t, FILE *); -FILE *freopen(const char *, const char *, FILE *); -int fscanf(FILE *, const char *, ...); +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 fseek(FILE *, long, int); int fsetpos(FILE *, const fpos_t *); long ftell(FILE *); -size_t fwrite(const void *, size_t, size_t, FILE *); +size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict); int getc(FILE *); int getchar(void); char *gets(char *); @@ -253,11 +250,11 @@ int remove(const char *); int rename(const char *, const char *); void rewind(FILE *); -int scanf(const char *, ...); +int scanf(const char * __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 *, const char *, ...); +int sscanf(const char * __restrict, const char * __restrict, ...); FILE *tmpfile(void); char *tmpnam(char *); int ungetc(int, FILE *); @@ -270,10 +267,10 @@ #if __ISO_C_VISIBLE >= 1999 int snprintf(char * __restrict, size_t, const char * __restrict, ...) __printflike(3, 4); -int vscanf(const char *, __va_list) __scanflike(1, 0); +int vscanf(const char * __restrict, __va_list) __scanflike(1, 0); int vsnprintf(char * __restrict, size_t, const char * __restrict, __va_list) __printflike(3, 0); -int vsscanf(const char *, const char *, __va_list) +int vsscanf(const char * __restrict, const char * __restrict, __va_list) __scanflike(2, 0); /* --- ./lib/libc/gen/pselect.c.orig Mon Oct 7 19:33:27 2002 +++ ./lib/libc/gen/pselect.c Mon Oct 7 19:38:27 2002 @@ -47,8 +47,9 @@ * and allows the user to specify a signal mask to apply during the select. */ int -__pselect(int count, fd_set *rfds, fd_set *wfds, fd_set *efds, - const struct timespec *timo, const sigset_t *mask) +__pselect(int count, fd_set * __restrict rfds, fd_set * __restrict wfds, + fd_set * __restrict efds, const struct timespec * __restrict timo, + const sigset_t * __restrict mask) { sigset_t omask; struct timeval tvtimo, *tvp; --- ./lib/libc/gen/pselect.3.orig Mon Oct 7 19:38:49 2002 +++ ./lib/libc/gen/pselect.3 Mon Oct 7 19:39:19 2002 @@ -39,7 +39,7 @@ .Sh SYNOPSIS .In sys/select.h .Ft int -.Fn pselect "int nfds" "fd_set *readfds" "fd_set *writefds" "fd_set *exceptfds" "const struct timespec *timeout" "const sigset_t *newsigmask" +.Fn pselect "int nfds" "fd_set *restrict readfds" "fd_set *restrict writefds" "fd_set *restrict exceptfds" "const struct timespec *restrict timeout" "const sigset_t *restrict newsigmask" .Sh DESCRIPTION The .Fn pselect --- ./lib/libc/stdio/fgetpos.c.orig Mon Oct 7 20:30:52 2002 +++ ./lib/libc/stdio/fgetpos.c Mon Oct 7 20:32:25 2002 @@ -43,7 +43,7 @@ #include <stdio.h> int -fgetpos(FILE *fp, fpos_t *pos) +fgetpos(FILE * __restrict fp, fpos_t * __restrict pos) { /* * ftello is thread-safe; no need to lock fp. --- ./lib/libc/stdio/fseek.3.orig Mon Oct 7 20:32:48 2002 +++ ./lib/libc/stdio/fseek.3 Mon Oct 7 20:33:05 2002 @@ -59,7 +59,7 @@ .Ft void .Fn rewind "FILE *stream" .Ft int -.Fn fgetpos "FILE *stream" "fpos_t *pos" +.Fn fgetpos "FILE *restrict stream" "fpos_t *restrict pos" .Ft int .Fn fsetpos "FILE *stream" "const fpos_t *pos" .In sys/types.h --- ./lib/libc/stdio/fgets.3.orig Mon Oct 7 20:46:48 2002 +++ ./lib/libc/stdio/fgets.3 Mon Oct 7 20:48:50 2002 @@ -48,7 +48,7 @@ .Sh SYNOPSIS .In stdio.h .Ft char * -.Fn fgets "char *str" "int size" "FILE *stream" +.Fn fgets "char *restrict str" "int size" "FILE *restrict stream" .Ft char * .Fn gets "char *str" .Sh DESCRIPTION @@ -162,4 +162,4 @@ and .Fn gets conform to -.St -isoC . +.St -isoC-99 . --- ./lib/libc/stdio/fopen.3.orig Mon Oct 7 20:49:23 2002 +++ ./lib/libc/stdio/fopen.3 Mon Oct 7 20:50:00 2002 @@ -49,7 +49,7 @@ .Sh SYNOPSIS .In stdio.h .Ft FILE * -.Fn fopen "const char *path" "const char *mode" +.Fn fopen "const char *restrict path" "const char *restrict mode" .Ft FILE * .Fn fdopen "int fildes" "const char *mode" .Ft FILE * --- ./lib/libc/stdio/fopen.c.orig Mon Oct 7 20:50:05 2002 +++ ./lib/libc/stdio/fopen.c Mon Oct 7 20:55:28 2002 @@ -52,8 +52,8 @@ FILE * fopen(file, mode) - const char *file; - const char *mode; + const char * __restrict file; + const char * __restrict mode; { FILE *fp; int f; --- ./lib/libc/stdio/fputs.c.orig Mon Oct 7 20:56:00 2002 +++ ./lib/libc/stdio/fputs.c Mon Oct 7 20:56:41 2002 @@ -53,8 +53,8 @@ */ int fputs(s, fp) - const char *s; - FILE *fp; + const char * __restrict s; + FILE * __restrict fp; { int retval; struct __suio uio; --- ./lib/libc/stdio/fread.3.orig Mon Oct 7 20:57:04 2002 +++ ./lib/libc/stdio/fread.3 Mon Oct 7 20:58:32 2002 @@ -48,9 +48,9 @@ .Sh SYNOPSIS .In stdio.h .Ft size_t -.Fn fread "void *ptr" "size_t size" "size_t nmemb" "FILE *stream" +.Fn fread "void *restrict ptr" "size_t size" "size_t nmemb" "FILE *restrict stream" .Ft size_t -.Fn fwrite "const void *ptr" "size_t size" "size_t nmemb" "FILE *stream" +.Fn fwrite "const void *restrict ptr" "size_t size" "size_t nmemb" "FILE *restrict stream" .Sh DESCRIPTION The function .Fn fread --- ./lib/libc/stdio/fread.c.orig Mon Oct 7 20:59:05 2002 +++ ./lib/libc/stdio/fread.c Mon Oct 7 20:59:23 2002 @@ -49,9 +49,9 @@ size_t fread(buf, size, count, fp) - void *buf; + void * __restrict buf; size_t size, count; - FILE *fp; + FILE * __restrict fp; { size_t resid; char *p; --- ./lib/libc/stdio/freopen.c.orig Mon Oct 7 20:59:37 2002 +++ ./lib/libc/stdio/freopen.c Mon Oct 7 21:00:35 2002 @@ -59,7 +59,8 @@ */ FILE * freopen(file, mode, fp) - const char *file, *mode; + const char * __restrict file; + const char * __restrict mode; FILE *fp; { int f; --- ./lib/libc/stdio/fscanf.c.orig Mon Oct 7 21:00:48 2002 +++ ./lib/libc/stdio/fscanf.c Mon Oct 7 21:01:01 2002 @@ -47,7 +47,7 @@ #include "libc_private.h" int -fscanf(FILE *fp, char const *fmt, ...) +fscanf(FILE * __restrict fp, char const * __restrict fmt, ...) { int ret; va_list ap; --- ./lib/libc/stdio/scanf.3.orig Mon Oct 7 21:01:15 2002 +++ ./lib/libc/stdio/scanf.3 Mon Oct 7 21:02:44 2002 @@ -52,18 +52,18 @@ .Sh SYNOPSIS .In stdio.h .Ft int -.Fn scanf "const char *format" ... +.Fn scanf "const char *restrict format" ... .Ft int -.Fn fscanf "FILE *stream" "const char *format" ... +.Fn fscanf "FILE *restrict stream" "const char *restrict format" ... .Ft int -.Fn sscanf "const char *str" "const char *format" ... +.Fn sscanf "const char *restrict str" "const char *restrict format" ... .In stdarg.h .Ft int -.Fn vscanf "const char *format" "va_list ap" +.Fn vscanf "const char *restrict format" "va_list ap" .Ft int -.Fn vsscanf "const char *str" "const char *format" "va_list ap" +.Fn vsscanf "const char *restrict str" "const char *restrict format" "va_list ap" .Ft int -.Fn vfscanf "FILE *stream" "const char *format" "va_list ap" +.Fn vfscanf "FILE *restrict stream" "const char *restrict format" "va_list ap" .Sh DESCRIPTION The .Fn scanf --- ./lib/libc/stdio/vscanf.c.orig Mon Oct 7 21:02:59 2002 +++ ./lib/libc/stdio/vscanf.c Mon Oct 7 21:03:16 2002 @@ -47,7 +47,7 @@ int vscanf(fmt, ap) - const char *fmt; + const char * __restrict fmt; __va_list ap; { int retval; --- ./lib/libc/stdio/vsscanf.c.orig Mon Oct 7 21:03:26 2002 +++ ./lib/libc/stdio/vsscanf.c Mon Oct 7 21:03:45 2002 @@ -60,8 +60,8 @@ int vsscanf(str, fmt, ap) - const char *str; - const char *fmt; + const char * __restrict str; + const char * __restrict fmt; __va_list ap; { FILE f; --- ./lib/libc/stdio/sscanf.c.orig Mon Oct 7 21:03:54 2002 +++ ./lib/libc/stdio/sscanf.c Mon Oct 7 21:04:14 2002 @@ -59,7 +59,7 @@ } int -sscanf(const char *str, char const *fmt, ...) +sscanf(const char * __restrict str, char const * __restrict fmt, ...) { int ret; va_list ap; --- ./lib/libc/stdio/fwrite.c.orig Mon Oct 7 21:04:26 2002 +++ ./lib/libc/stdio/fwrite.c Mon Oct 7 21:04:42 2002 @@ -53,9 +53,9 @@ */ size_t fwrite(buf, size, count, fp) - const void *buf; + const void * __restrict buf; size_t size, count; - FILE *fp; + FILE * __restrict fp; { size_t n; struct __suio uio; --- ./lib/libc/stdio/scanf.c.orig Mon Oct 7 21:06:14 2002 +++ ./lib/libc/stdio/scanf.c Mon Oct 7 21:06:29 2002 @@ -47,7 +47,7 @@ #include "libc_private.h" int -scanf(char const *fmt, ...) +scanf(char const * __restrict fmt, ...) { int ret; va_list ap; --a8Wt8u1KmwUX3Y2C-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-standards" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021007232038.A13773>