Applied 1 and 2, thank you
On Wed, Sep 29, 2021 at 1:42 PM Ismael Luceno <[email protected]> wrote: > > Split the common part into a function, to be reused. > > The tail call is optimized, meaning now mmin/mtime just prepare arguments > and jump into the common code, thus near zero overhead. > > This reduces code size slightly, e.g. on x86_64: > text data bss dec hex filename > 4806 0 0 4806 12c6 findutils/find.o.orig > 4782 0 0 4782 12ae findutils/find.o > > Of course, the savings are even greater when implementing atime/ctime > variants. > > Signed-off-by: Ismael Luceno <[email protected]> > --- > findutils/find.c | 35 +++++++++++++++++++---------------- > 1 file changed, 19 insertions(+), 16 deletions(-) > > diff --git a/findutils/find.c b/findutils/find.c > index 6d55db4e99be..0948de13df3d 100644 > --- a/findutils/find.c > +++ b/findutils/find.c > @@ -618,30 +618,33 @@ ACTF(perm) > return (statbuf->st_mode & 07777) == ap->perm_mask; > } > #endif > + > +#if \ > + ENABLE_FEATURE_FIND_MMIN || \ > + ENABLE_FEATURE_FIND_MTIME > +static int time_cmp(time_t ftime, char time_char, time_t secs, time_t delta) > { > + time_t file_age = time(NULL) - ftime; > + switch (time_char) { > + case '+': return file_age >= secs + delta; > + case '-': return file_age < secs; > + /* just numeric time */ > + default: return file_age >= secs && file_age < secs + delta; > + } > +} > +#endif > + > #if ENABLE_FEATURE_FIND_MTIME > ACTF(mtime) > { > - time_t file_age = time(NULL) - statbuf->st_mtime; > - time_t mtime_secs = ap->mtime_days * 24*60*60; > - if (ap->mtime_char == '+') > - return file_age >= mtime_secs + 24*60*60; > - if (ap->mtime_char == '-') > - return file_age < mtime_secs; > - /* just numeric mtime */ > - return file_age >= mtime_secs && file_age < (mtime_secs + 24*60*60); > + return time_cmp(statbuf->st_mtime, ap->mtime_char, > + ap->mtime_days * 24*60*60, 24*60*60); > } > #endif > #if ENABLE_FEATURE_FIND_MMIN > ACTF(mmin) > { > - time_t file_age = time(NULL) - statbuf->st_mtime; > - time_t mmin_secs = ap->mmin_mins * 60; > - if (ap->mmin_char == '+') > - return file_age >= mmin_secs + 60; > - if (ap->mmin_char == '-') > - return file_age < mmin_secs; > - /* just numeric mmin */ > - return file_age >= mmin_secs && file_age < (mmin_secs + 60); > + return time_cmp(statbuf->st_mtime, ap->mmin_char, > + ap->mmin_mins * 60, 60); > } > #endif > #if ENABLE_FEATURE_FIND_NEWER > -- > 2.33.0 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
