/*
* Bacula BREGEXP Structure definition for FileDaemon
- * Eric Bollengier Mars 2007
+ * Eric Bollengier March 2007
* Version $Id$
*/
/*
#ifndef __BREG_H_
#define __BREG_H_ 1
+//#undef HAVE_REGEX_H
#ifndef HAVE_REGEX_H
#include "bregex.h"
* BREGEXP *breg = new_bregexp("!/prod!/test!");
* char *filename = breg->replace("/prod/data.dat");
* or
- * filename = breg->result;
+ * char *filename = breg->result;
* free_bregexp(breg);
*/
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 *expr; /* search epression */
POOLMEM *subst; /* substitution */
regex_t preg; /* regex_t result of regcomp() */
-
- int nmatch;
+ struct re_registers regs; /* contains match */
+ char *eor; /* end of regexp in expr */
+
+ int *_regs_match;
char *return_fname(const char *fname, int len); /* return fname as result */
char *edit_subst(const char *fname, struct re_registers *regs);
/* 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_ */