lintian doesn't like orphan packages with uploaders...
[debian/amanda] / common-src / match.c
index 0981a43f74484a3e7c7a8e1357a80f26a8452454..328097c4334a9e1604fa02aa3b183f45a1c114f5 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Amanda, The Advanced Maryland Automatic Network Disk Archiver
  * Copyright (c) 1991-1998 University of Maryland at College Park
+ * Copyright (c) 2007-2012 Zmanda, Inc.  All Rights Reserved.
  * All Rights Reserved.
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -153,7 +154,14 @@ static struct mword_regexes mword_slash_regexes = {
  * be called from within threads, so play it safe.
  */
 
-static GStaticMutex re_cache_mutex = G_STATIC_MUTEX_INIT;
+#if (GLIB_MAJOR_VERSION > 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 31))
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+  static GStaticMutex re_cache_mutex = G_STATIC_MUTEX_INIT;
+# pragma GCC diagnostic pop
+#else
+  static GStaticMutex re_cache_mutex = G_STATIC_MUTEX_INIT;
+#endif
 static GHashTable *regex_cache = NULL, *regex_cache_newline = NULL;
 
 /*
@@ -862,6 +870,9 @@ int match_host(const char *glob, const char *host)
     char *lglob, *lhost;
     int ret;
 
+    if (*glob == '=') {
+       return strcmp(glob+1, host) == 0;
+    }
     lglob = g_ascii_strdown(glob, -1);
     lhost = g_ascii_strdown(host, -1);
 
@@ -930,6 +941,10 @@ int match_disk(const char *glob, const char *disk)
 
     gboolean windows_share = !(strncmp(disk, "\\\\", 2) || strchr(disk, '/'));
 
+    if (*glob == '=') {
+       return strcmp(glob+1, disk) == 0;
+    }
+
     if (windows_share) {
         glob2 = convert_winglob_to_unix(glob);
         disk2 = convert_unc_to_unix(disk);
@@ -979,6 +994,10 @@ match_datestamp(
        goto illegal;
     }
 
+    if (*dateexp == '=') {
+       return strcmp(dateexp+1, datestamp) == 0;
+    }
+
     /* strip and ignore an initial "^" */
     if(dateexp[0] == '^') {
        strncpy(mydateexp, dateexp+1, sizeof(mydateexp)-1);
@@ -1061,6 +1080,10 @@ match_level(
        /*NOTREACHED*/
     }
 
+    if (*levelexp == '=') {
+       return strcmp(levelexp+1, level) == 0;
+    }
+
     if(levelexp[0] == '^') {
        strncpy(mylevelexp, levelexp+1, strlen(levelexp)-1);
        mylevelexp[strlen(levelexp)-1] = '\0';