Alfred Perlstein wrote:
I'm up too late, this doesn't work because find returns
success whenever it successfully runs thought everything.

Perhaps the primary change to just "-exit" which would
make find exit successfully, and if the primary is never
encountered (ie. our find logic never hits it) find would
exit with a non-zero exit status?

Ideas?  Better ideas?

The reason I want this is to avoid extracting a tarball
over a directory that has files in it that are newer than
the tarball.

Neither tar nor find seem to make this easy...
What about this:

test -n "`find . -type f -newer ../src.tar.gz`" && echo hi

:-)


* Alfred Perlstein <[EMAIL PROTECTED]> [040716 00:15] wrote:

This adds a primary to find(1) "-exit <arg>", it will cause
find to exit(2) with the <arg> as the exit status.

Useful for finding the first instance of something:

find . -type f -newer ../src.tar.gz -exit 0 && echo hi

this will make find abort with a zero exit status early upon
finding a file newer than ../src.tar.gz.

cvs diff: Diffing .
Index: extern.h
===================================================================
RCS file: /home/ncvs/src/usr.bin/find/extern.h,v
retrieving revision 1.21
diff -u -r1.21 extern.h
--- extern.h    28 May 2004 17:17:15 -0000      1.21
+++ extern.h    16 Jul 2004 07:07:50 -0000
@@ -58,6 +58,7 @@
creat_f c_depth;
creat_f c_empty;
creat_f c_exec;
+creat_f        c_exit;
creat_f c_flags;
creat_f c_follow;
#if !defined(__NetBSD__)
@@ -90,6 +91,7 @@
exec_f  f_depth;
exec_f  f_empty;
exec_f  f_exec;
+exec_f f_exit;
exec_f  f_expr;
exec_f  f_flags;
exec_f  f_fstype;
Index: find.1
===================================================================
RCS file: /home/ncvs/src/usr.bin/find/find.1,v
retrieving revision 1.66
diff -u -r1.66 find.1
--- find.1      7 Jul 2004 19:57:15 -0000       1.66
+++ find.1      16 Jul 2004 07:12:58 -0000
@@ -372,6 +372,10 @@
.Ar flags
bits match those of
.Ar notflags .
+.It Ic -exit Ar exitstatus
+This primary will cause the find program to exit immediately with an exit
+status of
+.Ar exitstatus .
.It Ic -fstype Ar type
True if the file is contained in a file system of type
.Ar type .
Index: function.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/find/function.c,v
retrieving revision 1.50
diff -u -r1.50 function.c
--- function.c  28 May 2004 17:17:15 -0000      1.50
+++ function.c  16 Jul 2004 07:07:05 -0000
@@ -748,6 +748,25 @@
}

int
+f_exit(PLAN *plan, FTSENT *entry)
+{
+
+       exit(plan->flags);
+}
+
+PLAN *
+c_exit(OPTION *option, char ***argvp)
+{
+       PLAN *new;
+       int ex;
+
+       ex = atoi(nextarg(option, argvp));
+       new = palloc(option);
+       new->flags = ex;
+       return (new);
+}
+
+int
f_flags(PLAN *plan, FTSENT *entry)
{
        u_long flags;
Index: option.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/find/option.c,v
retrieving revision 1.22
diff -u -r1.22 option.c
--- option.c    28 May 2004 17:17:15 -0000      1.22
+++ option.c    16 Jul 2004 07:06:49 -0000
@@ -76,6 +76,7 @@
        { "-empty",   c_empty,        f_empty,        0 },
        { "-exec",    c_exec,         f_exec,         0 },
        { "-execdir", c_exec,         f_exec,         F_EXECDIR },
+       { "-exit",    c_exit,         f_exit,         0 },
        { "-false",   c_simple,       f_not,          0 },
        { "-flags",   c_flags,        f_flags,        0 },
        { "-follow",  c_follow,       f_always_true,  0 },
--
- Alfred Perlstein
- Research Engineering Development Inc.
- email: [EMAIL PROTECTED] cell: 408-480-4684



_______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to