Thread (8 messages) 8 messages, 2 authors, 2018-01-03

Re: [patch iproute2 v4 2/3] tc: Add -bs option to batch mode

flat view

From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date: 2018-01-02 20:04:29

On Tue, Jan 02, 2018 at 11:28:03PM +0900, Chris Mi wrote:
quoted hunk ↗ jump to hunk
@@ -240,23 +244,49 @@ static int batch(const char *name)
 	}
 
 	cmdlineno = 0;
-	while (getcmdline(&line, &len, stdin) != -1) {
+	if (getcmdline(&line, &len, stdin) == -1)
+		goto Exit;
+	do {
 		char *largv[100];
 		int largc;
 
+		if (getcmdline(&line2, &len, stdin) == -1)
+			lastline = true;
+
 		largc = makeargs(line, largv, 100);
 		if (largc == 0)
 			continue;	/* blank line */
If it reads a new line, it won't process anything else after it
because line won't get updated.

  Marcelo
quoted hunk ↗ jump to hunk
 
-		if (do_cmd(largc, largv)) {
-			fprintf(stderr, "Command failed %s:%d\n", name, cmdlineno);
+		line = line2;
+		line2 = NULL;
+		len = 0;
+
+		/*
+		 * In batch mode, if we haven't accumulated enough commands
+		 * and this is not the last command, don't send the message
+		 * immediately.
+		 */
+		if (batch_size > 1 && msg_iov_index + 1 != batch_size
+		    && !lastline)
+			send = false;
+		else
+			send = true;
+
+		ret = do_cmd(largc, largv, batch_size, msg_iov_index++, send);
+		if (ret < 0) {
+			fprintf(stderr, "Command failed %s:%d\n", name,
+				cmdlineno);
 			ret = 1;
 			if (!force)
 				break;
 		}
-	}
-	if (line)
-		free(line);
+		msg_iov_index %= batch_size;
+	} while (!lastline);
+
+	free_filter_reqs();
+	free_action_reqs();
+Exit:
+	free(line);
 
 	rtnl_close(&rth);
 	return ret;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help