diff --git a/communication.c b/communication.c
index 33aa98d..f9f173b 100644
--- a/communication.c
+++ b/communication.c
@@ -297,7 +297,7 @@
 
 /* Gets executed after ebt_deliver_table. Delivers the counters to the kernel
  * and resets the counterchanges to CNT_NORM */
-void ebt_deliver_counters(struct ebt_u_replace *u_repl, int exec_style)
+void ebt_deliver_counters(struct ebt_u_replace *u_repl)
 {
 	struct ebt_counter *old, *new, *newcounters;
 	socklen_t optlen;
diff --git a/ebtables.c b/ebtables.c
index 05c30c4..855b4fc 100644
--- a/ebtables.c
+++ b/ebtables.c
@@ -1008,13 +1008,10 @@
 			replace->flags |= OPT_COMMAND;
 			{
 				char *tmp = replace->filename;
-				int init = 1;
 
-				if (c == 10)
-					init = 0;
 				/* Get the kernel table */
 				replace->filename = NULL;
-				ebt_get_kernel_table(replace, init);
+				ebt_get_kernel_table(replace, c == 10 ? 0 : 1);
 				replace->filename = tmp;
 			}
 			break;
@@ -1208,7 +1205,7 @@
 		ebt_deliver_table(replace);
 
 		if (replace->nentries)
-			ebt_deliver_counters(replace, EXEC_STYLE_PRG);
+			ebt_deliver_counters(replace);
 	}
 	return 0;
 }
diff --git a/ebtablesd.c b/ebtablesd.c
index 59bbe1c..062a2d6 100644
--- a/ebtablesd.c
+++ b/ebtablesd.c
@@ -52,7 +52,7 @@
 	char *argv[EBTD_ARGC_MAX], *args[4], name[] = "mkdir",
 	     mkdir_option[] = "-p", mkdir_dir[] = EBTD_PIPE_DIR,
 	     cmdline[EBTD_CMDLINE_MAXLN];
-	int readfd, base = 0, offset = 0, n = 0, ret = 0;
+	int readfd, base = 0, offset = 0, n = 0, ret = 0, quotemode = 0;
 
 	/* Make sure the pipe directory exists */
 	args[0] = name;
@@ -104,15 +104,16 @@
 			continue;
 		ntot += offset;
 continue_read:
-		/* Change all ' ' into '\0'. This implies that the user is not
-		 * allowed to use spaces (that don't distinguish options or
-		 * commands) in her rules. This comes down to not allowing spaces
-		 * in options like the string of --ulog-prefix (use '_' instead).
-		 */
+		/* Put '\0' between arguments. */
 		for (; offset < ntot; n++, offset++) {
-			if (cmdline[offset] == ' ')
+			if (cmdline[offset] == '\"') {
+				quotemode ^= 1;
 				cmdline[offset] = '\0';
-			if (cmdline[offset] == '\n') {
+			} else if (!quotemode && cmdline[offset] == ' ') {
+				cmdline[offset] = '\0';
+			} else if (cmdline[offset] == '\n') {
+				if (quotemode)
+					ebt_print_error("ebtablesd: wrong number of \" delimiters");
 				cmdline[offset] = '\0';
 				break;
 			}
@@ -145,6 +146,10 @@
 		n2 = 0;
 		argc = 0;
 		while (n2 < n && argc < EBTD_ARGC_MAX) {
+			if (*(cmdline + base + n2) == '\0') {
+				n2++;
+				continue;
+			}
 			argv[argc++] = cmdline + base + n2;
 			n2 += strlen(cmdline + base + n2) + 1;
 		}
@@ -303,7 +308,7 @@
 				replace[i].num_counters = 0;
 			ebt_deliver_table(&replace[i]);
 			if (ebt_errormsg[0] == '\0' && open_method[i] == OPEN_METHOD_KERNEL)
-				ebt_deliver_counters(&replace[i], EXEC_STYLE_DAEMON);
+				ebt_deliver_counters(&replace[i]);
 			goto write_msg;
 		} else if (!strcmp(argv[1], "fcommit")) {
 			if (argc != 4) {
@@ -333,7 +338,7 @@
 			strcpy(replace[i].filename, argv[3]);
 			ebt_deliver_table(&replace[i]);
 			if (ebt_errormsg[0] == '\0' && open_method[i] == OPEN_METHOD_KERNEL)
-				ebt_deliver_counters(&replace[i], EXEC_STYLE_DAEMON);
+				ebt_deliver_counters(&replace[i]);
 			free(replace[i].filename);
 			replace[i].filename = NULL;
 			goto write_msg;
diff --git a/ebtablesu.c b/ebtablesu.c
index 1fed0c1..3cee145 100644
--- a/ebtablesu.c
+++ b/ebtablesu.c
@@ -76,7 +76,8 @@
 	pos = arguments;
 	for (i = 0; i < argc; i++) {
 		strcpy(pos, argv[i]);
-		pos += strlen(argv[i]) + 1;
+		pos += strlen(argv[i]);
+		*(pos++) = ' ';
 	}
 
 	*(pos-1) = '\n';
diff --git a/include/ebtables_u.h b/include/ebtables_u.h
index e63cc45..b725625 100644
--- a/include/ebtables_u.h
+++ b/include/ebtables_u.h
@@ -276,7 +276,7 @@
 /* communication.c */
 
 int ebt_get_table(struct ebt_u_replace *repl, int init);
-void ebt_deliver_counters(struct ebt_u_replace *repl, int exec_style);
+void ebt_deliver_counters(struct ebt_u_replace *repl);
 void ebt_deliver_table(struct ebt_u_replace *repl);
 
 /* useful_functions.c */
diff --git a/libebtc.c b/libebtc.c
index 2feefe9..af95694 100644
--- a/libebtc.c
+++ b/libebtc.c
@@ -1272,8 +1272,8 @@
 		vsnprintf(ebt_errormsg, ERRORMSG_MAXLEN, format, l);
 		va_end(l);
 	} else {
-		vprintf(format, l);
-		printf(".\n");
+		vfprintf(stderr, format, l);
+		fprintf(stderr, ".\n");
 		va_end(l);
 		exit (-1);
 	}
