]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/findlib/match.c
Add my_postgresql_max_length which caculates the maximum width for all values in...
[bacula/bacula] / bacula / src / findlib / match.c
index 2b01f3d10041afe83ed6c9158bedb8eafd25052e..823e3b5a1065902927877260fd50a0d56fd1b2b3 100644 (file)
@@ -6,7 +6,7 @@
  *
  */
 /*
-   Copyright (C) 2001, 2002 Kern Sibbald and John Walker
+   Copyright (C) 2001-2003 Kern Sibbald and John Walker
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -93,8 +93,7 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
 
    len = strlen(fname);
 
-   inc =(struct s_included_file *) bmalloc(sizeof(struct s_included_file) + len + 1);
-   inc->next = ff->included_files_list;
+   inc =(struct s_included_file *)bmalloc(sizeof(struct s_included_file) + len + 1);
    inc->options = 0;
    inc->VerifyOpts[0] = 'V'; 
    inc->VerifyOpts[1] = ':';
@@ -104,35 +103,54 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
    if (prefixed) {
       for (p=fname; *p && *p != ' '; p++) {
         switch (*p) {
-            case '0':                  /* no option */
-              break;
-            case 'M':                  /* MD5 */
-              inc->options |= OPT_compute_MD5;
-              break;
-            case 'Z':                  /* gzip compression */
-              inc->options |= OPT_GZIP_compression;
-               inc->level = *++p - '0';
-               Dmsg1(200, "Compression level=%d\n", inc->level);
-              break;
-            case 'h':                  /* no recursion */
-              inc->options |= OPT_no_recursion;
-              break;
-            case 'f':
-              inc->options |= OPT_multifs;
-              break;
-            case 'V':                  /* verify options */
-              /* Copy Verify Options */
-               for (j=0; *p && *p != ':'; p++) {
-                 inc->VerifyOpts[j] = *p;
-                 if (j < (int)sizeof(inc->VerifyOpts) - 1) {
-                    j++;
-                 }
+         case 'a':                 /* alway replace */
+         case '0':                 /* no option */
+           break;
+         case 'f':
+           inc->options |= FO_MULTIFS;
+           break;
+         case 'h':                 /* no recursion */
+           inc->options |= FO_NO_RECURSION;
+           break;
+         case 'M':                 /* MD5 */
+           inc->options |= FO_MD5;
+           break;
+         case 'n':
+           inc->options |= FO_NOREPLACE;
+           break;
+         case 'p':                 /* use portable data format */
+           inc->options |= FO_PORTABLE;
+           break;
+         case 'r':                 /* read fifo */
+           inc->options |= FO_READFIFO;
+           break;
+         case 'S':
+           inc->options |= FO_SHA1;
+           break;
+         case 's':
+           inc->options |= FO_SPARSE;
+           break;
+         case 'V':                  /* verify options */
+           /* Copy Verify Options */
+            for (j=0; *p && *p != ':'; p++) {
+              inc->VerifyOpts[j] = *p;
+              if (j < (int)sizeof(inc->VerifyOpts) - 1) {
+                 j++;
               }
-              inc->VerifyOpts[j] = 0;
-              break;
-           default:
-               Emsg1(M_ERROR, 0, "Unknown include/exclude option: %c\n", *p);
-              break;
+           }
+           inc->VerifyOpts[j] = 0;
+           break;
+         case 'w':
+           inc->options |= FO_IF_NEWER;
+           break;
+         case 'Z':                 /* gzip compression */
+           inc->options |= FO_GZIP;
+            inc->level = *++p - '0';
+            Dmsg1(200, "Compression level=%d\n", inc->level);
+           break;
+        default:
+            Emsg1(M_ERROR, 0, "Unknown include/exclude option: %c\n", *p);
+           break;
         }
       }
       /* Skip past space(s) */
@@ -143,6 +161,7 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
    }
 
    strcpy(inc->fname, p);                
+   p = inc->fname;
    len = strlen(p);
    /* Zap trailing slashes.  */
    p += len - 1;
@@ -159,7 +178,26 @@ void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname)
         break;
       }
    }
-   ff->included_files_list = inc;
+#ifdef HAVE_CYGWIN
+   /* Convert any \'s into /'s */
+   for (p=inc->fname; *p; p++) {
+      if (*p == '\\') {
+         *p = '/';
+      }
+   }
+#endif
+   inc->next = NULL;
+   /* Chain this one on the end of the list */
+   if (!ff->included_files_list) {
+      /* First one, so set head */
+      ff->included_files_list = inc;
+   } else {
+      struct s_included_file *next;
+      /* Walk to end of list */
+      for (next=ff->included_files_list; next->next; next=next->next)
+        { }
+      next->next = inc;
+   }  
    Dmsg1(50, "add_fname_to_include fname=%s\n", inc->fname);
 }
 
@@ -172,6 +210,14 @@ void add_fname_to_exclude_list(FF_PKT *ff, char *fname)
    int len;
    struct s_excluded_file *exc, **list;
 
+#ifdef HAVE_CYGWIN
+   /* Convert any \'s into /'s */
+   for (char *p=fname; *p; p++) {
+      if (*p == '\\') {
+         *p = '/';
+      }
+   }
+#endif
    Dmsg1(20, "Add name to exclude: %s\n", fname);
 
    if (strchr(fname, '/')) {
@@ -202,28 +248,12 @@ struct s_included_file *get_next_included_file(FF_PKT *ff, struct s_included_fil
    } else {
       inc = ainc->next;
    }
+   /*
+    * copy inc_options for this file into the ff packet
+    */
    if (inc) {
-      if (inc->options & OPT_compute_MD5) {
-        ff->compute_MD5 = 1;
-      } else {
-        ff->compute_MD5 = 0;
-      }
-      if (inc->options & OPT_GZIP_compression) {
-        ff->GZIP_compression = 1;
-        ff->GZIP_level = inc->level;
-      } else {
-        ff->GZIP_compression = 0;
-      }
-      if (inc->options & OPT_no_recursion) {
-        ff->no_recursion = 1;
-      } else {
-        ff->no_recursion = 0;
-      }
-      if (inc->options & OPT_multifs) {
-        ff->one_file_system = 0;
-      } else {
-        ff->one_file_system = 1;
-      }
+      ff->flags = inc->options;
+      ff->GZIP_level = inc->level;
    }
    return inc;
 }