MEDIUM: acl: report parsing errors to the caller

All parsing errors were known but impossible to return. Now by making use
of memprintf(), we're able to build meaningful error messages that the
caller can display.
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 4aa4729..dc7812d 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -962,10 +962,13 @@
 	}
 
 	if (strcmp(args[arg], "if") == 0 || strcmp(args[arg], "unless") == 0) {
-		if ((rule->cond = build_acl_cond(NULL, 0, curpx, (const char **)args+arg)) == NULL) {
+		char *errmsg = NULL;
+
+		if ((rule->cond = build_acl_cond(NULL, 0, curpx, (const char **)args+arg, &errmsg)) == NULL) {
 			snprintf(err, errlen,
-				 "error detected in %s '%s' while parsing '%s' condition",
-				 proxy_type_str(curpx), curpx->id, args[arg]);
+				 "error detected in %s '%s' while parsing '%s' condition : %s",
+				 proxy_type_str(curpx), curpx->id, args[arg], errmsg);
+			free(errmsg);
 			return -1;
 		}
 	}
@@ -1032,10 +1035,13 @@
 	}
 
 	if (strcmp(args[arg], "if") == 0 || strcmp(args[arg], "unless") == 0) {
-		if ((rule->cond = build_acl_cond(NULL, 0, curpx, (const char **)args+arg)) == NULL) {
+		char *errmsg = NULL;
+
+		if ((rule->cond = build_acl_cond(NULL, 0, curpx, (const char **)args+arg, &errmsg)) == NULL) {
 			snprintf(err, errlen,
-				 "error detected in %s '%s' while parsing '%s' condition",
-				 proxy_type_str(curpx), curpx->id, args[arg]);
+				 "error detected in %s '%s' while parsing '%s' condition : %s",
+				 proxy_type_str(curpx), curpx->id, args[arg], errmsg);
+			free(errmsg);
 			return -1;
 		}
 	}