}
if (arg[2].type == ARGT_STR && arg[2].data.str.data > 0) {
+ long long int i;
+
if (arg[2].data.str.area[0] == '+' || arg[2].data.str.area[0] == '-')
relative = 1;
str = arg[2].data.str.area;
- arg[2].type = ARGT_SINT;
- arg[2].data.sint = read_int64(&str,
- str + arg[2].data.str.data);
+ i = read_int64(&str, str + arg[2].data.str.data);
if (*str != '\0') {
memprintf(err_msg, "payload offset2 is not a number");
return 0;
}
- if (arg[0].data.sint + arg[1].data.sint + arg[2].data.sint < 0) {
+ free(arg[2].data.str.area);
+ arg[2].type = ARGT_SINT;
+ arg[2].data.sint = i;
+
+ if (arg[0].data.sint + arg[1].data.sint + arg[2].data.sint < 0) {
memprintf(err_msg, "payload offset2 too negative");
return 0;
}
token = (arg[0].data.str.area[0] << 24) + (arg[0].data.str.area[1] << 16) +
(arg[0].data.str.area[2] << 8) + (arg[0].data.str.area[3] << 0);
+ free(arg[0].data.str.area);
arg[0].type = ARGT_SINT;
arg[0].data.sint = token;
return 0;
}
+ free(args[1].data.str.area);
args[1].type = ARGT_PTR;
args[1].data.ptr = sink;
return 1;
static int sample_conv_json_check(struct arg *arg, struct sample_conv *conv,
const char *file, int line, char **err)
{
+ enum input_type type;
+
if (!arg) {
memprintf(err, "Unexpected empty arg list");
return 0;
return 0;
}
- if (strcmp(arg->data.str.area, "") == 0) {
- arg->type = ARGT_SINT;
- arg->data.sint = IT_ASCII;
- return 1;
- }
-
- else if (strcmp(arg->data.str.area, "ascii") == 0) {
- arg->type = ARGT_SINT;
- arg->data.sint = IT_ASCII;
- return 1;
- }
-
- else if (strcmp(arg->data.str.area, "utf8") == 0) {
- arg->type = ARGT_SINT;
- arg->data.sint = IT_UTF8;
- return 1;
- }
-
- else if (strcmp(arg->data.str.area, "utf8s") == 0) {
- arg->type = ARGT_SINT;
- arg->data.sint = IT_UTF8S;
- return 1;
- }
-
- else if (strcmp(arg->data.str.area, "utf8p") == 0) {
- arg->type = ARGT_SINT;
- arg->data.sint = IT_UTF8P;
- return 1;
- }
-
- else if (strcmp(arg->data.str.area, "utf8ps") == 0) {
- arg->type = ARGT_SINT;
- arg->data.sint = IT_UTF8PS;
- return 1;
+ if (strcmp(arg->data.str.area, "") == 0)
+ type = IT_ASCII;
+ else if (strcmp(arg->data.str.area, "ascii") == 0)
+ type = IT_ASCII;
+ else if (strcmp(arg->data.str.area, "utf8") == 0)
+ type = IT_UTF8;
+ else if (strcmp(arg->data.str.area, "utf8s") == 0)
+ type = IT_UTF8S;
+ else if (strcmp(arg->data.str.area, "utf8p") == 0)
+ type = IT_UTF8P;
+ else if (strcmp(arg->data.str.area, "utf8ps") == 0)
+ type = IT_UTF8PS;
+ else {
+ memprintf(err, "Unexpected input code type. "
+ "Allowed value are 'ascii', 'utf8', 'utf8s', 'utf8p' and 'utf8ps'");
+ return 0;
}
- memprintf(err, "Unexpected input code type. "
- "Allowed value are 'ascii', 'utf8', 'utf8s', 'utf8p' and 'utf8ps'");
- return 0;
+ free(arg->data.str.area);
+ arg->type = ARGT_SINT;
+ arg->data.sint = type;
+ return 1;
}
static int sample_conv_json(const struct arg *arg_p, struct sample *smp, void *private)
{
const char *str;
const char *end;
+ long long int i;
/* Try to decode a variable. */
if (vars_check_arg(&args[0], NULL))
/* Try to convert an integer */
str = args[0].data.str.area;
end = str + strlen(str);
- args[0].data.sint = read_int64(&str, end);
+ i = read_int64(&str, end);
if (*str != '\0') {
memprintf(err, "expects an integer or a variable name");
return 0;
}
+
+ free(args[0].data.str.area);
args[0].type = ARGT_SINT;
+ args[0].data.sint = i;
return 1;
}
return 0;
}
+ free(args[1].data.str.area);
args[1].type = ARGT_SINT;
args[1].data.sint = pbuf_type;
}
int smp_check_date_unit(struct arg *args, char **err)
{
if (args[1].type == ARGT_STR) {
+ long long int unit;
+
if (strcmp(args[1].data.str.area, "s") == 0) {
- args[1].data.sint = TIME_UNIT_S;
+ unit = TIME_UNIT_S;
}
else if (strcmp(args[1].data.str.area, "ms") == 0) {
- args[1].data.sint = TIME_UNIT_MS;
+ unit = TIME_UNIT_MS;
}
else if (strcmp(args[1].data.str.area, "us") == 0) {
- args[1].data.sint = TIME_UNIT_US;
+ unit = TIME_UNIT_US;
}
else {
memprintf(err, "expects 's', 'ms' or 'us', got '%s'",
args[1].data.str.area);
return 0;
}
- free(args[1].data.str.area);
- args[1].data.str.area = NULL;
+
+ free(args[1].data.str.area);
args[1].type = ARGT_SINT;
+ args[1].data.sint = unit;
}
else if (args[1].type != ARGT_STOP) {
memprintf(err, "Unexpected arg type");
if (!parse_binary(args[0].data.str.area, &binstr, &binstrlen, err))
return 0;
+ free(args[0].data.str.area);
args[0].type = ARGT_STR;
args[0].data.str.area = binstr;
args[0].data.str.data = binstrlen;