summaryrefslogtreecommitdiff
path: root/src/lexer.l
diff options
context:
space:
mode:
authorkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-01 03:11:29 (GMT)
committerkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-01 03:11:29 (GMT)
commit76f0b1119f1be174ce7adbb1458d2d9a3fa30d22 (patch)
tree0c30a8720e8fd56a6a051ec3a2d2d3f61307b7e1 /src/lexer.l
parent17eb94bf67ae55fb3f649d99790593907b7820b0 (diff)
bugfix: In MDI mode, the parser must know which file it compiles, not just the contents, for inluded files to be found. Made the parser Qt-dependant - oh well...
git-svn-id: http://svn.clifford.at/openscad/trunk@395 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'src/lexer.l')
-rw-r--r--src/lexer.l9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lexer.l b/src/lexer.l
index c9e9332..2130948 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -23,12 +23,15 @@
#include "openscad.h"
#include "printutils.h"
#include "parser_yacc.h"
+#include <QFileInfo>
+#include <QDir>
int lexerget_lineno(void);
#ifdef __GNUC__
static void yyunput(int, char*) __attribute__((unused));
#endif
extern const char *parser_input_buffer;
+extern const char *parser_source_path;
#define YY_INPUT(buf,result,max_size) { \
if (yyin && yyin != stdin) { \
@@ -62,8 +65,10 @@ extern const char *parser_input_buffer;
"<"[^ \t\n>]+">" {
char *filename = strdup(yytext+1);
filename[strlen(filename)-1] = 0;
- handle_dep(filename);
- yyin = fopen(filename, "r");
+ QFileInfo finfo(QDir(parser_source_path), filename);
+
+ handle_dep(finfo.absoluteFilePath());
+ yyin = fopen(finfo.absoluteFilePath().toLocal8Bit(), "r");
if (!yyin) {
PRINTF("WARNING: Can't open input file `%s'.", filename);
} else {
contact: Jan Huwald // Impressum