Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Feb 2012 19:45:20 +0000
From:      Alexander Best <arundel@freebsd.org>
To:        Jilles Tjoelker <jilles@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r232183 - head/sys/kern
Message-ID:  <20120228194520.GA56030@freebsd.org>
In-Reply-To: <201202261514.q1QFET0v070810@svn.freebsd.org>
References:  <201202261514.q1QFET0v070810@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun Feb 26 12, Jilles Tjoelker wrote:
> Author: jilles
> Date: Sun Feb 26 15:14:29 2012
> New Revision: 232183
> URL: http://svn.freebsd.org/changeset/base/232183
> 
> Log:
>   Fix fchmod() and fchown() on fifos.
>   
>   The new fifo implementation in r232055 broke fchmod() and fchown() on fifos.
>   Postfix needs this.

clang seems to have a problem with this commit:

usr/subversion-src/sys/kern/sys_pipe.c:1556:10: error: promoted type 'int' of K&R function parameter is not compatible with the parameter type 'mode_t' (aka 'unsigned short') declared in a previous prototype [-Werror]
        mode_t mode;
               ^
/usr/subversion-src/sys/kern/sys_pipe.c:155:19: note: previous declaration is here
static fo_chmod_t       pipe_chmod;
                        ^
1 error generated.
*** Error code 1

cheers.
alex

>   
>   Submitted by:	gianni
>   Reported by:	dougb
> 
> Modified:
>   head/sys/kern/sys_pipe.c
> 
> Modified: head/sys/kern/sys_pipe.c
> ==============================================================================
> --- head/sys/kern/sys_pipe.c	Sun Feb 26 14:27:34 2012	(r232182)
> +++ head/sys/kern/sys_pipe.c	Sun Feb 26 15:14:29 2012	(r232183)
> @@ -152,6 +152,8 @@ static fo_poll_t	pipe_poll;
>  static fo_kqfilter_t	pipe_kqfilter;
>  static fo_stat_t	pipe_stat;
>  static fo_close_t	pipe_close;
> +static fo_chmod_t	pipe_chmod;
> +static fo_chown_t	pipe_chown;
>  
>  struct fileops pipeops = {
>  	.fo_read = pipe_read,
> @@ -162,8 +164,8 @@ struct fileops pipeops = {
>  	.fo_kqfilter = pipe_kqfilter,
>  	.fo_stat = pipe_stat,
>  	.fo_close = pipe_close,
> -	.fo_chmod = invfo_chmod,
> -	.fo_chown = invfo_chown,
> +	.fo_chmod = pipe_chmod,
> +	.fo_chown = pipe_chown,
>  	.fo_flags = DFLAG_PASSABLE
>  };
>  
> @@ -1548,6 +1550,43 @@ pipe_close(fp, td)
>  	return (0);
>  }
>  
> +static int
> +pipe_chmod(fp, mode, active_cred, td)
> +	struct file *fp;
> + 	mode_t mode;
> +	struct ucred *active_cred;
> +	struct thread *td;
> +{
> +	struct pipe *cpipe;
> +	int error;
> +
> +	cpipe = fp->f_data;
> +	if (cpipe->pipe_state & PIPE_NAMED)
> +		error = vn_chmod(fp, mode, active_cred, td);
> +	else
> +		error = invfo_chmod(fp, mode, active_cred, td);
> +	return (error);
> +}
> +
> +static int
> +pipe_chown(fp, uid, gid, active_cred, td)
> +	struct file *fp;
> +	uid_t uid;
> +	gid_t gid;
> +	struct ucred *active_cred;
> +	struct thread *td;
> +{
> +	struct pipe *cpipe;
> +	int error;
> +
> +	cpipe = fp->f_data;
> +	if (cpipe->pipe_state & PIPE_NAMED)
> +		error = vn_chown(fp, uid, gid, active_cred, td);
> +	else
> +		error = invfo_chown(fp, uid, gid, active_cred, td);
> +	return (error);
> +}
> +
>  static void
>  pipe_free_kmem(cpipe)
>  	struct pipe *cpipe;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120228194520.GA56030>