Ticket #4278: 0001-Return-the-storage-group-data-using-a-sensible-XML-a.patch

File 0001-Return-the-storage-group-data-using-a-sensible-XML-a.patch, 6.6 KB (added by andrew@…, 12 years ago)

Updated to r15948.

  • mythtv/programs/mythbackend/httpstatus.cpp

    From 25706ed370168162134e05951867dd77bbe8af69 Mon Sep 17 00:00:00 2001
    From: Andrew Ruthven <andrew@etc.gen.nz>
    Date: Thu, 6 Dec 2007 09:34:35 +1300
    Subject: [PATCH] Return the storage group data using a sensible XML approach.
    
    ---
     mythtv/programs/mythbackend/httpstatus.cpp |  133 ++++++++++++++--------------
     1 files changed, 67 insertions(+), 66 deletions(-)
    
    diff --git a/mythtv/programs/mythbackend/httpstatus.cpp b/mythtv/programs/mythbackend/httpstatus.cpp
    index ae8bf2d..f690ef2 100644
    a b void HttpStatus::FillStatusXML( QDomDocument *pDoc ) 
    329329    long long iTotal = -1, iUsed = -1, iAvail = -1;
    330330
    331331    BackendQueryDiskSpace(strlist, m_pEncoders, true, m_bIsMaster);
     332    QDomElement total;
    332333
    333334    QStringList::const_iterator sit = strlist.begin();
    334335    while (sit != strlist.end())
    void HttpStatus::FillStatusXML( QDomDocument *pDoc ) 
    342343        iUsed      = decodeLongLong(strlist, sit);
    343344        iAvail     = iTotal - iUsed;
    344345
    345         if (fsID == "-2")
     346        if (fsID == "-2") {
    346347            fsID = "total";
     348        }
    347349
    348         if (ids == "")
    349             ids = fsID;
    350         else
    351             ids = ids + "," + fsID;
     350        QDomElement group = pDoc->createElement("Group");
    352351
    353         storage.setAttribute("drive_" + fsID + "_total", (int)(iTotal>>10));
    354         storage.setAttribute("drive_" + fsID + "_used" , (int)(iUsed>>10));
    355         storage.setAttribute("drive_" + fsID + "_free" , (int)(iAvail>>10));
    356         storage.setAttribute("drive_" + fsID + "_dirs" , directory);
     352        group.setAttribute("id"   , fsID );
     353        group.setAttribute("total", (int)(iTotal>>10) );
     354        group.setAttribute("used" , (int)(iUsed>>10)  );
     355        group.setAttribute("free" , (int)(iAvail>>10) );
     356        group.setAttribute("dir"  , directory );
     357
     358        // Make sure that the total is always the last element.
     359        if (fsID == "total") {
     360            total = group;
     361        } else {
     362            storage.appendChild(group);
     363        }
    357364    }
    358  
    359     storage.setAttribute("fsids", ids);
    360365
     366    storage.appendChild(total);
     367 
    361368    // load average ---------------------
    362369
    363370    double rgdAverages[3];
    int HttpStatus::PrintMachineInfo( QTextStream &os, QDomElement info ) 
    10821089    }
    10831090
    10841091    // local drive space   ---------------------
    1085    
    10861092    node = info.namedItem( "Storage" );
     1093    QDomElement storage = node.toElement();
     1094    node = storage.firstChild();
    10871095
    1088     if (!node.isNull())
    1089     {   
    1090         QDomElement e = node.toElement();
     1096    os << "      Disk Usage:<br />\r\n";
     1097    os << "      <ul>\r\n";
    10911098
    1092         if (!e.isNull())
     1099
     1100    while (!node.isNull())
     1101    {
     1102        QDomElement g = node.toElement();
     1103
     1104        if (!g.isNull() && g.tagName() == "Group")
    10931105        {
    1094             QString ids = e.attribute("fsids", "");
    1095             QStringList tokens = QStringList::split(",", ids);
     1106            int nFree    = g.attribute("free" , "0" ).toInt();
     1107            int nTotal   = g.attribute("total", "0" ).toInt();
     1108            int nUsed    = g.attribute("used" , "0" ).toInt();
     1109            QString nDir = g.attribute("dir"  , "" );
     1110            QString id   = g.attribute("id"   , "" );
    10961111
    1097             os << "      Disk Usage:<br />\r\n";
    1098             os << "      <ul>\r\n";
     1112            nDir.replace(QRegExp(","), ", ");
    10991113
    1100             for (unsigned int i = 0; i < tokens.size(); i++)
     1114
     1115            if (id == "total")
    11011116            {
    1102                 // For a single-directory installation just display the totals
    1103                 if ((tokens.size() == 2) && (i == 0) &&
    1104                     (tokens[i] != "total") &&
    1105                     (tokens[i+1] == "total"))
    1106                     i++;
    1107 
    1108                 int nFree =
    1109                     e.attribute("drive_" + tokens[i] + "_free" , "0" ).toInt();
    1110                 int nTotal =
    1111                     e.attribute("drive_" + tokens[i] + "_total", "0" ).toInt();
    1112                 int nUsed =
    1113                     e.attribute("drive_" + tokens[i] + "_used" , "0" ).toInt();
    1114                 QString nDirs =
    1115                     e.attribute("drive_" + tokens[i] + "_dirs" , "" );
    1116 
    1117                 nDirs.replace(QRegExp(","), ", ");
    1118 
    1119                 if (tokens[i] == "total")
    1120                 {
    1121                     os << "        <li>Total Disk Space:\r\n"
    1122                        << "          <ul>\r\n";
    1123                 }
     1117                os << "        <li>Total Disk Space:</li>\r\n"
     1118                << "          <ul>\r\n";
     1119            }
     1120            else
     1121            {
     1122                os << "        <li>MythTV Drive #" << id << ":"
     1123                << "</li>\r\n"
     1124                << "          <ul>\r\n";
     1125
     1126                if (nDir.contains(","))
     1127                    os << "            <li>Directories: ";
    11241128                else
    1125                 {
    1126                     os << "        <li>MythTV Drive #" << tokens[i] << ":"
    1127                        << "\r\n<br />\r\n";
     1129                    os << "            <li>Directory: ";
    11281130
    1129                     if (nDirs.contains(","))
    1130                         os << "          <ul><li>Directories: ";
    1131                     else
    1132                         os << "          <ul><li>Directory: ";
     1131                os << nDir << "</li>\r\n";
     1132            }
    11331133
    1134                     os << nDirs << "</li>\r\n";
    1135                 }
     1134            QLocale c(QLocale::C);
    11361135
    1137                 QLocale c(QLocale::C);
    1138                 os << "            <li>Total Space: ";
    1139                 sRep = c.toString(nTotal) + " MB ";
    1140                 os << sRep << "</li>\r\n";
     1136            os << "            <li>Total Space: ";
     1137            sRep = c.toString(nTotal) + " MB";
     1138            os << sRep << "</li>\r\n";
    11411139
    1142                 os << "            <li>Space Used: ";
    1143                 sRep = c.toString(nUsed) + " MB ";
    1144                 os << sRep << "</li>\r\n";
     1140            os << "            <li>Space Used: ";
     1141            sRep = c.toString(nUsed) + " MB";
     1142            os << sRep << "</li>\r\n";
    11451143
    1146                 os << "            <li>Space Free: ";
    1147                 sRep = c.toString(nFree) + " MB ";
    1148                 os << sRep << "</li>\r\n";
     1144            os << "            <li>Space Free: ";
     1145            sRep = c.toString(nFree) + " MB";
     1146            os << sRep << "</li>\r\n";
     1147
     1148            os << "          </ul>\r\n"
     1149            << "        </li>\r\n";
    11491150
    1150                 os << "          </ul>\r\n"
    1151                    << "        </li>\r\n";
    1152             }
    1153             os << "      </ul>\r\n";
    11541151        }
     1152
     1153        node = node.nextSibling();
    11551154    }
    11561155
     1156    os << "      </ul>\r\n";
     1157
    11571158    // Guide Info ---------------------
    11581159
    11591160    node = info.namedItem( "Guide" );