]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/patches/testing/breg.h
ebl update
[bacula/bacula] / bacula / patches / testing / breg.h
index 746e04db42268fb725873952c5f04153eba8ed63..101f50eee6617c276576f9205da621e02a23b168 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Bacula BREGEXP Structure definition for FileDaemon
- * Eric Bollengier Mars 2007
+ * Eric Bollengier March 2007
  * Version $Id$
  */
 /*
@@ -35,6 +35,7 @@
 #ifndef __BREG_H_
 #define __BREG_H_ 1
 
+//#undef HAVE_REGEX_H
 
 #ifndef HAVE_REGEX_H
 #include "bregex.h"
@@ -49,7 +50,7 @@
  * 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);
@@ -84,7 +89,23 @@ int run_bregexp(alist *bregexps, const char *fname);
 /* 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 a bregexp string from user arguments */
+char *bregexp_build_where(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_ */