]> granicus.if.org Git - transmission/commitdiff
Do not use printf-style formatting in C++ code
authorMike Gelfand <mikedld@mikedld.com>
Sun, 14 Dec 2014 15:34:31 +0000 (15:34 +0000)
committerMike Gelfand <mikedld@mikedld.com>
Sun, 14 Dec 2014 15:34:31 +0000 (15:34 +0000)
qt/details.cc
qt/file-tree.cc
qt/mainwin.cc
qt/torrent-delegate-min.cc

index a1552229213fe8583b1dfc5c1947cdb0abf5b2d4..cd3a15d839f88c75a9bdaab39c099ca9e8204afc 100644 (file)
@@ -23,6 +23,7 @@
 #include <QHBoxLayout>
 #include <QHBoxLayout>
 #include <QHeaderView>
+#include <QHostAddress>
 #include <QInputDialog>
 #include <QItemSelectionModel>
 #include <QLabel>
@@ -91,27 +92,21 @@ namespace
 class PeerItem: public QTreeWidgetItem
 {
     Peer peer;
-    QString collatedAddress;
+    mutable QString collatedAddress;
     QString status;
 
   public:
-
+    PeerItem (const Peer& p): peer(p) {}
     virtual ~PeerItem () {}
 
-    PeerItem (const Peer& p):
-      peer(p)
+  public:
+    void refresh (const Peer& p)
     {
-      int q[4];
-      if (sscanf (p.address.toUtf8 ().constData (), "%d.%d.%d.%d", q+0, q+1, q+2, q+3) == 4)
-        collatedAddress.sprintf ("%03d.%03d.%03d.%03d", q[0], q[1], q[2], q[3]);
-      else
-        collatedAddress = p.address;
+      if (p.address != peer.address)
+        collatedAddress.clear ();
+      peer = p;
     }
 
-  public:
-
-    void refresh (const Peer& p) { peer = p; }
-
     void setStatus (const QString& s) { status = s; }
 
     virtual bool operator< (const QTreeWidgetItem & other) const
@@ -127,9 +122,40 @@ class PeerItem: public QTreeWidgetItem
           case COL_STATUS: return status < i->status;
           case COL_CLIENT: return peer.clientName < i->peer.clientName;
           case COL_LOCK: return peer.isEncrypted && !i->peer.isEncrypted;
-          default: return collatedAddress < i->collatedAddress;
+          default: return address () < i->address ();
         }
     }
+
+  private:
+    const QString& address () const
+    {
+      if (collatedAddress.isEmpty ())
+        {
+          QHostAddress ipAddress;
+          if (ipAddress.setAddress (peer.address))
+            {
+              if (ipAddress.protocol () == QAbstractSocket::IPv4Protocol)
+                {
+                  const quint32 ipv4Address = ipAddress.toIPv4Address ();
+                  collatedAddress = QLatin1String ("1-") +
+                    QString::fromLatin1 (QByteArray::number (ipv4Address, 16).rightJustified (8, '0'));
+                }
+              else if (ipAddress.protocol () == QAbstractSocket::IPv6Protocol)
+                {
+                  const Q_IPV6ADDR ipv6Address = ipAddress.toIPv6Address ();
+                  QByteArray tmp (16, '\0');
+                  for (int i = 0; i < 16; ++i)
+                    tmp[i] = ipv6Address[i];
+                  collatedAddress = QLatin1String ("2-") + QString::fromLatin1 (tmp.toHex ());
+                }
+            }
+
+          if (collatedAddress.isEmpty ())
+            collatedAddress = QLatin1String ("3-") + peer.address.toLower ();
+        }
+
+      return collatedAddress;
+    }
 };
 
 /***
index cd6bf69538f9a3ee4851597abbbde0cbca530066..ff1d777d0c5ef99d965964bf1f2d7af8f03fbcff 100644 (file)
@@ -834,7 +834,7 @@ FileTreeDelegate::paint (QPainter                    * painter,
       p.textAlignment = Qt::AlignCenter;
       p.textVisible = true;
       p.progress = (int)(100.0*index.data().toDouble());
-      p.text = QString().sprintf("%d%%", p.progress);
+      p.text = QString::fromLatin1 ("%1%").arg (p.progress);
       style->drawControl(QStyle::CE_ProgressBar, &p, painter);
     }
   else if(column == COL_WANTED)
index 7add920e187a6aa6a0cf2288e01ecc3da40ab230..899921ef77e0b5055cfafb1229b6adca48c0f9cf 100644 (file)
@@ -19,7 +19,6 @@
 #include <QMessageBox>
 
 #include <libtransmission/transmission.h>
-#include <libtransmission/utils.h>
 #include <libtransmission/version.h>
 
 #include "about.h"
@@ -672,12 +671,8 @@ TrMainWindow::openDonate ()
 void
 TrMainWindow::openHelp ()
 {
-  const char * fmt = "http://www.transmissionbt.com/help/gtk/%d.%dx";
-  int major, minor;
-  sscanf (SHORT_VERSION_STRING, "%d.%d", &major, &minor);
-  char url[128];
-  tr_snprintf (url, sizeof (url), fmt, major, minor/10);
-  QDesktopServices::openUrl (QUrl (url));
+  QDesktopServices::openUrl (QUrl (QString::fromLatin1 ("http://www.transmissionbt.com/help/gtk/%1.%2x").
+    arg (MAJOR_VERSION).arg (MINOR_VERSION / 10)));
 }
 
 void
index a1318dbfe0bea10a1865e39f5f66c0591dcc68c4..59aeebd275d8b5533338b28554d79eeb20323581 100644 (file)
@@ -184,9 +184,7 @@ TorrentDelegateMin::drawTorrent (QPainter                   * painter,
       myProgressBarStyle->palette.setColor (QPalette::Window, silverBack);
     }
   myProgressBarStyle->state = progressBarState;
-  char buf[32];
-  tr_snprintf (buf, sizeof (buf), "%d%%", (int)tr_truncd (100.0 * tor.percentDone(), 0));
-  myProgressBarStyle->text = buf;
+  myProgressBarStyle->text = QString::fromLatin1 ("%1%").arg (static_cast<int> (tr_truncd (100.0 * tor.percentDone (), 0)));
   myProgressBarStyle->textVisible = true;
   myProgressBarStyle->textAlignment = Qt::AlignCenter;
   setProgressBarPercentDone (option, tor);