Mercurial > hg > octave-nkf
changeset 20005:be7b05f95d7c
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.
author | Torsten <ttl@justmail.de> |
---|---|
date | Sat, 21 Feb 2015 00:22:23 -0500 |
parents | a9952a647d52 |
children | c1654224bc99 |
files | libgui/src/qtinfo/parser.cc |
diffstat | 1 files changed, 12 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/qtinfo/parser.cc +++ b/libgui/src/qtinfo/parser.cc @@ -29,12 +29,12 @@ #endif #include "parser.h" +#include "procstream.h" #include <QFileInfo> #include <QDir> #include <QFile> #include <QUrl> #include <QRegExp> -#include <QProcess> #include <QBuffer> 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);