mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
9d8b0addf9
When just assigning one structure to the other we copy the string pointers. If we then modify those strings in the copy, we happily free the strings of the original. And then resetting the preferences equally happily reused those strings, pointing to long since freed memory. I think what I did now is excessive for the current use case in that it copies a ton of strings that are unset in the default_prefs. But I figured this is a rarely used function and I might as well do it correctly. Also, once we implement multi user support with per user preferences we will be copying completely populated preferences around (at least that's my guess). Fixes #940 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
66 lines
1.7 KiB
C++
66 lines
1.7 KiB
C++
/* Dirk Hohndel, 2015 */
|
|
|
|
#include <QString>
|
|
#include <QCommandLineParser>
|
|
#include <QDebug>
|
|
|
|
#include "qt-gui.h"
|
|
#include "dive.h"
|
|
#include "save-html.h"
|
|
#include "stdio.h"
|
|
#include "git2.h"
|
|
#include "subsurfacestartup.h"
|
|
#include "divelogexportlogic.h"
|
|
|
|
QTranslator *qtTranslator, *ssrfTranslator;
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
QApplication *application = new QApplication(argc, argv);
|
|
git_libgit2_init();
|
|
copy_prefs(&default_prefs, &prefs);
|
|
init_qt_late();
|
|
|
|
QCommandLineParser parser;
|
|
QCommandLineOption sourceDirectoryOption(QStringList() << "s" << "source",
|
|
"Read git repository from <directory>",
|
|
"directory");
|
|
parser.addOption(sourceDirectoryOption);
|
|
QCommandLineOption outputDirectoryOption(QStringList() << "u" << "output",
|
|
"Write HTML files into <directory>",
|
|
"directory");
|
|
parser.addOption(outputDirectoryOption);
|
|
|
|
parser.process(*application);
|
|
|
|
QString source = parser.value(sourceDirectoryOption);
|
|
QString output = parser.value(outputDirectoryOption);
|
|
|
|
if (source.isEmpty() || output.isEmpty()) {
|
|
qDebug() << "need --source and --output";
|
|
exit(1);
|
|
}
|
|
|
|
int ret = parse_file(qPrintable(source));
|
|
if (ret) {
|
|
fprintf(stderr, "parse_file returned %d\n", ret);
|
|
exit(1);
|
|
}
|
|
|
|
// this should have set up the informational preferences - let's grab
|
|
// the units from there
|
|
|
|
prefs.unit_system = informational_prefs.unit_system;
|
|
prefs.units = informational_prefs.units;
|
|
|
|
// now set up the export settings to create the HTML export
|
|
struct htmlExportSetting hes;
|
|
hes.themeFile = "sand.css";
|
|
hes.exportPhotos = true;
|
|
hes.selectedOnly = false;
|
|
hes.listOnly = false;
|
|
hes.yearlyStatistics = true;
|
|
hes.subsurfaceNumbers = true;
|
|
exportHtmlInitLogic(output, hes);
|
|
exit(0);
|
|
}
|