]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/tools/testls.c
Tweak fix MySQL quoting again :-(
[bacula/bacula] / bacula / src / tools / testls.c
index c2765509ba4e3397a7e66ad8e8c82f970dc09dfb..b1d1f6c4bb4366e19fb0c33ad53822e3dd8dd324 100644 (file)
@@ -1,12 +1,12 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
    This program is Free Software; you can redistribute it and/or
-   modify it under the terms of version two of the GNU General Public
+   modify it under the terms of version three of the GNU Affero General Public
    License as published by the Free Software Foundation and included
    in the file LICENSE.
 
@@ -15,7 +15,7 @@
    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
+   You should have received a copy of the GNU Affero General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
@@ -27,6 +27,8 @@
 */
 /*
  * Test program for listing files during regression testing
+ *   Links have their permissions and time bashed since they cannot
+ *   be set by Bacula.
  *
  *  Kern Sibbald, MM
  *
@@ -45,10 +47,11 @@ void generate_plugin_event(JCR *jcr, bEventType eventType, void *value) { }
 int attrs = 0;
 
 static JCR *jcr;
-
+static int num_files = 0;
 
 static int print_file(JCR *jcr, FF_PKT *ff, bool);
 static void print_ls_output(char *fname, char *link, int type, struct stat *statp);
+static int count_files(JCR *jcr, FF_PKT *ff, bool top_level);
 
 static void usage()
 {
@@ -60,6 +63,7 @@ static void usage()
 "       -dt         print timestamp in debug output\n"
 "       -e          specify file of exclude patterns\n"
 "       -i          specify file of include patterns\n"
+"       -q          quiet, don't print filenames (debug)\n"
 "       -           read pattern(s) from stdin\n"
 "       -?          print this message.\n"
 "\n"
@@ -75,11 +79,11 @@ static void usage()
 }
 
 
-int
-main (int argc, char *const *argv)
+int main(int argc, char *const *argv)
 {
    FF_PKT *ff;
    char name[1000];
+   bool quiet = false;
    int i, ch, hard_links;
    char *inc = NULL;
    char *exc = NULL;
@@ -88,8 +92,9 @@ main (int argc, char *const *argv)
    setlocale(LC_ALL, "");
    bindtextdomain("bacula", LOCALEDIR);
    textdomain("bacula");
+   lmgr_init_thread();
 
-   while ((ch = getopt(argc, argv, "ad:e:i:?")) != -1) {
+   while ((ch = getopt(argc, argv, "ad:e:i:q?")) != -1) {
       switch (ch) {
       case 'a':                       /* print extended attributes *debug* */
          attrs = 1;
@@ -114,6 +119,10 @@ main (int argc, char *const *argv)
          inc = optarg;
          break;
 
+      case 'q':
+         quiet = true;
+         break;
+
       case '?':
       default:
          usage();
@@ -165,17 +174,29 @@ main (int argc, char *const *argv)
       }
       fclose(fd);
    }
-   match_files(jcr, ff, print_file);
+   if (quiet) {
+      match_files(jcr, ff, count_files);
+   } else {
+      match_files(jcr, ff, print_file);
+   }
+   printf(_("Files seen = %d\n"), num_files);
    term_include_exclude_files(ff);
    hard_links = term_find_files(ff);
 
    free_jcr(jcr);
    term_last_jobs_list();             /* free jcr chain */
    close_memory_pool();
+   lmgr_cleanup_main();
    sm_dump(false);
    exit(0);
 }
 
+static int count_files(JCR *jcr, FF_PKT *ff, bool top_level)
+{
+   num_files++;
+   return 1;
+}
+
 static int print_file(JCR *jcr, FF_PKT *ff, bool top_level) 
 {
 
@@ -218,12 +239,13 @@ static int print_file(JCR *jcr, FF_PKT *ff, bool top_level)
       printf(_("Err: Unknown file ff->type %d: %s\n"), ff->type, ff->fname);
       break;
    }
+   num_files++;
    return 1;
 }
 
 static void print_ls_output(char *fname, char *link, int type, struct stat *statp)
 {
-   char buf[1000];
+   char buf[2000];
    char ec1[30];
    char *p, *f;
    int n;
@@ -237,7 +259,7 @@ static void print_ls_output(char *fname, char *link, int type, struct stat *stat
    p += n;
    n = sprintf(p, "%-4d %-4d", (int)statp->st_uid, (int)statp->st_gid);
    p += n;
-   n = sprintf(p, "%7.7s ", edit_uint64(statp->st_size, ec1));
+   n = sprintf(p, "%10.10s ", edit_uint64(statp->st_size, ec1));
    p += n;
    if (S_ISCHR(statp->st_mode) || S_ISBLK(statp->st_mode)) {
       n = sprintf(p, "%4x ", (int)statp->st_rdev);