summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2014-02-06 05:44:03 (GMT)
committerMarius Kintel <marius@kintel.net>2014-02-06 05:44:03 (GMT)
commit55192e46a4c0a977b7a9a35650b027c7a410ab14 (patch)
tree994b200e7bf1db3f789f4ff386ead01333e240eb /src
parent57e2ecd7b5fd64c7a325ea8816c6f0df4dd63e08 (diff)
Backported 2e3729ab2268f29ee4ff5898f629c4a10c2d6587 to master; redo assemblePath for Win. redo openscad.com to handle spaces in filenames
Diffstat (limited to 'src')
-rw-r--r--src/openscad.cc10
-rw-r--r--src/winconsole.c10
2 files changed, 16 insertions, 4 deletions
diff --git a/src/openscad.cc b/src/openscad.cc
index ad6cbf9..12e22ce 100644
--- a/src/openscad.cc
+++ b/src/openscad.cc
@@ -453,12 +453,16 @@ int cmdline(const char *deps_output_file, const std::string &filename, Camera &c
#include <QApplication>
#include <QString>
#include <QDir>
+#include <QFileInfo>
// Only if "fileName" is not absolute, prepend the "absoluteBase".
-static QString assemblePath(const fs::path& absoluteBase,
+static QString assemblePath(const fs::path& absoluteBaseDir,
const string& fileName) {
- return fileName.empty() ? "" : QDir(QString::fromStdString((const string&) absoluteBase))
- .absoluteFilePath(QString::fromStdString(fileName));
+ if (fileName.empty()) return "";
+ QString qsDir( boosty::stringy( absoluteBaseDir ).c_str() );
+ QString qsFile( fileName.c_str() );
+ QFileInfo info( qsDir, qsFile ); // if qsfile is absolute, dir is ignored.
+ return info.absoluteFilePath();
}
bool QtUseGUI()
diff --git a/src/winconsole.c b/src/winconsole.c
index de8e682..11a0309 100644
--- a/src/winconsole.c
+++ b/src/winconsole.c
@@ -40,16 +40,24 @@ int main( int argc, char * argv[] )
int eof = 0;
int pclose_result;
int i;
+ const char * argchar;
int result = 0;
+ int quotify_arg = 0;
strcat( cmd, "\0" );
strcat( cmd, "openscad.exe" );
for ( i = 1 ; i < argc ; ++i ) {
+ quotify_arg = 0;
+ for ( argchar = argv[i]; *argchar!=0; argchar++ ) {
+ if ((char)(*argchar)==' ') quotify_arg = 1;
+ }
strcat( cmd, " " );
+ if (quotify_arg) strcat( cmd, "\"");
strcat( cmd, argv[i] );
+ if (quotify_arg) strcat( cmd, "\"");
}
- strcat( cmd, " ");
strcat( cmd, " 2>&1"); // capture stderr and stdout
+ printf("openscad.com: running command: %s\n", cmd );
cmd_stdout = _popen( cmd, "rt" );
if ( cmd_stdout == NULL ) {
contact: Jan Huwald // Impressum