summaryrefslogtreecommitdiff
path: root/src/openscad.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/openscad.cc')
-rw-r--r--src/openscad.cc42
1 files changed, 12 insertions, 30 deletions
diff --git a/src/openscad.cc b/src/openscad.cc
index 5ec0659..a75d629 100644
--- a/src/openscad.cc
+++ b/src/openscad.cc
@@ -24,6 +24,7 @@
*
*/
+#include "myqhash.h"
#include "openscad.h"
#include "MainWindow.h"
#include "node.h"
@@ -34,6 +35,7 @@
#include "builtin.h"
#include "nodedumper.h"
#include "printutils.h"
+#include "handle_dep.h"
#include <string>
#include <vector>
@@ -52,6 +54,7 @@
#include <QSettings>
#include <QTextStream>
#include <boost/program_options.hpp>
+#include <sstream>
#ifdef Q_WS_MAC
#include "EventFilter.h"
@@ -80,9 +83,7 @@ static void version()
exit(1);
}
-QString commandline_commands;
-const char *make_command = NULL;
-QSet<QString> dependencies;
+std::string commandline_commands;
QString currentdir;
QString examplesdir;
QString librarydir;
@@ -90,19 +91,6 @@ QString librarydir;
using std::string;
using std::vector;
-void handle_dep(QString filename)
-{
- if (filename.startsWith("/"))
- dependencies.insert(filename);
- else
- dependencies.insert(QDir::currentPath() + QString("/") + filename);
- if (!QFile(filename).exists() && make_command) {
- char buffer[4096];
- snprintf(buffer, 4096, "%s '%s'", make_command, filename.replace("'", "'\\''").toUtf8().data());
- system(buffer); // FIXME: Handle error
- }
-}
-
int main(int argc, char **argv)
{
int rc = 0;
@@ -200,8 +188,8 @@ int main(int argc, char **argv)
const vector<string> &commands = vm["D"].as<vector<string> >();
for (vector<string>::const_iterator i = commands.begin(); i != commands.end(); i++) {
- commandline_commands.append(i->c_str());
- commandline_commands.append(";\n");
+ commandline_commands += *i;
+ commandline_commands += ";\n";
}
}
@@ -300,15 +288,16 @@ int main(int argc, char **argv)
fprintf(stderr, "Can't open input file `%s'!\n", filename);
exit(1);
} else {
- QString text;
+ std::stringstream text;
char buffer[513];
int ret;
while ((ret = fread(buffer, 1, 512, fp)) > 0) {
buffer[ret] = 0;
- text += buffer;
+ text << buffer;
}
fclose(fp);
- root_module = parse((text+commandline_commands).toAscii().data(), fileInfo.absolutePath().toLocal8Bit(), false);
+ text << commandline_commands;
+ root_module = parse(text.str().c_str(), fileInfo.absolutePath().toLocal8Bit(), false);
}
QDir::setCurrent(fileInfo.absolutePath());
@@ -322,17 +311,10 @@ int main(int argc, char **argv)
QDir::setCurrent(original_path.absolutePath());
if (deps_output_file) {
- fp = fopen(deps_output_file, "wt");
- if (!fp) {
- fprintf(stderr, "Can't open dependencies file `%s' for writing!\n", deps_output_file);
+ if (!write_deps(deps_output_file,
+ stl_output_file ? stl_output_file : off_output_file)) {
exit(1);
}
- fprintf(fp, "%s:", stl_output_file ? stl_output_file : off_output_file);
- QSetIterator<QString> i(dependencies);
- while (i.hasNext())
- fprintf(fp, " \\\n\t%s", i.next().toUtf8().data());
- fprintf(fp, "\n");
- fclose(fp);
}
if (stl_output_file) {
contact: Jan Huwald // Impressum