static inline
This commit is contained in:
parent
0eb9cad11c
commit
a6be7f5061
4 changed files with 79 additions and 36 deletions
|
@ -10,8 +10,6 @@
|
|||
#include "r3.h"
|
||||
#include "config.h"
|
||||
|
||||
int slug_count(const char * p, int len, char ** errstr);
|
||||
|
||||
char * slug_compile(const char * str, int len);
|
||||
|
||||
char * slug_find_pattern(const char *s1, int *len);
|
||||
|
|
76
src/slug.c
76
src/slug.c
|
@ -143,3 +143,79 @@ r3_slug_t * r3_slug_parse(char *needle, int needle_len, char *offset, char **err
|
|||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
int slug_count2(char * needle, int needle_len, char **errstr) {
|
||||
// r3_slug_t * s = r3_slug_parse(needle, needle_len, needle);
|
||||
|
||||
|
||||
int cnt = 0;
|
||||
int state = 0;
|
||||
char * p = (char*) needle;
|
||||
while( (p-needle) < len) {
|
||||
|
||||
if (*p == '\\' ) {
|
||||
p++; p++;
|
||||
}
|
||||
|
||||
if (state == 1 && *p == '}') {
|
||||
cnt++;
|
||||
}
|
||||
if ( *p == '{' ) {
|
||||
state++;
|
||||
} else if ( *p == '}' ) {
|
||||
state--;
|
||||
}
|
||||
p++;
|
||||
};
|
||||
info("FOUND PATTERN: '%s' (%d), STATE: %d\n", needle, len, state);
|
||||
if (state != 0) {
|
||||
if (errstr) {
|
||||
asprintf(errstr, "incomplete slug pattern. PATTERN (%d): '%s', OFFSET: %ld, STATE: %d", len, needle, p - needle, state);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* provide a quick way to count slugs, simply search for '{'
|
||||
*/
|
||||
int slug_count(const char * needle, int len, char **errstr) {
|
||||
int cnt = 0;
|
||||
int state = 0;
|
||||
char * p = (char*) needle;
|
||||
|
||||
while( (p-needle) < len) {
|
||||
|
||||
if (*p == '\\' ) {
|
||||
p++; p++;
|
||||
}
|
||||
|
||||
if (state == 1 && *p == '}') {
|
||||
cnt++;
|
||||
}
|
||||
if ( *p == '{' ) {
|
||||
state++;
|
||||
} else if ( *p == '}' ) {
|
||||
state--;
|
||||
}
|
||||
p++;
|
||||
};
|
||||
info("FOUND PATTERN: '%s' (%d), STATE: %d\n", needle, len, state);
|
||||
if (state != 0) {
|
||||
if (errstr) {
|
||||
asprintf(errstr, "incomplete slug pattern. PATTERN (%d): '%s', OFFSET: %ld, STATE: %d", len, needle, p - needle, state);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -49,7 +49,9 @@ char * r3_slug_to_str(const r3_slug_t *s);
|
|||
|
||||
void r3_slug_free(r3_slug_t * s);
|
||||
|
||||
inline int r3_path_contains_slug_char(const char * str) {
|
||||
int slug_count(const char * needle, int len, char **errstr);
|
||||
|
||||
static inline int r3_path_contains_slug_char(const char * str) {
|
||||
return strchr(str, '{') != NULL ? 1 : 0;
|
||||
}
|
||||
|
||||
|
|
33
src/str.c
33
src/str.c
|
@ -39,39 +39,6 @@ int r3_pattern_to_opcode(const char * pattern, int len) {
|
|||
|
||||
|
||||
|
||||
/**
|
||||
* provide a quick way to count slugs, simply search for '{'
|
||||
*/
|
||||
int slug_count(const char * needle, int len, char **errstr) {
|
||||
int cnt = 0;
|
||||
int state = 0;
|
||||
char * p = (char*) needle;
|
||||
|
||||
while( (p-needle) < len) {
|
||||
|
||||
if (*p == '\\' ) {
|
||||
p++; p++;
|
||||
}
|
||||
|
||||
if (state == 1 && *p == '}') {
|
||||
cnt++;
|
||||
}
|
||||
if ( *p == '{' ) {
|
||||
state++;
|
||||
} else if ( *p == '}' ) {
|
||||
state--;
|
||||
}
|
||||
p++;
|
||||
};
|
||||
info("FOUND PATTERN: '%s' (%d), STATE: %d\n", needle, len, state);
|
||||
if (state != 0) {
|
||||
if (errstr) {
|
||||
asprintf(errstr, "incomplete slug pattern. PATTERN (%d): '%s', OFFSET: %ld, STATE: %d", len, needle, p - needle, state);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
char * inside_slug(const char * needle, int needle_len, char *offset, char **errstr) {
|
||||
char * s1 = offset;
|
||||
|
|
Loading…
Reference in a new issue