diff options
author | kintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c> | 2010-02-01 03:11:29 (GMT) |
---|---|---|
committer | kintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c> | 2010-02-01 03:11:29 (GMT) |
commit | 76f0b1119f1be174ce7adbb1458d2d9a3fa30d22 (patch) | |
tree | 0c30a8720e8fd56a6a051ec3a2d2d3f61307b7e1 /src/lexer.l | |
parent | 17eb94bf67ae55fb3f649d99790593907b7820b0 (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.l | 9 |
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 { |