[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [k3b/multisession] libk3b/projects: Inquire the ISO filesystem size
From:       Leslie Zhai <xiangzhai83 () gmail ! com>
Date:       2016-09-21 4:11:31
Message-ID: E1bmYsd-0007G9-Lk () code ! kde ! org
[Download RAW message or body]

Git commit b22f60344db146aa6b5136373b0a0b270d5d8ee9 by Leslie Zhai.
Committed on 21/09/2016 at 04:09.
Pushed by lesliezhai into branch 'multisession'.

Inquire the ISO filesystem size

Hi Thomas, please review it ;-)

CCBUG: 367639
CCMAIL: scdbackup@gmx.net

M  +16   -3    libk3b/projects/k3bgrowisofswriter.cpp

http://commits.kde.org/k3b/b22f60344db146aa6b5136373b0a0b270d5d8ee9

diff --git a/libk3b/projects/k3bgrowisofswriter.cpp \
b/libk3b/projects/k3bgrowisofswriter.cpp index f03ef80..20f675f 100644
--- a/libk3b/projects/k3bgrowisofswriter.cpp
+++ b/libk3b/projects/k3bgrowisofswriter.cpp
@@ -198,13 +198,26 @@ bool K3b::GrowisofsWriter::prepareProcess()
         s += d->image;
 
     // TODO: KDEBUG-367639
-    // wrong alleged_next_session for growisofs!
     if( d->multiSession && !d->multiSessionInfo.isEmpty() ) {
         QStringList ms = d->multiSessionInfo.split(',');
         if (ms.size() == 2) {
             if (ms[0] == 0 || ms[1] == "0") {
-                qDebug() << "you don't have to specify -C option, growisofs will \
                construct one for you!";
-                d->process << "-use-the-force-luke=spare=none";
+                FILE* fptr = NULL;
+                if (d->image.isEmpty())
+                    fptr = fopen("/dev/fd/0", "r");
+                else
+                    fptr = fopen(d->image.toStdString().c_str(), "r");
+                if (fptr) {
+                    if (fseek(fptr, 32 * 1024 + 80, SEEK_SET) == 0) {
+                        char buf[4] = { '\0' };
+                        fread(buf, 1, sizeof(buf), fptr);
+                        d->process << "-C 0," << buf;
+                    } else {
+                        qWarning() << strerror(errno);
+                    }
+                    fclose(fptr);
+                    fptr = NULL;
+                }
             } else {
                 d->process << "-C" << d->multiSessionInfo;
             }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic