class BREGEXP {
public:
POOLMEM *result; /* match result */
- char *replace(const char *fname);
+ bool success; /* match is ok */
+
+ char *replace(const char *fname); /* return this.result */
void debug();
/* private */
POOLMEM *subst; /* substitution */
regex_t preg; /* regex_t result of regcomp() */
struct re_registers regs; /* contains match */
+ char *eor; /* end of regexp in expr */
int *_regs_match;
/* free BREGEXP (and all POOLMEM) */
void free_bregexp(BREGEXP *script);
+/* fill an alist with BREGEXP from where */
+alist *get_bregexps(const char *where);
+
+/* apply every regexps from the alist */
+bool apply_bregexps(const char *fname, alist *bregexps, char **result);
+
/* foreach_alist free RUNSCRIPT */
void free_bregexps(alist *bregexps); /* you have to free alist */
+/* get regexp size */
+int bregexp_get_build_where_size(char *strip_prefix,
+ char *add_prefix,
+ char *add_suffix);
+
+/* get a bregexp string from user arguments
+ * you must allocate it with bregexp_get_build_where_size();
+ */
+char *bregexp_build_where(char *dest, int str_size,
+ char *strip_prefix,
+ char *add_prefix,
+ char *add_suffix);
+
+/* escape a string to regexp format (sep and \)
+ * dest must be long enough (dest = 2*src + 1)
+ */
+char *bregexp_escape_string(char *dest, char *src, char sep);
+
#endif /* __BREG_H_ */