#include "common/bytecode/bytecode.h"
#include "common/compat/string.h"
#include "common/macros.h"
+#include "common/string-utils/string-utils.h"
#include "filter-ast.h"
#include "filter-ir.h"
return bytecode_push(&ctx->bytecode, &insn, 1, sizeof(insn));
}
-static
-int append_str(char **s, const char *append)
-{
- char *old = *s;
- char *new;
- size_t oldlen = (old == NULL) ? 0 : strlen(old);
- size_t appendlen = strlen(append);
-
- new = calloc(oldlen + appendlen + 1, 1);
- if (!new) {
- return -ENOMEM;
- }
- if (oldlen) {
- strcpy(new, old);
- }
- strcat(new, append);
- *s = new;
- free(old);
- return 0;
-}
-
/*
* 1: match
* 0: no match
switch (op->type) {
case IR_LOAD_EXPRESSION_GET_CONTEXT_ROOT:
*op_type = BYTECODE_OP_GET_CONTEXT_REF;
- if (append_str(symbol, "$ctx.")) {
+ if (strutils_append_str(symbol, "$ctx.")) {
return -ENOMEM;
}
need_dot = false;
break;
case IR_LOAD_EXPRESSION_GET_APP_CONTEXT_ROOT:
*op_type = BYTECODE_OP_GET_CONTEXT_REF;
- if (append_str(symbol, "$app.")) {
+ if (strutils_append_str(symbol, "$app.")) {
return -ENOMEM;
}
need_dot = false;
case IR_LOAD_EXPRESSION_LOAD_FIELD:
goto end;
case IR_LOAD_EXPRESSION_GET_SYMBOL:
- if (need_dot && append_str(symbol, ".")) {
+ if (need_dot && strutils_append_str(symbol, ".")) {
return -ENOMEM;
}
- if (append_str(symbol, op->u.symbol)) {
+ if (strutils_append_str(symbol, op->u.symbol)) {
return -ENOMEM;
}
break;