/* Helper for result handler */
typedef enum {
- BVFS_FILE_RECORD = 5,
- BVFS_DIR_RECORD = 4,
- BVFS_FILE_VERSION = 6
+ BVFS_FILE_RECORD = 'F',
+ BVFS_DIR_RECORD = 'D',
+ BVFS_FILE_VERSION = 'V'
} bvfs_handler_type;
typedef enum {
- BVFS_Id = 0,
- BVFS_Name = 1,
- BVFS_JobId = 2,
- BVFS_LStat = 3,
+ BVFS_Type = 0, /* Could be D, F, V */
+ BVFS_PathId = 1,
+ BVFS_FilenameId = 2,
- /* Only if File record */
- BVFS_FileId = 4,
+ BVFS_Name = 3,
+ BVFS_JobId = 4,
+
+ BVFS_LStat = 5, /* Can be empty for missing directories */
+ BVFS_FileId = 6, /* Can be empty for missing directories */
/* Only if File Version record */
- BVFS_Md5 = 1,
+ BVFS_Md5 = 3,
BVFS_VolName = 4,
BVFS_VolInchanger = 5
} bvfs_row_index;
/* for internal use */
int _handle_path(void *, int, char **);
-private:
+private:
+ Bvfs(const Bvfs &); /* prohibit pass by value */
+ Bvfs & operator = (const Bvfs &); /* prohibit class assignment */
+
JCR *jcr;
B_DB *db;
POOLMEM *jobids;
void *user_data;
};
+#define bvfs_is_dir(row) ((row)[BVFS_Type][0] == BVFS_DIR_RECORD)
+#define bvfs_is_file(row) ((row)[BVFS_Type][0] == BVFS_FILE_RECORD)
+
void bvfs_update_path_hierarchy_cache(JCR *jcr, B_DB *mdb, char *jobids);
void bvfs_update_cache(JCR *jcr, B_DB *mdb);
char *bvfs_parent_dir(char *path);