# HG changeset patch # User Torsten # Date 1424496143 18000 # Node ID be7b05f95d7c606fd28d6d703d35c64cfdb5e1c9 # Parent a9952a647d52671a38d0fac48bc7831a9ad0065d fix unzipping compressed info files when running the gui (bug #38305) * parser.cc (parser::open_file): Use iprocstream instead of QProcess to handle compressed info files. diff --git a/libgui/src/qtinfo/parser.cc b/libgui/src/qtinfo/parser.cc --- a/libgui/src/qtinfo/parser.cc +++ b/libgui/src/qtinfo/parser.cc @@ -29,12 +29,12 @@ #endif #include "parser.h" +#include "procstream.h" #include #include #include #include #include -#include #include parser::parser(QObject *p) @@ -96,13 +96,20 @@ QIODevice *iodevice = 0; if (_compressors_map.contains (file_info.suffix ())) { - QProcess gzip; - gzip.start (_compressors_map.value (file_info.suffix ()).arg (file_info.absoluteFilePath ())); + QString command = _compressors_map.value (file_info.suffix ()).arg (file_info.absoluteFilePath ()); + iprocstream ips (command.toStdString ()); - if (!gzip.waitForFinished ()) + if (ips.bad ()) return 0; - QByteArray result = gzip.readAll (); + QByteArray result; + char buffer[1024]; + + while (! ips.eof ()) + { + ips.read (buffer, sizeof (buffer)); + result.append (buffer, ips.gcount ()); + } QBuffer *io = new QBuffer (this); io->setData (result);