diff options
| -rw-r--r-- | src/openscad.cc | 10 | ||||
| -rw-r--r-- | src/winconsole.c | 10 | 
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 ) { | 
