Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Oct 1997 17:02:42 +0200 (MET DST)
From:      Wolfram Schneider <wosch@cs.tu-berlin.de>
To:        current@freebsd.org
Subject:   find primaries -mmin, -amin, -cmin
Message-ID:  <199710111502.RAA00932@panke.panke.de>

next in thread | raw e-mail | index | archive | help

This patch add the primaries -mmin, -amin, -cmin to find,
similar to the GNU find.

Index: extern.h
===================================================================
RCS file: /usr/cvs/src/usr.bin/find/extern.h,v
retrieving revision 1.4
diff -u -r1.4 extern.h
--- extern.h	1997/08/29 23:09:39	1.4
+++ extern.h	1997/10/11 09:34:07
@@ -47,7 +47,9 @@
 void	 printlong __P((char *, char *, struct stat *));
 int	 queryuser __P((char **));
 
+PLAN	*c_amin __P((char *));
 PLAN	*c_atime __P((char *));
+PLAN	*c_cmin __P((char *));
 PLAN	*c_ctime __P((char *));
 PLAN	*c_delete __P((void));
 PLAN	*c_depth __P((void));
@@ -74,6 +76,7 @@
 PLAN	*c_xdev __P((void));
 PLAN	*c_openparen __P((void));
 PLAN	*c_closeparen __P((void));
+PLAN	*c_mmin __P((char *));
 PLAN	*c_mtime __P((char *));
 PLAN	*c_not __P((void));
 PLAN	*c_or __P((void));
Index: find.1
===================================================================
RCS file: /usr/cvs/src/usr.bin/find/find.1,v
retrieving revision 1.11
diff -u -r1.11 find.1
--- find.1	1997/08/29 23:09:41	1.11
+++ find.1	1997/10/11 09:46:34
@@ -131,12 +131,25 @@
 .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
@@ -214,6 +227,12 @@
 If the file is a symbolic link, the pathname of the linked\-to file will be
 displayed preceded by ``\->''.
 The format is identical to that produced by ``ls \-dgils''.
+.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
Index: find.h
===================================================================
RCS file: /usr/cvs/src/usr.bin/find/find.h,v
retrieving revision 1.4
diff -u -r1.4 find.h
--- find.h	1997/08/29 23:09:42	1.4
+++ find.h	1997/10/11 09:33:42
@@ -39,8 +39,10 @@
 /* node type */
 enum ntype {
 	N_AND = 1, 				/* must start > 0 */
-	N_ATIME, N_CLOSEPAREN, N_CTIME, N_DEPTH, N_EXEC, N_EXECDIR, N_EXPR,
-	N_FOLLOW, N_FSTYPE, N_GROUP, N_INUM, N_LINKS, N_LS, N_MTIME, N_NAME,
+	N_AMIN, N_ATIME, N_CLOSEPAREN, N_CMIN, N_CTIME, N_DEPTH, 
+	N_EXEC, N_EXECDIR, N_EXPR,
+	N_FOLLOW, N_FSTYPE, N_GROUP, N_INUM, N_LINKS, N_LS, N_MMIN, 
+        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_PRUNE, N_SIZE, N_TYPE, N_USER, N_XDEV,
 	N_PRINT0, N_DELETE
Index: function.c
===================================================================
RCS file: /usr/cvs/src/usr.bin/find/function.c,v
retrieving revision 1.11
diff -u -r1.11 function.c
--- function.c	1997/01/28 13:18:46	1.11
+++ function.c	1997/10/11 09:38:36
@@ -126,6 +126,38 @@
 		++((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
@@ -155,6 +187,39 @@
 	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 --
  *
@@ -186,6 +251,7 @@
 	return (new);
 }
 
+
 /*
  * -depth functions --
  *
@@ -593,6 +659,38 @@
 	TIME_CORRECT(new, N_MTIME);
 	return (new);
 }
+
+/*
+ * -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 --
Index: option.c
===================================================================
RCS file: /usr/cvs/src/usr.bin/find/option.c,v
retrieving revision 1.3
diff -u -r1.3 option.c
--- option.c	1996/10/04 12:54:07	1.3
+++ option.c	1997/10/11 09:29:20
@@ -58,7 +58,9 @@
 	{ ")",		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 },
 	{ "-delete",	N_DELETE,	c_delete,	O_ZERO },
 	{ "-depth",	N_DEPTH,	c_depth,	O_ZERO },
@@ -69,6 +71,7 @@
 	{ "-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 },
 	{ "-mtime",	N_MTIME,	c_mtime,	O_ARGV },
 	{ "-name",	N_NAME,		c_name,		O_ARGV },
 	{ "-newer",	N_NEWER,	c_newer,	O_ARGV },


-- 
Wolfram Schneider   <wosch@apfel.de>   http://www.apfel.de/~wosch/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199710111502.RAA00932>