MAJOR: acl: remove the arg_mask from the ACL definition and use the sample fetch's

Now that ACLs solely rely on sample fetch functions, make them use the
same arg mask. All inconsistencies have been fixed separately prior to
this patch, so this patch almost only adds a new pointer indirection
and removes all references to ARG*() in the definitions.

The parsing is still performed by the ACL code though.
diff --git a/src/acl.c b/src/acl.c
index 8e6f97a..a996c63 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -1023,7 +1023,7 @@
 	expr->args = empty_arg_list;
 
 	arg = strchr(args[0], '(');
-	if (aclkw->arg_mask) {
+	if (aclkw->smp->arg_mask) {
 		int nbargs = 0;
 		char *end;
 
@@ -1041,7 +1041,7 @@
 			 * An error is also reported if some mandatory arguments are
 			 * missing.
 			 */
-			nbargs = make_arg_list(arg, end - arg, aclkw->arg_mask, &expr->args,
+			nbargs = make_arg_list(arg, end - arg, aclkw->smp->arg_mask, &expr->args,
 					       err, NULL, NULL);
 			if (nbargs < 0) {
 				/* note that make_arg_list will have set <err> here */
@@ -1060,15 +1060,15 @@
 				goto out_free_expr;
 			}
 		}
-		else if (ARGM(aclkw->arg_mask) == 1) {
-			int type = (aclkw->arg_mask >> 4) & 15;
+		else if (ARGM(aclkw->smp->arg_mask) == 1) {
+			int type = (aclkw->smp->arg_mask >> 4) & 15;
 
 			/* If a proxy is noted as a mandatory argument, we'll fake
 			 * an empty one so that acl_find_targets() resolves it as
 			 * the current one later.
 			 */
 			if (type != ARGT_FE && type != ARGT_BE && type != ARGT_TAB) {
-				memprintf(err, "ACL keyword '%s' expects %d arguments", aclkw->kw, ARGM(aclkw->arg_mask));
+				memprintf(err, "ACL keyword '%s' expects %d arguments", aclkw->kw, ARGM(aclkw->smp->arg_mask));
 				goto out_free_expr;
 			}
 
@@ -1083,9 +1083,9 @@
 			expr->args[0].data.str.len = 0;
 			expr->args[1].type = ARGT_STOP;
 		}
-		else if (ARGM(aclkw->arg_mask)) {
+		else if (ARGM(aclkw->smp->arg_mask)) {
 			/* there were some mandatory arguments */
-			memprintf(err, "ACL keyword '%s' expects %d arguments", aclkw->kw, ARGM(aclkw->arg_mask));
+			memprintf(err, "ACL keyword '%s' expects %d arguments", aclkw->kw, ARGM(aclkw->smp->arg_mask));
 			goto out_free_expr;
 		}
 	}
@@ -1977,8 +1977,8 @@
  * Please take care of keeping this list alphabetically sorted.
  */
 static struct acl_kw_list acl_kws = {{ },{
-	{ "always_false", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, 0 },
-	{ "always_true",  NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING, 0 },
+	{ "always_false", NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING },
+	{ "always_true",  NULL, acl_parse_nothing, acl_match_nothing, ACL_USE_NOTHING },
 	{ /* END */ },
 }};