]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/qt-console/restore/brestore.cpp
Add stat packet size to encode/decode_ routines to detect compile differences
[bacula/bacula] / bacula / src / qt-console / restore / brestore.cpp
index 84e5bea4e443d5b6a65656401df723fd56e554e7..f1b6b2905d8231a8658a3fdf9fb7bebd7246334c 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2011 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.
@@ -38,7 +38,7 @@
 #include "restore.h"
 #include "util/fmtwidgetitem.h"
 
-bRestore::bRestore()
+bRestore::bRestore() : Pages()
 {
    m_name = tr("bRestore");
    m_client = "";
@@ -47,6 +47,7 @@ bRestore::bRestore()
    QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
    thisitem->setIcon(0, QIcon(QString::fromUtf8(":images/browse.png")));
    m_populated = false;
+   m_closeable = false;
    m_current = NULL;
    RestoreList->setAcceptDrops(true);
 }
@@ -138,7 +139,7 @@ void bRestore::setJob()
    Pmsg0(000, "update done\n");
 }
 
-extern int decode_stat(char *buf, struct stat *statp, int32_t *LinkFI);
+extern int decode_stat(char *buf, struct stat *statp, int stat_size, int32_t *LinkFI);
 
 // refresh button with a filter or limit/offset change
 void bRestore::refreshView()
@@ -196,7 +197,7 @@ void bRestore::displayFiles(int64_t pathid, QString path)
    QString limit=QString().setNum(Offset2Spin->value() - Offset1Spin->value());
    QString q = ".bvfs_lsdir jobid=" + m_jobids + arg 
       + " limit=" + limit + " offset=" + offset ;
-   qDebug() << q;
+   if (mainWin->m_miscDebug) qDebug() << q;
    if (m_console->dir_cmd(q, results)) {
       nb = results.size();
       FileList->setRowCount(nb);
@@ -204,11 +205,14 @@ void bRestore::displayFiles(int64_t pathid, QString path)
          int col=0;
          //PathId, FilenameId, fileid, jobid, lstat, path
          fieldlist = resultline.split("\t");
+         /*
+          * Note, the next line zaps variable "item", probably
+          *   because the input data in fieldlist is bad.
+          */
+         decode_stat(fieldlist.at(4).toLocal8Bit().data(), &statp, sizeof(statp),  &LinkFI);
          TableItemFormatter item(*FileList, row++);
          item.setFileType(col++, QString("folder")); // folder or file
          item.setTextFld(col++, fieldlist.at(5)); // path
-         decode_stat(fieldlist.at(4).toLocal8Bit().data(), 
-                     &statp, &LinkFI);
          item.setBytesFld(col++, QString().setNum(statp.st_size));
          item.setDateFld(col++, statp.st_mtime); // date
          fieldlist.replace(3, m_jobids);      // use current jobids selection
@@ -229,7 +233,7 @@ void bRestore::displayFiles(int64_t pathid, QString path)
          TableItemFormatter item(*FileList, row++);
          item.setTextFld(col++, fieldlist.at(5)); // name
          decode_stat(fieldlist.at(4).toLocal8Bit().data(), 
-                     &statp, &LinkFI);
+                     &statp, sizeof(statp), &LinkFI);
          item.setBytesFld(col++, QString().setNum(statp.st_size));
          item.setDateFld(col++, statp.st_mtime);
          // keep original info on the first cel that is never empty
@@ -286,7 +290,7 @@ void bRestore::displayFileVersion(QString pathid, QString fnid,
          item.setTextFld(col++, fieldlist.at(6)); // Volume
          item.setNumericFld(col++, fieldlist.at(3)); // JobId
          decode_stat(fieldlist.at(4).toLocal8Bit().data(), 
-                     &statp, &LinkFI);
+                     &statp, sizeof(statp), &LinkFI);
          item.setBytesFld(col++, QString().setNum(statp.st_size)); // size
          item.setDateFld(col++, statp.st_mtime); // date
          item.setTextFld(col++, fieldlist.at(5)); // chksum
@@ -396,7 +400,7 @@ void bRestoreTable::mouseMoveEvent(QMouseEvent *event)
    }
 
    QList<QTableWidgetItem *> lst = selectedItems();
-   qDebug() << this << " selectedItems: " << lst;
+   if (mainWin->m_miscDebug) qDebug() << this << " selectedItems: " << lst;
    if (lst.isEmpty()) {
       return;
    }
@@ -459,7 +463,7 @@ void bRestoreTable::dropEvent(QDropEvent *event)
       }
       item.setTextFld(col++, fields.at(5)); // filename
       decode_stat(fields.at(4).toLocal8Bit().data(), 
-                  &statp, &LinkFI);
+                  &statp, sizeof(statp), &LinkFI);
       item.setBytesFld(col++, QString().setNum(statp.st_size)); // size
       item.setDateFld(col++, statp.st_mtime); // date
       item.setNumericFld(col++, fields.at(3)); // jobid
@@ -557,7 +561,7 @@ void bRestore::get_info_from_selection(QStringList &fileids,
          fileids << lst.at(2);
          jobids << lst.at(3);
          decode_stat(lst.at(4).toLocal8Bit().data(), 
-                     &statp, &LinkFI);
+                     &statp, sizeof(statp), &LinkFI);
          if (LinkFI) {
             findexes << lst.at(3) + "," + QString().setNum(LinkFI);
          }
@@ -680,7 +684,7 @@ int64_t bRunRestore::runRestore(QString tablename)
    q += " when=\"" + WhenEditor->dateTime().toString("yyyy-MM-dd hh:mm:ss") + "\"";
    q += " done yes";
    
-   qDebug() << q;
+   if (mainWin->m_miscDebug) qDebug() << q;
    QStringList results;
    if (brestore->console()->dir_cmd(q, results)) {
       foreach (QString resultline, results) {
@@ -705,12 +709,13 @@ void bRunRestore::computeRestore()
    if (m_findexes.size() > 0) {
       q += " hardlink=" + m_findexes.join(",");
    }
-   qDebug() << q;
+   if (mainWin->m_miscDebug) qDebug() << q;
 
    QStringList results;
    if (brestore->console()->dir_cmd(q, results)) {
       if (results.size() == 1 && results[0] == "OK") {
-         qDebug() << "jobid=" << runRestore("b2123");
+         int64_t jobid = runRestore("b2123");
+         if (mainWin->m_miscDebug) qDebug() << "jobid=" << jobid;
          q = ".bvfs_cleanup path=b2123";
          brestore->console()->dir_cmd(q, results);
       }