Skip to content

Commit

Permalink
refactor: fix function name to remove WP specific language
Browse files Browse the repository at this point in the history
  • Loading branch information
bduranleau-nr committed Dec 4, 2023
1 parent a53c360 commit f858002
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 21 deletions.
4 changes: 2 additions & 2 deletions agent/fw_wordpress.c
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ char* nr_php_wordpress_theme_match_matcher(const char* filename) {
char* nr_php_wordpress_core_match_matcher(const char* filename) {
char* core = NULL;
int plugin_len;
core = nr_matcher_match_core_ex(nr_wordpress_core_matcher(), filename, nr_strlen(filename), &plugin_len);
core = nr_matcher_match_r_ex(nr_wordpress_core_matcher(), filename, nr_strlen(filename), &plugin_len);
core = nr_wordpress_strip_php_suffix(core, plugin_len);
nr_matcher_destroy(&NRPRG(wordpress_core_matcher));
return core;
Expand Down Expand Up @@ -261,7 +261,7 @@ static char* nr_wordpress_plugin_from_function(zend_function* func TSRMLS_DC) {
goto cache_and_return;
}

plugin = nr_matcher_match_core_ex(nr_wordpress_core_matcher(), filename, filename_len, &plugin_len);
plugin = nr_matcher_match_r_ex(nr_wordpress_core_matcher(), filename, filename_len, &plugin_len);
plugin = nr_wordpress_strip_php_suffix(plugin, plugin_len);
if (plugin) {
/*
Expand Down
42 changes: 26 additions & 16 deletions axiom/util_matcher.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
#include "util_strings.h"

typedef struct {
char *cp;
char* cp;
int len;
} matcher_prefix;

static void nr_matcher_prefix_dtor(void* _p, void* userdata NRUNUSED) {
matcher_prefix* p = (matcher_prefix *)_p;
matcher_prefix* p = (matcher_prefix*)_p;
nr_free(p->cp);
nr_free(p);
}
Expand Down Expand Up @@ -54,24 +54,26 @@ bool nr_matcher_add_prefix(nr_matcher_t* matcher, const char* str) {
prefix->len--;
}

prefix->len += 1; // +1 for the trailing '/'
if (NULL == (prefix->cp = nr_malloc(prefix->len+1))) { // +1 for the '\0'
prefix->len += 1; // +1 for the trailing '/'
if (NULL == (prefix->cp = nr_malloc(prefix->len + 1))) { // +1 for the '\0'
nr_matcher_prefix_dtor(prefix, NULL);
return false;
}
for (i = 0; i < prefix->len; i++) {
prefix->cp[i] = nr_tolower(str[i]);
}
prefix->cp[prefix->len-1] = '/';
prefix->cp[prefix->len - 1] = '/';
prefix->cp[prefix->len] = '\0';

return nr_vector_push_back(&matcher->prefixes, prefix);
}

#define SET_SAFE(p, v) do {\
if (NULL != p) *p = (v); \
} while(0);
static char* nr_matcher_match_internal(nr_matcher_t* matcher,
#define SET_SAFE(p, v) \
do { \
if (NULL != p) \
*p = (v); \
} while (0);
static char* nr_matcher_match_internal(nr_matcher_t* matcher,
const char* input,
int input_len,
int* match_len,
Expand Down Expand Up @@ -106,12 +108,12 @@ static char* nr_matcher_match_internal(nr_matcher_t* matcher,
}
if (NULL == slash) {
match = nr_strdup(found);
SET_SAFE(match_len, input_len - (found-input));
SET_SAFE(match_len, input_len - (found - input));
} else {
if (true == core) {
const char* offset = input + input_len;
match = nr_strndup(slash + 1, offset - slash);
SET_SAFE(match_len, offset - (slash+1));
SET_SAFE(match_len, offset - (slash + 1));
} else {
match = nr_strndup(found, slash - found);
SET_SAFE(match_len, slash - found);
Expand All @@ -125,18 +127,26 @@ static char* nr_matcher_match_internal(nr_matcher_t* matcher,
return match;
}

char* nr_matcher_match_ex(nr_matcher_t* matcher, const char* input, int input_len, int *match_len) {
char* nr_matcher_match_ex(nr_matcher_t* matcher,
const char* input,
int input_len,
int* match_len) {
return nr_matcher_match_internal(matcher, input, input_len, match_len, false);
}

char* nr_matcher_match(nr_matcher_t* matcher, const char* input) {
return nr_matcher_match_internal(matcher, input, nr_strlen(input), NULL, false);
return nr_matcher_match_internal(matcher, input, nr_strlen(input), NULL,
false);
}

char* nr_matcher_match_core_ex(nr_matcher_t* matcher, const char* input, int input_len, int *match_len) {
char* nr_matcher_match_r_ex(nr_matcher_t* matcher,
const char* input,
int input_len,
int* match_len) {
return nr_matcher_match_internal(matcher, input, input_len, match_len, true);
}

char* nr_matcher_match_core(nr_matcher_t* matcher, const char* input) {
return nr_matcher_match_internal(matcher, input, nr_strlen(input), NULL, true);
char* nr_matcher_match_r(nr_matcher_t* matcher, const char* input) {
return nr_matcher_match_internal(matcher, input, nr_strlen(input), NULL,
true);
}
20 changes: 17 additions & 3 deletions axiom/util_matcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,24 @@ extern void nr_matcher_destroy(nr_matcher_t** matcher_ptr);

extern bool nr_matcher_add_prefix(nr_matcher_t* matcher, const char* prefix);

extern char* nr_matcher_match_ex(nr_matcher_t* matcher, const char* input, int input_len, int* match_len);
/*
* Return a substring from an input string using a matcher definition from the
* left side of the string
*/
extern char* nr_matcher_match_ex(nr_matcher_t* matcher,
const char* input,
int input_len,
int* match_len);
extern char* nr_matcher_match(nr_matcher_t* matcher, const char* input);

extern char* nr_matcher_match_core_ex(nr_matcher_t* matcher, const char* input, int input_len, int* match_len);
extern char* nr_matcher_match_core(nr_matcher_t* matcher, const char* input);
/*
* Return a substring from an input string using a matcher definition from the
* right side of the string
*/
extern char* nr_matcher_match_r_ex(nr_matcher_t* matcher,
const char* input,
int input_len,
int* match_len);
extern char* nr_matcher_match_r(nr_matcher_t* matcher, const char* input);

#endif

0 comments on commit f858002

Please sign in to comment.