On Wed, May 29, 2013 at 06:37:17PM -0400, Mark Johnston wrote:
> I'm very sorry about this. I was going to merge r235647 first so that I
> wouldn't make the same mistake a second time, but I decided against it
> when I saw that the commit extended beyond newsyslog, and then managed
> to do the MFC incorrectly after verifying that newsyslog built on the
> stable branches. Is it possible to only do the newsyslog portion of this
> MFC, or is it a rule that either all or none of a given revision should
> be merged to the stable branches?

The approved way to merge a change like r235647 would be per-library and
per-program so only merging changes to a single program would be fine.

-- Brooks

> 
> Sorry again,
> -Mark
> 
> On Wed, May 29, 2013 at 10:30:30PM +0000, Mark Johnston wrote:
> > Author: markj
> > Date: Wed May 29 22:30:29 2013
> > New Revision: 251113
> > URL: http://svnweb.freebsd.org/changeset/base/251113
> > 
> > Log:
> >   Revert my previous merge. There's a variable name difference between head
> >   and stable (dirfd vs. dir_fd) and I managed to get it wrong again when I
> >   did the MFC, even after I tested.
> > 
> > Modified:
> >   stable/9/usr.sbin/newsyslog/newsyslog.c
> > Directory Properties:
> >   stable/9/usr.sbin/newsyslog/   (props changed)
> > 
> > Modified: stable/9/usr.sbin/newsyslog/newsyslog.c
> > ==============================================================================
> > --- stable/9/usr.sbin/newsyslog/newsyslog.c Wed May 29 22:29:33 2013        
> > (r251112)
> > +++ stable/9/usr.sbin/newsyslog/newsyslog.c Wed May 29 22:30:29 2013        
> > (r251113)
> > @@ -1450,27 +1450,16 @@ oldlog_entry_compare(const void *a, cons
> >   * tm if this is the case; otherwise return false.
> >   */
> >  static int
> > -validate_old_timelog(int fd, const struct dirent *dp, const char *logfname,
> > -    struct tm *tm)
> > +validate_old_timelog(const struct dirent *dp, const char *logfname, struct 
> > tm *tm)
> >  {
> > -   struct stat sb;
> >     size_t logfname_len;
> >     char *s;
> >     int c;
> >  
> >     logfname_len = strlen(logfname);
> >  
> > -   if (dp->d_type != DT_REG) {
> > -           /*
> > -            * Some filesystems (e.g. NFS) don't fill out the d_type field
> > -            * and leave it set to DT_UNKNOWN; in this case we must obtain
> > -            * the file type ourselves.
> > -            */
> > -           if (dp->d_type != DT_UNKNOWN ||
> > -               fstatat(fd, dp->d_name, &sb, AT_SYMLINK_NOFOLLOW) != 0 ||
> > -               !S_ISREG(sb.st_mode))
> > -                   return (0);
> > -   }
> > +   if (dp->d_type != DT_REG)
> > +           return (0);
> >     /* Ignore everything but files with our logfile prefix. */
> >     if (strncmp(dp->d_name, logfname, logfname_len) != 0)
> >             return (0);
> > @@ -1556,7 +1545,7 @@ delete_oldest_timelog(const struct conf_
> >             err(1, "Cannot open log directory '%s'", dir);
> >     dirfd = dirfd(dirp);
> >     while ((dp = readdir(dirp)) != NULL) {
> > -           if (validate_old_timelog(dir_fd, dp, logfname, &tm) == 0)
> > +           if (validate_old_timelog(dp, logfname, &tm) == 0)
> >                     continue;
> >  
> >             /*
> > @@ -2321,10 +2310,10 @@ mtime_old_timelog(const char *file)
> >     dir_fd = dirfd(dirp);
> >     /* Open the archive dir and find the most recent archive of logfname. */
> >     while ((dp = readdir(dirp)) != NULL) {
> > -           if (validate_old_timelog(dir_fd, dp, logfname, &tm) == 0)
> > +           if (validate_old_timelog(dp, logfname, &tm) == 0)
> >                     continue;
> >  
> > -           if (fstatat(dir_fd, logfname, &sb, AT_SYMLINK_NOFOLLOW) == -1) {
> > +           if (fstatat(dir_fd, logfname, &sb, 0) == -1) {
> >                     warn("Cannot stat '%s'", file);
> >                     continue;
> >             }
> 

Attachment: pgpJ81Q4aafP1.pgp
Description: PGP signature

Reply via email to