From ddb56f612146f1f6e52b3c926e6f04d5ca40eb4d Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Thu, 11 Dec 2003 20:50:21 +0000 Subject: [PATCH] Add the -o file option to rcorder. This will cause rcorder to generate the dependancy list required to execute a particular file. --- sbin/rcorder/rcorder.8 | 9 ++++++++- sbin/rcorder/rcorder.c | 28 +++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/sbin/rcorder/rcorder.8 b/sbin/rcorder/rcorder.8 index c09f638bda..10b12440a8 100644 --- a/sbin/rcorder/rcorder.8 +++ b/sbin/rcorder/rcorder.8 @@ -1,5 +1,5 @@ .\" $NetBSD: rcorder.8,v 1.3 2000/07/17 14:16:22 mrg Exp $ -.\" $DragonFly: src/sbin/rcorder/rcorder.8,v 1.1 2003/07/24 06:35:38 dillon Exp $ +.\" $DragonFly: src/sbin/rcorder/rcorder.8,v 1.2 2003/12/11 20:50:21 dillon Exp $ .\" .\" Copyright (c) 1998 .\" Perry E. Metzger. All rights reserved. @@ -42,6 +42,7 @@ .Nm .Op Fl k Ar keep .Op Fl s Ar skip +.Op Fl o Ar resolve_for_file .Ar .Sh DESCRIPTION The @@ -105,6 +106,12 @@ Add the specified keyword to the If any .Fl s option is given, files containing the matching keyword are not listed. +.It Fl o +Generate the dependancy list required to execute this file, including this +file. +If several +.Fl o +options are specified, the results are merged. .El .Pp An example block follows: diff --git a/sbin/rcorder/rcorder.c b/sbin/rcorder/rcorder.c index 109203b75d..669a2a6fef 100644 --- a/sbin/rcorder/rcorder.c +++ b/sbin/rcorder/rcorder.c @@ -31,7 +31,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $NetBSD: rcorder.c,v 1.7 2000/08/04 07:33:55 enami Exp $ - * $DragonFly: src/sbin/rcorder/rcorder.c,v 1.3 2003/11/01 17:16:01 drhodus Exp $ + * $DragonFly: src/sbin/rcorder/rcorder.c,v 1.4 2003/12/11 20:50:21 dillon Exp $ */ #include @@ -126,6 +126,7 @@ filenode fn_head_s, *fn_head; strnodelist *bl_list; strnodelist *keep_list; strnodelist *skip_list; +strnodelist *onetime_list; void do_file(filenode *fnode); void strnode_add(strnodelist **, char *, filenode *); @@ -154,7 +155,7 @@ main(int argc, char **argv) { int ch; - while ((ch = getopt(argc, argv, "dk:s:")) != -1) + while ((ch = getopt(argc, argv, "dk:s:o:")) != -1) switch (ch) { case 'd': #ifdef DEBUG @@ -169,6 +170,9 @@ main(int argc, char **argv) case 's': strnode_add(&skip_list, optarg, 0); break; + case 'o': + strnode_add(&onetime_list, optarg, 0); + break; default: /* XXX should crunch it? */ break; @@ -786,8 +790,22 @@ generate_ordering(void) * executed only once for every strongly connected set of * nodes. */ - while (fn_head->next != NULL) { - DPRINTF((stderr, "generate on %s\n", fn_head->next->filename)); - do_file(fn_head->next); + if (onetime_list) { + struct strnodelist *scan; + filenode *file; + + for (scan = onetime_list; scan; scan = scan->next) { + for (file = fn_head->next; file; file = file->next) { + if (strcmp(scan->s, file->filename) == 0) { + do_file(file); + break; + } + } + } + } else { + while (fn_head->next != NULL) { + DPRINTF((stderr, "generate on %s\n", fn_head->next->filename)); + do_file(fn_head->next); + } } } -- 2.41.0