]> git.sur5r.net Git - bacula/bacula/commitdiff
fix bvfs that displays NULL from time to time
authorEric Bollengier <eric@eb.homelinux.org>
Fri, 19 Feb 2010 15:47:52 +0000 (16:47 +0100)
committerEric Bollengier <eric@eb.homelinux.org>
Mon, 2 Aug 2010 14:49:33 +0000 (16:49 +0200)
bacula/src/dird/ua_dotcmds.c

index d0a203dc459ccbb9a5a3a4eed1b5011475c8f201..4bc9c5c73b57f2878ae2027d23d8e103ae744568 100644 (file)
@@ -187,12 +187,19 @@ static int bvfs_result_handler(void *ctx, int fields, char **row)
    UAContext *ua = (UAContext *)ctx;
    struct stat statp;
    int32_t LinkFI;
-   const char *fileid;
-   char *lstat;
+   char *fileid=row[BVFS_FileId];
+   char *lstat=row[BVFS_LStat];
+   char *jobid=row[BVFS_JobId];
+   
    char empty[] = "A A A A A A A A A A A A A A";
+   char zero[] = "0";
 
-   lstat = (row[BVFS_LStat] && row[BVFS_LStat][0])?row[BVFS_LStat]:empty;
-   fileid = (row[BVFS_FileId] && row[BVFS_FileId][0])?row[BVFS_FileId]:"0";
+   /* We need to deal with non existant path */
+   if (!fileid || !is_a_number(fileid)) {
+      lstat = empty;
+      jobid = zero;
+      fileid = zero;
+   }
 
    memset(&statp, 0, sizeof(struct stat));
    decode_stat(lstat, &statp, &LinkFI);
@@ -201,12 +208,12 @@ static int bvfs_result_handler(void *ctx, int fields, char **row)
    if (bvfs_is_dir(row)) {
       char *path = bvfs_basename_dir(row[BVFS_Name]);
       ua->send_msg("%s\t0\t%s\t%s\t%s\t%s\n", row[BVFS_PathId], fileid,
-                   row[BVFS_JobId], row[BVFS_LStat], path);
+                   jobid, lstat, path);
 
    } else if (bvfs_is_file(row)) {
       ua->send_msg("%s\t%s\t%s\t%s\t%s\t%s\n", row[BVFS_PathId],
-                   row[BVFS_FilenameId], fileid, row[BVFS_JobId],
-                   row[BVFS_LStat], row[BVFS_Name]);
+                   row[BVFS_FilenameId], fileid, jobid,
+                   lstat, row[BVFS_Name]);
    }
 
    return 0;