Add error message for failed regex initialization
This commit is contained in:
parent
f12f1094ed
commit
f48a939dbf
27
src/menu.c
27
src/menu.c
@ -21,7 +21,7 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
static bool is_initialized = false;
|
static bool is_initialized = false;
|
||||||
static regex_t cregex;
|
static regex_t url_regex;
|
||||||
|
|
||||||
struct notification_lock {
|
struct notification_lock {
|
||||||
struct notification *n;
|
struct notification *n;
|
||||||
@ -29,29 +29,36 @@ struct notification_lock {
|
|||||||
};
|
};
|
||||||
static gpointer context_menu_thread(gpointer data);
|
static gpointer context_menu_thread(gpointer data);
|
||||||
|
|
||||||
static int regex_init(void)
|
/**
|
||||||
|
* Initializes regexes needed for matching.
|
||||||
|
*
|
||||||
|
* @return true if initialization succeeded
|
||||||
|
*/
|
||||||
|
static bool regex_init(void)
|
||||||
{
|
{
|
||||||
if (is_initialized)
|
if (is_initialized)
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
char *regex =
|
char *regex =
|
||||||
"\\b(https?://|ftps?://|news://|mailto:|file://|www\\.)"
|
"\\b(https?://|ftps?://|news://|mailto:|file://|www\\.)"
|
||||||
"[-[:alnum:]_\\@;/?:&=%$.+!*\x27,~#]*"
|
"[-[:alnum:]_\\@;/?:&=%$.+!*\x27,~#]*"
|
||||||
"(\\([-[:alnum:]_\\@;/?:&=%$.+!*\x27,~#]*\\)|[-[:alnum:]_\\@;/?:&=%$+*~])+";
|
"(\\([-[:alnum:]_\\@;/?:&=%$.+!*\x27,~#]*\\)|[-[:alnum:]_\\@;/?:&=%$+*~])+";
|
||||||
int ret = regcomp(&cregex, regex, REG_EXTENDED | REG_ICASE);
|
int code = regcomp(&url_regex, regex, REG_EXTENDED | REG_ICASE);
|
||||||
if (ret != 0) {
|
if (code != 0) {
|
||||||
LOG_W("Failed to compile regex.");
|
char error_buf[120];
|
||||||
return 0;
|
regerror(code, &url_regex, error_buf, sizeof(error_buf));
|
||||||
|
LOG_W("Failed to compile URL-matching regex: %s", error_buf);
|
||||||
|
return false;
|
||||||
} else {
|
} else {
|
||||||
is_initialized = true;
|
is_initialized = true;
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void regex_teardown(void)
|
void regex_teardown(void)
|
||||||
{
|
{
|
||||||
if (is_initialized) {
|
if (is_initialized) {
|
||||||
regfree(&cregex);
|
regfree(&url_regex);
|
||||||
is_initialized = false;
|
is_initialized = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -73,7 +80,7 @@ char *extract_urls(const char *to_match)
|
|||||||
regmatch_t m;
|
regmatch_t m;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int nomatch = regexec(&cregex, p, 1, &m, 0);
|
int nomatch = regexec(&url_regex, p, 1, &m, 0);
|
||||||
if (nomatch) {
|
if (nomatch) {
|
||||||
return urls;
|
return urls;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user