summaryrefslogtreecommitdiff
path: root/findutils/find.c
diff options
context:
space:
mode:
Diffstat (limited to 'findutils/find.c')
-rw-r--r--findutils/find.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/findutils/find.c b/findutils/find.c
index 75ed4e2..603c206 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -53,6 +53,11 @@ static char mtime_char;
static int mtime_days;
#endif
+#ifdef CONFIG_FEATURE_FIND_MMIN
+static char mmin_char;
+static int mmin_mins;
+#endif
+
#ifdef CONFIG_FEATURE_FIND_XDEV
static dev_t *xdev_dev;
static int xdev_count = 0;
@@ -109,6 +114,17 @@ static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
goto no_match;
}
#endif
+#ifdef CONFIG_FEATURE_FIND_MMIN
+ if (mmin_char != 0) {
+ time_t file_age = time(NULL) - statbuf->st_mtime;
+ time_t mmin_secs = mmin_mins * 60;
+ if (!((isdigit(mmin_char) && file_age >= mmin_secs &&
+ file_age < mmin_secs + 60) ||
+ (mmin_char == '+' && file_age >= mmin_secs + 60) ||
+ (mmin_char == '-' && file_age < mmin_secs)))
+ goto no_match;
+ }
+#endif
#ifdef CONFIG_FEATURE_FIND_XDEV
if (xdev_count) {
int i;
@@ -239,6 +255,17 @@ int find_main(int argc, char **argv)
if ((mtime_char = argv[i][0]) == '-')
mtime_days = -mtime_days;
#endif
+#ifdef CONFIG_FEATURE_FIND_MMIN
+ } else if (strcmp(argv[i], "-mmin") == 0) {
+ char *end;
+ if (++i == argc)
+ bb_error_msg_and_die(msg_req_arg, "-mmin");
+ mmin_mins = strtol(argv[i], &end, 10);
+ if (end[0] != '\0')
+ bb_error_msg_and_die(msg_invalid_arg, argv[i], "-mmin");
+ if ((mmin_char = argv[i][0]) == '-')
+ mmin_mins = -mmin_mins;
+#endif
#ifdef CONFIG_FEATURE_FIND_XDEV
} else if (strcmp(argv[i], "-xdev") == 0) {
struct stat stbuf;