From 3c4b5a852d5bb9070c7fb4428aa50f2e3e1f6e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 19 Sep 2013 11:25:49 +0200 Subject: [PATCH] Confirm success for each tc -batch command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If `tc -force -batch' is fed by a controlling program from a pipe, it's not possible to recognize when a command has been processes successfully. This patch adds an optional `-OK' option to the tc(8) tool, so `tc -force -OK -batch' will print "OK\n" to standard output on each successfully completed tc command. Signed-off-by: Petr Písař --- man/man8/tc.8 | 8 +++++++- tc/tc.c | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/man/man8/tc.8 b/man/man8/tc.8 index e0acfeb..583eae2 100644 --- a/man/man8/tc.8 +++ b/man/man8/tc.8 @@ -49,7 +49,7 @@ DEV .P .ti 8 .IR OPTIONS " := {" -\fB[ -force ] -b\fR[\fIatch\fR] \fB[ filename ] \fR| +\fB[ -force ] [ -OK ] -b\fR[\fIatch\fR] \fB[ filename ] \fR| \fB[ \fB-n\fR[\fIetns\fR] name \fB] \fR} .ti 8 @@ -440,6 +440,12 @@ First failure will cause termination of tc. .RS 4 Shows classes as ASCII graph with stats info under each class. +.TP +.BR "\-OK" +in batch mode, print +.B OK +and a new line on standard output after each successfully interpreted command. + .SH HISTORY .B tc was written by Alexey N. Kuznetsov and added in Linux 2.2. diff --git a/tc/tc.c b/tc/tc.c index 9b50e74..b43bb47 100644 --- a/tc/tc.c +++ b/tc/tc.c @@ -39,6 +39,7 @@ int batch_mode = 0; int resolve_hosts = 0; int use_iec = 0; int force = 0; +int ok = 0; struct rtnl_handle rth; static void *BODY = NULL; /* cached handle dlopen(NULL) */ @@ -183,7 +184,7 @@ noexist: static void usage(void) { fprintf(stderr, "Usage: tc [ OPTIONS ] OBJECT { COMMAND | help }\n" - " tc [-force] -batch filename\n" + " tc [-force] [-OK] -batch filename\n" "where OBJECT := { qdisc | class | filter | action | monitor }\n" " OPTIONS := { -s[tatistics] | -d[etails] | -r[aw] | -p[retty] | -b[atch] [filename] | " "-n[etns] name }\n"); @@ -251,6 +252,9 @@ static int batch(const char *name) ret = 1; if (!force) break; + } else if (ok) { + printf("OK\n"); + fflush(stdout); } } if (line) @@ -288,6 +292,8 @@ int main(int argc, char **argv) return 0; } else if (matches(argv[1], "-force") == 0) { ++force; + } else if (matches(argv[1], "-OK") == 0) { + ++ok; } else if (matches(argv[1], "-batch") == 0) { argc--; argv++; if (argc <= 1) -- 1.8.3.1