X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=server-src%2Famadmin.c;fp=server-src%2Famadmin.c;h=f51b17e7f8cc5b9eb88559e641c542039c2d6a96;hb=691567b16c13087b31ee4c2b6d038e57872fae82;hp=b7dea49e2f1dced774070377e81cc9c87a894059;hpb=cc7d7b45afc706099acf7ff2490ec5667d370651;p=debian%2Famanda diff --git a/server-src/amadmin.c b/server-src/amadmin.c index b7dea49..f51b17e 100644 --- a/server-src/amadmin.c +++ b/server-src/amadmin.c @@ -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 @@ -93,6 +94,7 @@ static gboolean print_default = 1; static gboolean print_source = 0; static int opt_days = -1; static char *opt_sort = NULL; +static gboolean exact_match = FALSE; static gboolean opt_long = 0; static gboolean opt_outdated = 0; @@ -156,6 +158,7 @@ static struct option long_options[] = { {"print-source" , 0, NULL, 3}, {"days" , 1, NULL, 4}, {"sort" , 1, NULL, 5}, + {"exact-match" , 0, NULL, 6}, {NULL, 0, NULL, 0} }; @@ -212,6 +215,8 @@ main( break; case 5: opt_sort = g_strdup(optarg); break; + case 6: exact_match = TRUE; + break; case 'l': opt_long = TRUE; break; case 'd': opt_outdated = TRUE; @@ -291,7 +296,7 @@ usage(void) { int i; - g_fprintf(stderr, _("\nUsage: %s [--version] [--no-default] [--print-source] [-o configoption]*\n {} ...\n"), + g_fprintf(stderr, _("\nUsage: %s [--version] [--exact-match] [--no-default] [--print-source] [-o configoption]*\n {} ...\n"), get_pname()); g_fprintf(stderr, _(" Valid s are:\n")); for (i = 0; i < NCMDS; i++) @@ -369,7 +374,7 @@ diskloop( usage(); } - errstr = match_disklist(&diskq, argc-3, argv+3); + errstr = match_disklist(&diskq, exact_match, argc-3, argv+3); if (errstr) { g_printf("%s", errstr); amfree(errstr); @@ -1197,7 +1202,8 @@ find( } } start_argc=4; - errstr = match_disklist(&diskq, argc-(start_argc-1), argv+(start_argc-1)); + errstr = match_disklist(&diskq, exact_match, argc-(start_argc-1), + argv+(start_argc-1)); /* check all log file exists */ output_find_log = find_log(); @@ -1214,8 +1220,8 @@ find( disk_t *dp; amfree(errstr); - errstr = match_disklist(&diskq, argc-(start_argc-1), - argv+(start_argc-1)); + errstr = match_disklist(&diskq, exact_match, argc-(start_argc-1), + argv+(start_argc-1)); if (errstr) { g_printf("%s", errstr); amfree(errstr); @@ -1250,7 +1256,8 @@ static GSList * get_file_list( int argc, char **argv, - int allow_empty) + int allow_empty, + gboolean exact_match) { GSList * file_list = NULL; GSList * dumplist; @@ -1258,6 +1265,7 @@ get_file_list( flags = CMDLINE_PARSE_DATESTAMP; if (allow_empty) flags |= CMDLINE_EMPTY_TO_WILDCARD; + if (exact_match) flags |= CMDLINE_EXACT_MATCH; dumplist = cmdline_parse_dumpspecs(argc, argv, flags); file_list = cmdline_match_holding(dumplist); @@ -1508,7 +1516,7 @@ holding( _("size (kB)"), _("lv"), _("outd"), _("dump specification")); } - file_list = get_file_list(argc, argv, 1); + file_list = get_file_list(argc, argv, 1, exact_match); for (li = file_list; li != NULL; li = li->next) { char *dumpstr; int is_outdated; @@ -1543,7 +1551,7 @@ holding( case HOLDING_DELETE: argc -= 4; argv += 4; - file_list = get_file_list(argc, argv, 0); + file_list = get_file_list(argc, argv, 0, exact_match); for (li = file_list; li != NULL; li = li->next) { g_fprintf(stderr, _("Deleting '%s'\n"), (char *)li->data); /* remove it from the catalog */