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; > > } >
pgpJ81Q4aafP1.pgp
Description: PGP signature