void CL_CSSDocument_Impl::load(const CL_String &filename, const CL_VirtualDirectory &directory) { CL_String path = CL_PathHelp::get_fullpath(filename, CL_PathHelp::path_type_file); // Load document into a buffer: CL_IODevice input = directory.open_file_read(filename); int size = input.get_size(); if (size < 0) throw CL_Exception("IODevice does not support get_size()"); CL_DataBuffer data(size); int bytes_read = input.read(data.get_data(), data.get_size()); data.set_size(bytes_read); // Start parsing: unsigned char *data_ptr = (unsigned char *) data.get_data(); whitespace_comments(data_ptr, bytes_read); int pos = 0; while (pos < bytes_read) { unsigned char ch = data_ptr[pos]; switch (ch) { case ' ': case '\t': case '\r': case '\n': pos++; break; case '@': // import pos = load_import(data_ptr, pos, bytes_read, directory, path); break; default: // ruleset pos = load_ruleset(data_ptr, pos, bytes_read); break; } } }
void CL_CSSDocument_Impl::load(const CL_StringRef &path, CL_IODevice &input) { // Load document into a buffer: int size = input.get_size(); if (size < 0) throw CL_Exception("IODevice does not support get_size()"); CL_DataBuffer data(size); int bytes_read = input.read(data.get_data(), data.get_size()); data.set_size(bytes_read); // Start parsing: unsigned char *data_ptr = (unsigned char *) data.get_data(); whitespace_comments(data_ptr, bytes_read); int pos = 0; while (pos < bytes_read) { unsigned char ch = data_ptr[pos]; switch (ch) { case ' ': case '\t': case '\r': case '\n': pos++; break; case '@': // import pos = load_import(data_ptr, pos, bytes_read, path); break; default: // ruleset pos = load_ruleset(data_ptr, pos, bytes_read); break; } } }
int main(int argc, char *argv[]) { mrp_context_t *ctx; ctx = create_context(); setup_signals(ctx); create_ruleset(ctx); parse_cmdline(ctx, argc, argv); load_configuration(ctx); start_plugins(ctx); load_ruleset(ctx); prepare_ruleset(ctx); setup_logging(ctx); daemonize(ctx); run_mainloop(ctx); stop_plugins(ctx); cleanup_context(ctx); return 0; }