X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Ftools%2Ftestfind.c;h=0b676f02f2ea8e81fe7fb1ff97c5ba7d03f6b0e3;hb=35d5bf1cecf5e01cb6668199a6e2ac839f89093e;hp=fca5d95a27ff30d236e854c22125b2a8cbad5686;hpb=6e8326bfdba80ef6bfcf2f2624f2d8d733d00f9d;p=bacula%2Fbacula diff --git a/bacula/src/tools/testfind.c b/bacula/src/tools/testfind.c index fca5d95a27..0b676f02f2 100644 --- a/bacula/src/tools/testfind.c +++ b/bacula/src/tools/testfind.c @@ -1,24 +1,18 @@ -/* +/* * Test program for find files */ - /* - Copyright (C) 2000-2003 Kern Sibbald and John Walker + Copyright (C) 2000-2005 Kern Sibbald This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. + modify it under the terms of the GNU General Public License + version 2 as amended with additional clauses defined in the + file LICENSE in the main source directory. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + the file LICENSE for additional details. */ @@ -32,6 +26,9 @@ int win32_client = 1; int win32_client = 0; #endif +/* Dummy functions */ +int generate_daemon_event(JCR *jcr, const char *event) { return 1; } +int generate_job_event(JCR *jcr, const char *event) { return 1; } /* Global variables */ static int num_files = 0; @@ -43,7 +40,7 @@ static int attrs = 0; static JCR *jcr; -static int print_file(FF_PKT *ff, void *pkt); +static int print_file(FF_PKT *ff, void *pkt, bool); static void count_files(FF_PKT *ff); static void usage() @@ -83,29 +80,29 @@ main (int argc, char *const *argv) while ((ch = getopt(argc, argv, "ad:e:i:?")) != -1) { switch (ch) { case 'a': /* print extended attributes *debug* */ - attrs = 1; - break; + attrs = 1; + break; case 'd': /* set debug level */ - debug_level = atoi(optarg); - if (debug_level <= 0) { - debug_level = 1; - } - break; + debug_level = atoi(optarg); + if (debug_level <= 0) { + debug_level = 1; + } + break; case 'e': /* exclude patterns */ - exc = optarg; - break; + exc = optarg; + break; case 'i': /* include patterns */ - inc = optarg; - break; + inc = optarg; + break; case '?': - default: - usage(); + default: + usage(); - } + } } argc -= optind; argv += optind; @@ -115,27 +112,27 @@ main (int argc, char *const *argv) ff = init_find_files(); if (argc == 0 && !inc) { add_fname_to_include_list(ff, 0, "/"); /* default to / */ - } else { + } else { for (i=0; i < argc; i++) { if (strcmp(argv[i], "-") == 0) { - while (fgets(name, sizeof(name)-1, stdin)) { - strip_trailing_junk(name); - add_fname_to_include_list(ff, 0, name); - } - continue; - } - add_fname_to_include_list(ff, 0, argv[i]); + while (fgets(name, sizeof(name)-1, stdin)) { + strip_trailing_junk(name); + add_fname_to_include_list(ff, 0, name); + } + continue; + } + add_fname_to_include_list(ff, 0, argv[i]); } } if (inc) { fd = fopen(inc, "r"); if (!fd) { printf("Could not open include file: %s\n", inc); - exit(1); + exit(1); } while (fgets(name, sizeof(name)-1, fd)) { - strip_trailing_junk(name); - add_fname_to_include_list(ff, 0, name); + strip_trailing_junk(name); + add_fname_to_include_list(ff, 0, name); } fclose(fd); } @@ -144,34 +141,35 @@ main (int argc, char *const *argv) fd = fopen(exc, "r"); if (!fd) { printf("Could not open exclude file: %s\n", exc); - exit(1); + exit(1); } while (fgets(name, sizeof(name)-1, fd)) { - strip_trailing_junk(name); - add_fname_to_exclude_list(ff, name); + strip_trailing_junk(name); + add_fname_to_exclude_list(ff, name); } fclose(fd); } - find_files(jcr, ff, print_file, NULL); + match_files(jcr, ff, print_file, NULL); + term_include_exclude_files(ff); hard_links = term_find_files(ff); - - printf(_("\ -Total files : %d\n\ -Max file length: %d\n\ -Max path length: %d\n\ -Files truncated: %d\n\ -Paths truncated: %d\n\ -Hard links : %d\n"), + + printf(_("" +"Total files : %d\n" +"Max file length: %d\n" +"Max path length: %d\n" +"Files truncated: %d\n" +"Paths truncated: %d\n" +"Hard links : %d\n"), num_files, max_file_len, max_path_len, trunc_fname, trunc_path, hard_links); - + free_jcr(jcr); close_memory_pool(); - sm_dump(False); + sm_dump(false); exit(0); } -static int print_file(FF_PKT *ff, void *pkt) +static int print_file(FF_PKT *ff, void *pkt, bool top_level) { switch (ff->type) { @@ -189,7 +187,7 @@ static int print_file(FF_PKT *ff, void *pkt) printf("Empty: %s\n", ff->fname); } count_files(ff); - break; + break; case FT_REG: if (debug_level == 1) { printf("%s\n", ff->fname); @@ -206,12 +204,24 @@ static int print_file(FF_PKT *ff, void *pkt) } count_files(ff); break; - case FT_DIR: - if (debug_level == 1) { - printf("%s\n", ff->fname); - } else if (debug_level > 1) { - printf("Dir: %s\n", ff->fname); + case FT_DIRBEGIN: + return 1; + case FT_NORECURSE: + case FT_NOFSCHG: + case FT_INVALIDFS: + case FT_DIREND: + if (debug_level) { + char errmsg[100] = ""; + if (ff->type == FT_NORECURSE) { + bstrncpy(errmsg, "\t[will not descend: recursion turned off]", sizeof(errmsg)); + } else if (ff->type == FT_NOFSCHG) { + bstrncpy(errmsg, "\t[will not descend: file system change not allowed]", sizeof(errmsg)); + } else if (ff->type == FT_INVALIDFS) { + bstrncpy(errmsg, "\t[will not descend: disallowed file system]", sizeof(errmsg)); + } + printf("%s%s%s\n", (debug_level > 1 ? "Dir: " : ""), ff->fname, errmsg); } + ff->type = FT_DIREND; count_files(ff); break; case FT_SPEC: @@ -237,12 +247,6 @@ static int print_file(FF_PKT *ff, void *pkt) case FT_ISARCH: printf(_("Err: Attempt to backup archive. Not saved. %s\n"), ff->fname); break; - case FT_NORECURSE: - printf(_("Recursion turned off. Directory not entered. %s\n"), ff->fname); - break; - case FT_NOFSCHG: - printf(_("Skip: File system change prohibited. Directory not entered. %s\n"), ff->fname); - break; case FT_NOOPEN: printf(_("Err: Could not open directory %s: %s\n"), ff->fname, strerror(errno)); break; @@ -261,7 +265,7 @@ static int print_file(FF_PKT *ff, void *pkt) return 1; } -static void count_files(FF_PKT *ar) +static void count_files(FF_PKT *ar) { int fnl, pnl; char *l, *p; @@ -270,7 +274,7 @@ static void count_files(FF_PKT *ar) num_files++; - /* Find path without the filename. + /* Find path without the filename. * I.e. everything after the last / is a "filename". * OK, maybe it is a directory name, but we treat it like * a filename. If we don't find a / then the whole name @@ -278,17 +282,17 @@ static void count_files(FF_PKT *ar) */ for (p=l=ar->fname; *p; p++) { if (*p == '/') { - l = p; /* set pos of last slash */ + l = p; /* set pos of last slash */ } } if (*l == '/') { /* did we find a slash? */ - l++; /* yes, point to filename */ - } else { /* no, whole thing must be path name */ + l++; /* yes, point to filename */ + } else { /* no, whole thing must be path name */ l = p; } /* If filename doesn't exist (i.e. root directory), we - * simply create a blank name consisting of a single + * simply create a blank name consisting of a single * space. This makes handling zero length filenames * easier. */ @@ -302,14 +306,14 @@ static void count_files(FF_PKT *ar) trunc_fname++; } if (fnl > 0) { - strncpy(file, l, fnl); /* copy filename */ + strncpy(file, l, fnl); /* copy filename */ file[fnl] = 0; } else { file[0] = ' '; /* blank filename */ file[1] = 0; } - pnl = l - ar->fname; + pnl = l - ar->fname; if (pnl > max_path_len) { max_path_len = pnl; } @@ -331,3 +335,5 @@ static void count_files(FF_PKT *ar) } } + +bool python_set_prog(JCR*, char const*) { return false; }