traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src/traverso/dialogs CDWritingDialog.cpp


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src/traverso/dialogs CDWritingDialog.cpp
Date: Sat, 17 Jan 2009 20:31:04 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       09/01/17 20:31:04

Modified files:
        src/traverso/dialogs: CDWritingDialog.cpp 

Log message:
        * more robust way of parsing standard output, right now it ended up in 
an infinite loop using QIODevice::readLine()

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/CDWritingDialog.cpp?cvsroot=traverso&r1=1.7&r2=1.8

Patches:
Index: CDWritingDialog.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/dialogs/CDWritingDialog.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- CDWritingDialog.cpp 28 Jan 2008 15:55:27 -0000      1.7
+++ CDWritingDialog.cpp 17 Jan 2009 20:31:04 -0000      1.8
@@ -141,6 +141,7 @@
 
 void CDWritingDialog::query_devices()
 {
+       PENTER;
        if ( ! (m_burnprocess->state() == QProcess::NotRunning) ) {
                printf("query_devices: burnprocess still running!\n");
                return;
@@ -472,23 +473,29 @@
 
 void CDWritingDialog::read_standard_output()
 {
+       PENTER;
+       
        Q_ASSERT(m_burnprocess);
        
        if (m_writingState == QUERY_DEVICE) {
                char buf[1024];
                
-               while(m_burnprocess->readLine(buf, sizeof(buf)) != -1) {
-                       QString data = QString(buf);
+               QByteArray output = m_burnprocess->readAllStandardOutput();
+               QList<QByteArray> lines = output.split('\n');
+               
+               foreach(QByteArray data, lines) {
                        
                        if (data.isEmpty()) {
                                continue;
                        }
                        
-                       //printf("%s\n", QS_C(data));
+                       printf("%s\n", data.data());
+                       
                        if (data.contains("trying to open")) {
                                update_cdburn_status(tr("Trying to access CD 
Writer ..."), NORMAL_MESSAGE);
                                return;
                        }
+                       
                        if (data.contains("Cannot open") || 
data.contains("Cannot setup")) {
                                update_cdburn_status(tr("Cannot access CD 
Writer, is it in use ?"), ERROR_MESSAGE);
                                return;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]