]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix printing of filenames containing blank in bls.c
authorKern Sibbald <kern@sibbald.com>
Thu, 1 Aug 2002 15:09:53 +0000 (15:09 +0000)
committerKern Sibbald <kern@sibbald.com>
Thu, 1 Aug 2002 15:09:53 +0000 (15:09 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@74 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/query.sql
bacula/src/stored/bls.c

index d820acfc199f64973d10627a61f907c2b1baa050..097abe80404decfcf86bf43142214b610194cc7c 100644 (file)
@@ -51,14 +51,16 @@ SELECT count(*) AS Jobs, sum(JobFiles) AS Files,
  AND JobMedia.MediaId=Media.MediaId
  GROUP by VolumeName;  
 #
-:List last 10 Full Backups for a Client:
+:List last 20 Full Backups for a Client:
 *Enter Client name:
-Select JobId,Client.Name as Client,StartTime,JobFiles,JobBytes
- FROM Client,Job
+Select Job.JobId,Client.Name as Client,StartTime,JobFiles,JobBytes,
+JobMedia.StartFile as VolFile, VolumeName
+ FROM Client,Job,JobMedia,Media
  WHERE Client.Name="%1"
  AND Client.ClientId=Job.ClientId
  AND Level='F' AND JobStatus='T'
- LIMIT 10;
+ AND JobMedia.JobId=Job.JobId AND JobMedia.MediaId=Media.MediaId
+ ORDER BY JobId DESC LIMIT 20;
 #
 :List Volumes used by selected JobId:
 *Enter JobId:
@@ -75,6 +77,7 @@ SELECT Job.JobId,VolumeName
 CREATE TABLE temp (JobId INTEGER UNSIGNED NOT NULL,
  JobTDate BIGINT UNSIGNED,
  ClientId INTEGER UNSIGNED,
+ Level CHAR,
  StartTime TEXT,
  VolumeName TEXT,
  StartFile INTEGER UNSIGNED, 
@@ -83,30 +86,44 @@ CREATE TABLE temp (JobId INTEGER UNSIGNED NOT NULL,
 CREATE TABLE temp2 (JobId INTEGER UNSIGNED NOT NULL,
  StartTime TEXT,
  VolumeName TEXT,
+ Level CHAR,
  StartFile INTEGER UNSIGNED, 
  VolSessionId INTEGER UNSIGNED,
  VolSessionTime INTEGER UNSIGNED);
-INSERT INTO temp SELECT Job.JobId,MAX(JobTDate),Job.ClientId,StartTime,VolumeName,
-   JobMedia.StartFile,VolSessionId,VolSessionTime
+# Select last Full save
+INSERT INTO temp SELECT Job.JobId,JobTDate,Job.ClientId,Job.Level,
+   StartTime,VolumeName,JobMedia.StartFile,VolSessionId,VolSessionTime
  FROM Client,Job,JobMedia,Media WHERE Client.Name="%1"
  AND Client.ClientId=Job.ClientId
  AND Level='F' AND JobStatus='T'
  AND JobMedia.JobId=Job.JobId 
  AND JobMedia.MediaId=Media.MediaId
- GROUP BY Job.JobTDate LIMIT 1;
-INSERT INTO temp2 SELECT JobId,StartTime,VolumeName,StartFile, 
+ ORDER BY Job.JobTDate DESC LIMIT 1;
+# Copy into temp 2
+INSERT INTO temp2 SELECT JobId,StartTime,VolumeName,Level,StartFile, 
    VolSessionId,VolSessionTime
  FROM temp;
+# Now add subsequent incrementals
 INSERT INTO temp2 SELECT Job.JobId,Job.StartTime,Media.VolumeName,
-   JobMedia.StartFile,Job.VolSessionId,Job.VolSessionTime
+   Job.Level,JobMedia.StartFile,Job.VolSessionId,Job.VolSessionTime
  FROM Job,temp,JobMedia,Media
  WHERE Job.JobTDate>temp.JobTDate 
  AND Job.ClientId=temp.ClientId
- AND Level='I' AND JobStatus='T'
+ AND Job.Level='I' AND JobStatus='T'
  AND JobMedia.JobId=Job.JobId 
  AND JobMedia.MediaId=Media.MediaId
  GROUP BY Job.JobId;
+# list results
 SELECT * from temp2;
 !DROP TABLE temp;
 !DROP TABLE temp2;
 #
+:List where a File is saved:
+*Enter Filename (no path):
+SELECT Job.JobId as JobId, Client.Name as Client,
+ CONCAT(Path.Path,Filename.Name) as Name,
+ StartTime,Level,JobFiles,JobBytes
+ FROM Client,Job,File,Filename,Path WHERE Client.ClientId=Job.ClientId
+ AND JobStatus='T' AND Job.JobId=File.JobId
+ AND Path.PathId=File.PathId AND Filename.FilenameId=File.FilenameId
+ AND Filename.Name='%1' LIMIT 20;
index 9d5f498ba319523ca72f496d03c5ffae20947e43..ee73913dd3d033ec78773c50e1121c8da69d6abd 100644 (file)
@@ -471,16 +471,25 @@ Warning, this Volume is a continuation of Volume %s\n",
 
       /* File Attributes stream */
       if (rec->Stream == STREAM_UNIX_ATTRIBUTES) {
-        char *ap;
-         sscanf(rec->data, "%ld %d %s", &record_file_index, &type, fname);
+        char *ap, *fp;
+         sscanf(rec->data, "%ld %d", &record_file_index, &type);
         if (record_file_index != rec->FileIndex) {
             Emsg2(M_ERROR_TERM, 0, "Record header file index %ld not equal record index %ld\n",
               rec->FileIndex, record_file_index);
         }
         ap = rec->data;
-        /* Skip to attributes */
-        while (*ap++ != 0)
+
+         while (*ap++ != ' ')         /* skip record file index */
+           ;
+         while (*ap++ != ' ')         /* skip type */
            ;
+        /* Save filename and position to attributes */
+        fp = fname;
+        while (*ap != 0) {
+           *fp++  = *ap++;
+        }
+        *fp = *ap++;                 /* terminate filename & point to attribs */
+
         decode_stat(ap, &statp);
         /* Skip to link name */  
         while (*ap++ != 0)