summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1997-11-13 08:30:35 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1997-11-13 08:30:35 +0000
commitf9f68389af0034cdf15661bc693e77fc1cb925c5 (patch)
tree779d713933ae1328df3afdf85c078d63bd16223f
parent48eccfca3321f7c88e1a2107e3170d2194904baa (diff)
Add the primaries -mmin, -amin, -cmin to find, similar to the GNU find; wosch
-rw-r--r--usr.bin/find/extern.h5
-rw-r--r--usr.bin/find/find.121
-rw-r--r--usr.bin/find/find.h8
-rw-r--r--usr.bin/find/function.c98
-rw-r--r--usr.bin/find/option.c7
5 files changed, 130 insertions, 9 deletions
diff --git a/usr.bin/find/extern.h b/usr.bin/find/extern.h
index cb373cb4e80..df8dd472979 100644
--- a/usr.bin/find/extern.h
+++ b/usr.bin/find/extern.h
@@ -1,4 +1,4 @@
-/* * $OpenBSD: extern.h,v 1.7 1996/12/23 04:58:08 millert Exp $*/
+/* * $OpenBSD: extern.h,v 1.8 1997/11/13 08:30:32 deraadt Exp $*/
/*-
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
@@ -50,7 +50,9 @@ void printlong __P((char *, char *, struct stat *));
int queryuser __P((char **));
void show_path __P((int));
+PLAN *c_amin __P((char *));
PLAN *c_atime __P((char *));
+PLAN *c_cmin __P((char *));
PLAN *c_ctime __P((char *));
PLAN *c_depth __P((void));
PLAN *c_empty __P((void));
@@ -64,6 +66,7 @@ PLAN *c_links __P((char *));
PLAN *c_ls __P((void));
PLAN *c_maxdepth __P((char *));
PLAN *c_mindepth __P((char *));
+PLAN *c_mmin __P((char *));
PLAN *c_name __P((char *));
PLAN *c_newer __P((char *));
PLAN *c_nogroup __P((void));
diff --git a/usr.bin/find/find.1 b/usr.bin/find/find.1
index b4ad0ab9e37..6dc97135d96 100644
--- a/usr.bin/find/find.1
+++ b/usr.bin/find/find.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: find.1,v 1.14 1997/11/04 08:19:32 deraadt Exp $
+.\" $OpenBSD: find.1,v 1.15 1997/11/13 08:30:33 deraadt Exp $
.\" Copyright (c) 1990, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
@@ -129,12 +129,25 @@ than that of the file from which the descent began.
.El
.Sh PRIMARIES
.Bl -tag -width Ds
+.It Ic -amin Ar n
+True if the difference between the file last access time and the time
+.Nm find
+was started, rounded up to the next full minutes period, is
+.Ar n
+minutes periods.
.It Ic -atime Ar n
True if the difference between the file last access time and the time
.Nm find
was started, rounded up to the next full 24\-hour period, is
.Ar n
24\-hour periods.
+.It Ic -cmin Ar n
+True if the difference between the time of last change of file status
+information and the time
+.Nm find
+was started, rounded up to the next full minutes period, is
+.Ar n
+minutes periods.
.It Ic -ctime Ar n
True if the difference between the time of last change of file status
information and the time
@@ -209,6 +222,12 @@ True if the current search depth is less than or equal to what is specified in
.It Ic -mindepth Ar n
True if the current search depth is at least what is specified in
.Ar n .
+.It Ic -mmin Ar n
+True if the difference between the file last modification time and the time
+.Nm find
+was started, rounded up to the next full minutes period, is
+.Ar n
+minutes periods.
.It Ic -mtime Ar n
True if the difference between the file last modification time and the time
.Nm find
diff --git a/usr.bin/find/find.h b/usr.bin/find/find.h
index 78a314f37dd..f754a06d421 100644
--- a/usr.bin/find/find.h
+++ b/usr.bin/find/find.h
@@ -1,4 +1,4 @@
-/* * $OpenBSD: find.h,v 1.6 1996/12/23 04:58:09 millert Exp $*/
+/* * $OpenBSD: find.h,v 1.7 1997/11/13 08:30:33 deraadt Exp $*/
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
@@ -40,8 +40,10 @@
/* node type */
enum ntype {
N_AND = 1, /* must start > 0 */
- N_ATIME, N_CLOSEPAREN, N_CTIME, N_DEPTH, N_EMPTY, N_EXEC, N_EXECDIR,
- N_EXPR, N_FOLLOW, N_FSTYPE, N_GROUP, N_INUM, N_LINKS, N_LS, N_MAXDEPTH,
+ N_AMIN, N_ATIME, N_CLOSEPAREN, N_CMIN, N_CTIME, N_DEPTH,
+ N_EMPTY, N_EXEC, N_EXECDIR,
+ N_EXPR, N_FOLLOW, N_FSTYPE, N_GROUP, N_INUM, N_LINKS, N_LS,
+ N_MMIN, N_MAXDEPTH,
N_MINDEPTH, N_MTIME, N_NAME, N_NEWER, N_NOGROUP, N_NOT, N_NOUSER,
N_OK, N_OPENPAREN, N_OR, N_PATH, N_PERM, N_PRINT, N_PRINT0, N_PRUNE,
N_SIZE, N_TYPE, N_USER, N_XDEV,
diff --git a/usr.bin/find/function.c b/usr.bin/find/function.c
index 92d1a5a1c2a..f1f635c4bee 100644
--- a/usr.bin/find/function.c
+++ b/usr.bin/find/function.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: function.c,v 1.10 1997/09/01 02:44:19 millert Exp $ */
+/* $OpenBSD: function.c,v 1.11 1997/11/13 08:30:33 deraadt Exp $ */
/*-
* Copyright (c) 1990, 1993
@@ -38,7 +38,7 @@
#ifndef lint
/*static char sccsid[] = "from: @(#)function.c 8.1 (Berkeley) 6/6/93";*/
-static char rcsid[] = "$OpenBSD: function.c,v 1.10 1997/09/01 02:44:19 millert Exp $";
+static char rcsid[] = "$OpenBSD: function.c,v 1.11 1997/11/13 08:30:33 deraadt Exp $";
#endif /* not lint */
#include <sys/param.h>
@@ -136,6 +136,37 @@ find_parsenum(plan, option, vp, endch)
++((p)->t_data);
/*
+ * -amin n functions --
+ *
+ * True if the difference between the file access time and the
+ * current time is n min periods.
+ */
+int
+f_amin(plan, entry)
+ PLAN *plan;
+ FTSENT *entry;
+{
+ extern time_t now;
+
+ COMPARE((now - entry->fts_statp->st_atime +
+ 60 - 1) / 60, plan->t_data);
+}
+
+PLAN *
+c_amin(arg)
+ char *arg;
+{
+ PLAN *new;
+
+ ftsoptions &= ~FTS_NOSTAT;
+
+ new = palloc(N_AMIN, f_amin);
+ new->t_data = find_parsenum(new, "-amin", arg, NULL);
+ TIME_CORRECT(new, N_AMIN);
+ return (new);
+}
+
+/*
* -atime n functions --
*
* True if the difference between the file access time and the
@@ -164,6 +195,38 @@ c_atime(arg)
TIME_CORRECT(new, N_ATIME);
return (new);
}
+
+/*
+ * -cmin n functions --
+ *
+ * True if the difference between the last change of file
+ * status information and the current time is n min periods.
+ */
+int
+f_cmin(plan, entry)
+ PLAN *plan;
+ FTSENT *entry;
+{
+ extern time_t now;
+
+ COMPARE((now - entry->fts_statp->st_ctime +
+ 60 - 1) / 60, plan->t_data);
+}
+
+PLAN *
+c_cmin(arg)
+ char *arg;
+{
+ PLAN *new;
+
+ ftsoptions &= ~FTS_NOSTAT;
+
+ new = palloc(N_CMIN, f_cmin);
+ new->t_data = find_parsenum(new, "-cmin", arg, NULL);
+ TIME_CORRECT(new, N_CMIN);
+ return (new);
+}
+
/*
* -ctime n functions --
*
@@ -770,6 +833,37 @@ c_mtime(arg)
}
/*
+ * -mmin n functions --
+ *
+ * True if the difference between the file modification time and the
+ * current time is n min periods.
+ */
+int
+f_mmin(plan, entry)
+ PLAN *plan;
+ FTSENT *entry;
+{
+ extern time_t now;
+
+ COMPARE((now - entry->fts_statp->st_mtime + 60 - 1) /
+ 60, plan->t_data);
+}
+
+PLAN *
+c_mmin(arg)
+ char *arg;
+{
+ PLAN *new;
+
+ ftsoptions &= ~FTS_NOSTAT;
+
+ new = palloc(N_MMIN, f_mmin);
+ new->t_data = find_parsenum(new, "-mmin", arg, NULL);
+ TIME_CORRECT(new, N_MMIN);
+ return (new);
+}
+
+/*
* -name functions --
*
* True if the basename of the filename being examined
diff --git a/usr.bin/find/option.c b/usr.bin/find/option.c
index 13a643098b1..a56767e7e4d 100644
--- a/usr.bin/find/option.c
+++ b/usr.bin/find/option.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: option.c,v 1.6 1996/12/23 04:58:11 millert Exp $ */
+/* $OpenBSD: option.c,v 1.7 1997/11/13 08:30:34 deraadt Exp $ */
/*-
* Copyright (c) 1990, 1993
@@ -38,7 +38,7 @@
#ifndef lint
/*static char sccsid[] = "from: @(#)option.c 8.1 (Berkeley) 6/6/93";*/
-static char rcsid[] = "$OpenBSD: option.c,v 1.6 1996/12/23 04:58:11 millert Exp $";
+static char rcsid[] = "$OpenBSD: option.c,v 1.7 1997/11/13 08:30:34 deraadt Exp $";
#endif /* not lint */
#include <sys/types.h>
@@ -59,7 +59,9 @@ static OPTION options[] = {
{ ")", N_CLOSEPAREN, c_closeparen, O_ZERO },
{ "-a", N_AND, NULL, O_NONE },
{ "-and", N_AND, NULL, O_NONE },
+ { "-amin", N_AMIN, c_amin, O_ARGV },
{ "-atime", N_ATIME, c_atime, O_ARGV },
+ { "-cmin", N_CMIN, c_cmin, O_ARGV },
{ "-ctime", N_CTIME, c_ctime, O_ARGV },
{ "-depth", N_DEPTH, c_depth, O_ZERO },
{ "-empty", N_EMPTY, c_empty, O_ZERO },
@@ -71,6 +73,7 @@ static OPTION options[] = {
{ "-inum", N_INUM, c_inum, O_ARGV },
{ "-links", N_LINKS, c_links, O_ARGV },
{ "-ls", N_LS, c_ls, O_ZERO },
+ { "-mmin", N_MMIN, c_mmin, O_ARGV },
{ "-maxdepth", N_MAXDEPTH, c_maxdepth, O_ARGV },
{ "-mindepth", N_MINDEPTH, c_mindepth, O_ARGV },
{ "-mount", N_XDEV, c_xdev, O_ZERO },