Skip site navigation (1)Skip section navigation (2)
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>