Wirst du noch ein/zwei Versionen für Windows kompilieren? Also Windows (7/)10 32bit / 64bit? Durch die Standardlibaries sollte das meiste doch relativ einfach zu übernehmen sein (...)?
Das Projekt zu portieren kann mittels MSys2 ganz leicht sein, dies ist aber nicht gesagt, mal ein paar Gedanken dazu:
Folgende Bibliotheken werden verwendet:
[src=txt]
// ANSI C / +99 libraries
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>
#include <string.h>
#include <locale.h>
// Kisslibs ebook routinen
#include "kisslib.h" // read_pdf, read_mobi, read_chm, read_epub
// GTK3
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <gio/gio.h>
#include <glib.h>
//SQLite3
#include <sqlite3.h>
//GNU / POSIX
#include <dirent.h> // readdir, closedir
#include <unistd.h> // access, fork, exec varianten
// gettext
#include <libintl.h>
// Libzip (Kisslib.h)
#include <zip.h>
[/src]
ANSI C / +C99 sind klar, die stellen kein Problem da.
Kisslib.h - was dazwischen hängt, enthält nur eine GTK Routine und libzip.
SQlite3 und Gettext findet sich alle in Msys2.
Wo es jetzt spannender wird, sind die GNU / POSIX Header:
dirent.h: readdir(), closedir() - m Ordnerinhalte auszulesen
unistd.h: access(), fork(), exec() - um zu prüfen ob der aktuelle User Zugriff auf einen Reader hat und um andere Prozesse zu starten
Diese Funktionen müssten durch Windows Funktionen ersetzt werden.
2. - Reader und Viewer Locations für ein Setup:
Die Reader/Viewer Erkennenung für ein Setup:
Unter Linux sind die Programme in der Regel an einem Platz installiert, auf diese wird geprüft.
Unter Windows müsste man sich dann vermutlich irgendwie in der Registry einhangeln, um dann nach bestimmen Schlüssel zu suchen und dann die Executable Ordner finden für Acrobat.exe/SumatraPDF/Foxit Reader usw... und diese im Setup vorschlagen
3. - Pfade/Dateinamen Handling:
Es ist alles auf die Linux Schreibweise von Dateien und Pfaden ausgelegt, ich bin mir nicht sicher das dies konsequent unter Windows auch so funktioniert, kann man aber testen... betroffen davon wäre die Routine
, die Daten in das Model ließt und in die Datenbank speichert, bzw. die Ausleseroutinen aufruft.
4. - Fork/Exec:
Nicht Standard C aber hier muß man mit Sicherheit noch Änderungen vornehmen, also in welcher Shell/Terminal/Befehl ein Programm gestartet wird damit Kisslib weiterhin funktioniert und ein anderer Prozess gestartet werden kann
Sind also ein paar Punkte die dafür mehr oder minder berücksichtigt werden sollten/müssten.
Auch würde ich selbst dafür andere C Files/eine neu Version verwenden, damit der Windows relevante Code nicht mit dem der Linux Versionen verschmolzen wird und umgekehrt.
PS: Als Listen für die Standard Detection Reader könnten dienen:
https://de.wikipedia.org/wiki/Liste_von_PDF-Software
https://en.wikipedia.org/wiki/List_of_PDF_software
Es sind mir auch noch Kandidaten für Linux aufgefallen.
@mathmos:
@theSplit:
Ich schau mal, ob ich unter der Woche fertig werde. Wen nicht, am Wochenende.
Wie du Zeit hast, es ist nicht so eilig.
Aber klar, würde mich freuen wenn wir es irgendwann auf den Weg kriegen
Auch nochmal in generell zum Thema, ich versuche derzeit Kiss Ebook als Paket in Debian zu bekommen, aber es hat sich noch kein Maintainer dafür gefunden. Für das WNPP Projekt ist es aber vorgeschlagen, also der Ort wo man Pakete vorschlagen kann, um für Hilfe zur Pakettierung/Einbindung/zur Verfügungstellung unter Debian aus den offiziellen Paketquellen fragen/bitten kann. Ich habe mich zwar selbst schon etwas in das Thema eingelesen, bin aber noch nicht 100% schlau daraus geworden.... ist nicht ganz so einfach da den Fuß in die Tür zu bekommen.
Im Grunde gilt das gleiche für die anderen Distros, die aber auch wieder zum Teil andere Wege gehen. Wer sich also auskennt und mithelfen kann/will oder Tips hat, bitte gern melden!