QScriptValue include(QScriptContext *context, QScriptEngine *engine){ if (context->argumentCount() != 1) return engine->undefinedValue(); QString name = context->argument(0).toString(); bool found = false; QString macro; if (scriptengine::macros) { for (int i=0;i<scriptengine::macros->size();i++) if (scriptengine::macros->at(i).name == name) { found = true; macro = scriptengine::macros->at(i).tag; break; } } if (!found) { QString filename; if (QFileInfo(name).exists()) filename = name; else filename = findResourceFile(name, true); if (filename.isEmpty() || !needPrivileges(engine, "include", filename, false)) return engine->undefinedValue(); QFile f(filename); if (!f.open(QFile::ReadOnly)) return engine->undefinedValue(); macro = QString::fromUtf8(f.readAll().data()); } if (macro.startsWith("%SCRIPT")) macro.remove(0, strlen("%SCRIPT")); if (macro.isEmpty()) return engine->undefinedValue(); return engine->evaluate(macro); }
QAbstractFileEngine *QFileResourceFileEngineHandler::create(const QString &path) const { if ( path.length() > 0 && path[0] == ':' ) { QString p = findResourceFile(path); if (!p.isNull()) return new QFSFileEngine(p); } return 0; }