Date: Fri, 16 Jul 2004 00:15:45 -0700 From: Alfred Perlstein <alfred@freebsd.org> To: hackers@freebsd.org Subject: RFC: "-exit" option for find(1) Message-ID: <20040716071545.GW95729@elvis.mu.org>
next in thread | raw e-mail | index | archive | help
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: bright@mu.org cell: 408-480-4684
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040716071545.GW95729>