summaryrefslogtreecommitdiffstats
path: root/kioslave/thumbnail/djvucreator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kioslave/thumbnail/djvucreator.cpp')
-rw-r--r--kioslave/thumbnail/djvucreator.cpp139
1 files changed, 0 insertions, 139 deletions
diff --git a/kioslave/thumbnail/djvucreator.cpp b/kioslave/thumbnail/djvucreator.cpp
deleted file mode 100644
index 20a32fb26..000000000
--- a/kioslave/thumbnail/djvucreator.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/* This file is part of the KDE libraries
- Copyright (C) 2001 Malte Starostik <malte@kde.org>
- Copyright (C) 2001 Leon Bottou <leon@bottou.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include <assert.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <signal.h>
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-#include <sys/time.h>
-#include <sys/wait.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#include <tqfile.h>
-#include <tqimage.h>
-
-#include <kdemacros.h>
-
-#include "djvucreator.h"
-
-
-
-extern "C"
-{
- KDE_EXPORT ThumbCreator *new_creator()
- {
- return new DjVuCreator;
- }
-}
-
-bool DjVuCreator::create(const TQString &path, int width, int height, TQImage &img)
-{
- int output[2];
- TQByteArray data(1024);
- bool ok = false;
-
- if (pipe(output) == -1)
- return false;
-
- const char* argv[8];
- TQCString sizearg, fnamearg;
- sizearg.sprintf("%dx%d", width, height);
- fnamearg = TQFile::encodeName( path );
- argv[0] = "ddjvu";
- argv[1] = "-page";
- argv[2] = "1";
- argv[3] = "-size";
- argv[4] = sizearg.data();
- argv[5] = fnamearg.data();
- argv[6] = 0;
-
- pid_t pid = fork();
- if (pid == 0)
- {
- close(output[0]);
- dup2(output[1], STDOUT_FILENO);
- execvp(argv[0], const_cast<char *const *>(argv));
- exit(1);
- }
- else if (pid >= 0)
- {
- close(output[1]);
- int offset = 0;
- while (!ok) {
- fd_set fds;
- FD_ZERO(&fds);
- FD_SET(output[0], &fds);
- struct timeval tv;
- tv.tv_sec = 20;
- tv.tv_usec = 0;
- if (select(output[0] + 1, &fds, 0, 0, &tv) <= 0) {
- if (errno == EINTR || errno == EAGAIN)
- continue;
- break; // error or timeout
- }
- if (FD_ISSET(output[0], &fds)) {
- int count = read(output[0], data.data() + offset, 1024);
- if (count == -1)
- break;
- if (count) // prepare for next block
- {
- offset += count;
- data.resize(offset + 1024);
- }
- else // got all data
- {
- data.resize(offset);
- ok = true;
- }
- }
- }
- if (!ok)
- kill(pid, SIGTERM);
- int status = 0;
- if (waitpid(pid, &status, 0) != pid || (status != 0 && status != 256) )
- ok = false;
- }
- else
- {
- close(output[1]);
- }
-
- close(output[0]);
- int l = img.loadFromData( data );
- return ok && l;
-}
-
-
-ThumbCreator::Flags DjVuCreator::flags() const
-{
- return static_cast<Flags>(DrawFrame);
-}
-
-