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; _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"