]> Some of my projects - aniplayer-old.git/commitdiff
- Padding amask & fmask to 8 characters is required!
authorAPTX <APTX@.(none)>
Sun, 6 Sep 2009 14:38:57 +0000 (16:38 +0200)
committerAPTX <APTX@.(none)>
Sun, 6 Sep 2009 14:38:57 +0000 (16:38 +0200)
- Fix setRawReply. Data is sent starting from the most significant flag.

lib/anidbudpclient/filecommand.cpp

index b396a2e110d8a85555bfe1729d292a607138d942..bf3c51f6ae30a26953a19136980b1626f42c6273 100644 (file)
@@ -232,9 +232,11 @@ Command FileCommand::rawCommand() const
                cmd.second["fid"] = m_fid;
        }
 
-       cmd.second["fmask"] = QString::number(m_fmask, 16);
-       // Clear any bits which aren't known.
-       cmd.second["amask"] = QString::number(m_amask & FileAnimeFlag::AllData, 16);
+       // Clear any bits which aren't known and pad to 8 characters
+       cmd.second["fmask"] = QString::number(m_fmask & FileFlag::AllData, 16)
+                                                 .rightJustified(8, QLatin1Char('0'));
+       cmd.second["amask"] = QString::number(m_amask & FileAnimeFlag::AllData, 16)
+                                                 .rightJustified(8, QLatin1Char('0'));
 
        return cmd;
 }
@@ -263,10 +265,10 @@ void FileCommand::setRawReply(ReplyCode replyCode, const QString &reply, Client
 
 void FileCommand::readReplyData(const QString &reply)
 {
-       QString d = reply.mid(reply.indexOf('\n'));
-
+       QString d = reply.mid(reply.indexOf('\n')).trimmed();
+qDebug() << d;
        QList<QString> parts = d.split('|', QString::KeepEmptyParts);
-
+qDebug() << parts;
        m_fid = parts[0].toInt();
 
        if (m_fmask == 0 && m_amask == 0)
@@ -281,30 +283,30 @@ void FileCommand::readReplyData(const QString &reply)
                return;
        }
 
-       int partNo = 0;
-       for (int i = 0, flag = 1; i < 32; ++i, flag <<= 1)
+       int partNo = 1;
+       for (int i = 0, flag = 1 << 31; i < 32; ++i, flag = (flag >> 1) & ~(1 << 31))
        {
-               if (parts.size() >= partNo)
-               {
-qDebug() << "Not enough parts in reply.";
-                       continue;
-               }
                if (m_fmask & flag)
                {
+                       if (partNo >= parts.size())
+                       {
+qDebug() << "Not enough parts in reply.";
+                               continue;
+                       }
                        fileFlagData.insert(FileFlags(flag), parts[partNo]);
                        ++partNo;
                }
        }
 
-       for (int i = 0, flag = 1; i < 32; ++i, flag <<= 1)
+       for (int i = 0, flag = 1 << 31; i < 32; ++i, flag = (flag >> 1) & ~(1 << 31))
        {
-               if (parts.size() >= partNo)
-               {
-qDebug() << "Not enough parts in reply.";
-                       continue;
-               }
                if (m_amask & flag)
                {
+                       if (partNo >= parts.size())
+                       {
+qDebug() << "Not enough parts in reply.";
+                               continue;
+                       }
                        fileAnimeFlagData.insert(FileAnimeFlags(flag), parts[partNo]);
                        ++partNo;
                }