make regex wrapper return errors instead of just aborting
This commit is contained in:
parent
df89f689f7
commit
e39606c411
12
utils/url.c
12
utils/url.c
|
@ -44,10 +44,12 @@ struct url_components_internal {
|
|||
regex_t url_re, url_up_re;
|
||||
|
||||
/* exported interface documented in utils/url.h */
|
||||
void url_init(void)
|
||||
nserror url_init(void)
|
||||
{
|
||||
nserror ret;
|
||||
|
||||
/* regex from RFC 2396 */
|
||||
regcomp_wrapper(&url_re, "^[[:space:]]*"
|
||||
ret = regcomp_wrapper(&url_re, "^[[:space:]]*"
|
||||
#define URL_RE_SCHEME 2
|
||||
"(([a-zA-Z][-a-zA-Z0-9+.]*):)?"
|
||||
#define URL_RE_AUTHORITY 4
|
||||
|
@ -59,7 +61,11 @@ void url_init(void)
|
|||
#define URL_RE_FRAGMENT 9
|
||||
"(#([^[:space:]]*))?"
|
||||
"[[:space:]]*$", REG_EXTENDED);
|
||||
regcomp_wrapper(&url_up_re,
|
||||
if (ret != NSERROR_OK) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return regcomp_wrapper(&url_up_re,
|
||||
"/([^/]?|[.][^./]|[^./][.]|[^./][^./]|[^/][^/][^/]+)"
|
||||
"/[.][.](/|$)",
|
||||
REG_EXTENDED);
|
||||
|
|
|
@ -49,7 +49,7 @@ struct url_components {
|
|||
*
|
||||
* Compiles regular expressions required by the url_ functions.
|
||||
*/
|
||||
void url_init(void);
|
||||
nserror url_init(void);
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include <time.h>
|
||||
|
||||
#include "utils/config.h"
|
||||
#include "utils/log.h"
|
||||
#include "utils/messages.h"
|
||||
#include "utils/utf8.h"
|
||||
#include "utils/time.h"
|
||||
|
@ -207,18 +208,20 @@ nserror snstrjoin(char **str, size_t *size, char sep, size_t nelm, ...)
|
|||
|
||||
|
||||
/* exported interface documented in utils/utils.h */
|
||||
void regcomp_wrapper(regex_t *preg, const char *regex, int cflags)
|
||||
nserror regcomp_wrapper(regex_t *preg, const char *regex, int cflags)
|
||||
{
|
||||
int r;
|
||||
r = regcomp(preg, regex, cflags);
|
||||
if (r) {
|
||||
char errbuf[200];
|
||||
regerror(r, preg, errbuf, sizeof errbuf);
|
||||
fprintf(stderr, "Failed to compile regexp '%s'\n", regex);
|
||||
die(errbuf);
|
||||
LOG(("Failed to compile regexp '%s': %s\n", regex, errbuf));
|
||||
return NSERROR_INIT_FAILED;
|
||||
}
|
||||
return NSERROR_OK;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The size of buffers within human_friendly_bytesize.
|
||||
*
|
||||
|
|
|
@ -163,7 +163,7 @@ bool is_dir(const char *path);
|
|||
*
|
||||
* Parameters as for regcomp(), see man regex.
|
||||
*/
|
||||
void regcomp_wrapper(regex_t *preg, const char *regex, int cflags);
|
||||
nserror regcomp_wrapper(regex_t *preg, const char *regex, int cflags);
|
||||
|
||||
/**
|
||||
* Create a human redable representation of a size in bytes.
|
||||
|
|
Loading…
Reference in New Issue