svn commit: r232183 - head/sys/kern
Alexander Best
arundel at freebsd.org
Tue Feb 28 19:45:20 UTC 2012
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;
More information about the svn-src-head
mailing list