-/*
- *
- * Program to test cache path
- *
- * Eric Bollengier, March 2007
- *
- *
- * Version $Id$
- */
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2001-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2009-2009 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.
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
+/*
+ *
+ * Program to test cache path
+ *
+ * Eric Bollengier, August 2009
+ *
+ *
+ */
#include "bacula.h"
#include "cats/cats.h"
/* Local variables */
static B_DB *db;
-
+static const char *file = "COPYRIGHT";
+static DBId_t fnid=0;
static const char *db_name = "regress";
static const char *db_user = "regress";
static const char *db_password = "";
" -w <working> specify working directory\n"
" -j <jobids> specify jobids\n"
" -p <path> specify path\n"
-//" -f <file> specify file\n"
+" -f <file> specify file\n"
+" -l <limit> maximum tuple to fetch\n"
" -T truncate cache table before starting\n"
" -v verbose\n"
" -? print this message\n\n"), 2001, VERSION, BDATE);
{
Bvfs *vfs = (Bvfs *)ctx;
ATTR *attr = vfs->get_attr();
- char *empty = "";
+ char empty[] = "A A A A A A A A A A A A A A";
+
+ memset(&attr->statp, 0, sizeof(struct stat));
+ decode_stat((row[BVFS_LStat] && row[BVFS_LStat][0])?row[BVFS_LStat]:empty,
+ &attr->statp, &attr->LinkFI);
- if (fields == BVFS_DIR_RECORD || fields == BVFS_FILE_RECORD) {
- decode_stat((row[BVFS_LStat])?row[BVFS_LStat]:empty,
- &attr->statp, &attr->LinkFI);
- if (fields == BVFS_DIR_RECORD) {
+ if (bvfs_is_dir(row) || bvfs_is_file(row))
+ {
+ /* display clean stuffs */
+
+ if (bvfs_is_dir(row)) {
pm_strcpy(attr->ofname, bvfs_basename_dir(row[BVFS_Name]));
} else {
+ /* if we see the requested file, note his filenameid */
+ if (bstrcmp(row[BVFS_Name], file)) {
+ fnid = str_to_int64(row[BVFS_FilenameId]);
+ }
pm_strcpy(attr->ofname, row[BVFS_Name]);
}
print_ls_output(vfs->get_jcr(), attr);
} else {
- Pmsg6(0, "%s\t%s\t%s\t%s\t%s\t%s",
- row[0], row[1], row[2], row[3], row[4], row[5]);
+ Pmsg5(0, "JobId=%s FileId=%s\tMd5=%s\tVolName=%s\tVolInChanger=%s\n",
+ row[BVFS_JobId], row[BVFS_FileId], row[BVFS_Md5], row[BVFS_VolName],
+ row[BVFS_VolInchanger]);
+
+ pm_strcpy(attr->ofname, file);
+ print_ls_output(vfs->get_jcr(), attr);
}
return 0;
}
int main (int argc, char *argv[])
{
int ch;
- char *jobids="1", *path=NULL, *file=NULL;
+ char *jobids = (char *)"1";
+ char *path=NULL, *client=NULL;
+ uint64_t limit=0;
bool clean=false;
setlocale(LC_ALL, "");
bindtextdomain("bacula", LOCALEDIR);
OSDependentInit();
- while ((ch = getopt(argc, argv, "h:c:d:n:P:Su:vf:w:?j:p:f:T")) != -1) {
+ while ((ch = getopt(argc, argv, "h:c:l:d:n:P:Su:vf:w:?j:p:f:T")) != -1) {
switch (ch) {
case 'd': /* debug level */
if (*optarg == 't') {
}
}
break;
+ case 'l':
+ limit = str_to_int64(optarg);
+ break;
+
+ case 'c':
+ client = optarg;
+ break;
case 'h':
db_host = optarg;
break;
case 'f':
- path = optarg;
+ file = optarg;
break;
case 'j':
bjcr->db = db;
if (clean) {
- Pmsg0(0, "Clean old table");
- db_sql_query(db, "DELETE FROM brestore_pathhierarchy", NULL, NULL);
- db_sql_query(db, "DELETE FROM brestore_knownjobid", NULL, NULL);
- db_sql_query(db, "DELETE FROM brestore_pathvisibility", NULL, NULL);
+ Pmsg0(0, "Clean old table\n");
+ db_sql_query(db, "DELETE FROM PathHierarchy", NULL, NULL);
+ db_sql_query(db, "UPDATE Job SET HasCache=0", NULL, NULL);
+ db_sql_query(db, "DELETE FROM PathVisibility", NULL, NULL);
bvfs_update_cache(bjcr, db);
}
fs.set_jobids(jobids);
fs.update_cache();
+ if (limit)
+ fs.set_limit(limit);
if (path) {
fs.ch_dir(path);
fs.ls_special_dirs();
fs.ls_dirs();
- fs.ls_files();
+ while (fs.ls_files()) {
+ fs.next_offset();
+ }
+
+ if (fnid && client) {
+ Pmsg0(0, "---------------------------------------------\n");
+ Pmsg1(0, "Getting file version for %s\n", file);
+ fs.get_all_file_versions(fs.get_pwd(), fnid, client);
+ }
+
exit (0);
}