[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r1260: Add a method to get Tor's version as a numeric value. (in trunk/src: control gui/about)



Author: edmanm
Date: 2006-10-03 00:13:23 -0400 (Tue, 03 Oct 2006)
New Revision: 1260

Modified:
   trunk/src/control/torcontrol.cpp
   trunk/src/control/torcontrol.h
   trunk/src/gui/about/aboutdialog.cpp
Log:
Add a method to get Tor's version as a numeric value.


Modified: trunk/src/control/torcontrol.cpp
===================================================================
--- trunk/src/control/torcontrol.cpp	2006-10-03 02:28:33 UTC (rev 1259)
+++ trunk/src/control/torcontrol.cpp	2006-10-03 04:13:23 UTC (rev 1260)
@@ -395,17 +395,36 @@
   return send(cmd, errmsg); 
 }
 
-/** Ask Tor for its version */
+/** Reeturns Tor's version as a string. */
 QString
-TorControl::getTorVersion(QString *errmsg)
+TorControl::getTorVersionString(QString *errmsg)
 {
   QString ver;
   if (getInfo("version", ver, errmsg)) {
     return ver;
   }
-  return "<Unavailable>";
+  return QString();
 }
 
+/** Returns Tor's version as a numeric value. Note that this discards any
+ * version status flag, such as "-alpha" or "-rc". */
+quint32
+TorControl::getTorVersion(QString *errmsg)
+{
+  quint8 major, minor, micro, patch;
+  quint32 version = 0;
+  
+  QStringList parts = getTorVersionString(errmsg).split(".");
+  if (parts.size() >= 4) {
+    major = (quint8)parts.at(0).toUInt();
+    minor = (quint8)parts.at(1).toUInt();
+    micro = (quint8)parts.at(2).toUInt();
+    patch = (quint8)parts.at(3).toUInt();
+    version = ((major << 24) | (minor << 16) | (micro << 8) | patch);
+  }
+  return version;
+}
+
 /** Sets an event and its handler. If add is true, then the event is added,
  * otherwise it is removed. If set is true, then the given event will be
  * registered with Tor. */

Modified: trunk/src/control/torcontrol.h
===================================================================
--- trunk/src/control/torcontrol.h	2006-10-03 02:28:33 UTC (rev 1259)
+++ trunk/src/control/torcontrol.h	2006-10-03 04:13:23 UTC (rev 1260)
@@ -75,8 +75,10 @@
   /** Sends a signal to Tor */
   bool signal(TorSignal::Signal sig, QString *errmsg = 0);
   
-  /** Ask Tor for its version */
-  QString getTorVersion(QString *errmsg = 0);
+  /** Returns Tor's version as a string. */
+  QString getTorVersionString(QString *errmsg = 0);
+  /** Returns Tor's version as a numeric value. */
+  quint32 getTorVersion(QString *errmsg = 0);
 
   /** Sets an event and its handler. If add is true, then the event is added,
    * otherwise it is removed. If set is true, then the given event will be

Modified: trunk/src/gui/about/aboutdialog.cpp
===================================================================
--- trunk/src/gui/about/aboutdialog.cpp	2006-10-03 02:28:33 UTC (rev 1259)
+++ trunk/src/gui/about/aboutdialog.cpp	2006-10-03 04:13:23 UTC (rev 1260)
@@ -28,6 +28,7 @@
 #include <vidalia.h>
 #include "aboutdialog.h"
 
+
 /** Default Constructor **/
 AboutDialog::AboutDialog(QWidget *parent, Qt::WFlags flags)
 : VidaliaWindow("AboutDialog", parent, flags)
@@ -68,7 +69,11 @@
 {
   /* Access the TorControl object to retrieve version */
   if (_torControl->isRunning()) {
-    ui.lblTorVersion->setText(_torControl->getTorVersion());
+    QString version = _torControl->getTorVersionString();
+    if (version.isEmpty()) {
+      version = tr("<Unavailable>");
+    }
+    ui.lblTorVersion->setText(version);
   } else {
     ui.lblTorVersion->setText(tr("<Not Running>"));
   }