static int process_event(struct event_format *event, const char *filter_str, struct filter_arg **parg, char **error_str) { int ret; pevent_buffer_init(filter_str, strlen(filter_str)); ret = process_filter(event, parg, error_str, 0); if (ret == 1) { show_error(error_str, "Unbalanced number of ')'"); return -1; } if (ret < 0) return ret; /* If parg is NULL, then make it into FALSE */ if (!*parg) { *parg = allocate_arg(); (*parg)->type = FILTER_ARG_BOOLEAN; (*parg)->boolean.value = FILTER_FALSE; } return 0; }
void HtmlMessage::process(Client& cli) { // process sub. process_filter(&data, cli); // emit message. cli.emit(kSignalHtmlMessage, eventobj_t::Data(this)); }
void Statistics_table_model::set_variable(Application_variable v, bool apply_filter) { for (unsigned i=0; i<variables.size(); i++) { if (variables[i].first==v.first) { variables[i] = v; process_filter(); // emit dataChanged(QModelIndex(), QModelIndex()); return; } } // std::cout << "setting " << v.first.toStdString() << " pushed to end and "; //std::cout << "begin insert row " << std::endl; // beginInsertRows(QModelIndex(), 0, 0); variables.push_back(v); process_filter(); // endInsertRows(); // std::cout << "variables.size() " << variables.size() << std::endl; }
void HtmlMessage::process_filter(xmlnode_t *node, Client& cli) { if (node->name == "img") { Field fld = node->value; cli.emit(kSignalGotField, eventobj_t::Data(this, &fld)); } // each child. for (xmlnode_t::children_type::iterator iter = node->children.begin(); iter != node->children.end(); ++iter) { process_filter(iter->second, cli); } }
void Settings_list_widget::load_button(bool) { QSettings settings; QString file_name = QFileDialog::getOpenFileName( this, "Choose a filename to load settings", settings.value("last-data-directory",QString()).toString(), "Settings (*.ini)"); if (file_name=="") return; if (!file_name.endsWith(".ini")) file_name += ".ini"; QString save_directory = file_name; save_directory.truncate(file_name.lastIndexOf('/')); settings.setValue("last-data-directory",save_directory); Settings_table_model::load_current_settings(file_name); process_filter(); }
Status procProcesses(std::vector<std::string>& processes) { boost::regex process_filter("\\d+"); // Iterate over each process-like directory in proc. boost::filesystem::directory_iterator it(kLinuxProcPath), end; try { for (; it != end; ++it) { if (boost::filesystem::is_directory(it->status())) { boost::smatch what; if (boost::regex_match( it->path().leaf().string(), what, process_filter)) { processes.push_back(it->path().leaf().string()); } } } } catch (boost::filesystem::filesystem_error& e) { VLOG(1) << "Exception iterating Linux processes " << e.what(); return Status(1, e.what()); } return Status(0, "OK"); }
/* * Enumerate all video devices * * See also: * * Using the System Device Enumerator: * http://msdn2.microsoft.com/en-us/library/ms787871.aspx */ int enum_devices() { HRESULT hr; printf("Enumerating video input devices ...\n"); // Create the System Device Enumerator. ICreateDevEnum *pSysDevEnum = NULL; hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void **)&pSysDevEnum); if(FAILED(hr)) { fprintf(stderr, "ERROR: Unable to create system device enumerator.\n"); return hr; } // Obtain a class enumerator for the video input device category. IEnumMoniker *pEnumCat = NULL; hr = pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnumCat, 0); if(hr == S_OK) { // Enumerate the monikers. IMoniker *pMoniker = NULL; ULONG cFetched; while(pEnumCat->Next(1, &pMoniker, &cFetched) == S_OK) { IPropertyBag *pPropBag; hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag); if(SUCCEEDED(hr)) { // To retrieve the filter's friendly name, do the following: VARIANT varName; VariantInit(&varName); hr = pPropBag->Read(L"FriendlyName", &varName, 0); if (SUCCEEDED(hr)) { // Display the name in your UI somehow. wprintf(L" Found device: %s\n", varName.bstrVal); } VariantClear(&varName); // To create an instance of the filter, do the following: IBaseFilter *pFilter; hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&pFilter); process_filter(pFilter); //Remember to release pFilter later. pPropBag->Release(); } pMoniker->Release(); } pEnumCat->Release(); } pSysDevEnum->Release(); return 0; }
static int process_filter(struct event_format *event, struct filter_arg **parg, char **error_str, int not) { enum event_type type; char *token = NULL; struct filter_arg *current_op = NULL; struct filter_arg *current_exp = NULL; struct filter_arg *left_item = NULL; struct filter_arg *arg = NULL; enum op_type op_type; enum filter_op_type btype; enum filter_exp_type etype; enum filter_cmp_type ctype; int ret; *parg = NULL; do { free(token); type = read_token(&token); switch (type) { case EVENT_SQUOTE: case EVENT_DQUOTE: case EVENT_ITEM: arg = create_arg_item(event, token, type, error_str); if (!arg) goto fail; if (!left_item) left_item = arg; else if (current_exp) { ret = add_right(current_exp, arg, error_str); if (ret < 0) goto fail; left_item = NULL; /* Not's only one one expression */ if (not) { arg = NULL; if (current_op) goto fail_print; free(token); *parg = current_exp; return 0; } } else goto fail_print; arg = NULL; break; case EVENT_DELIM: if (*token == ',') { show_error(error_str, "Illegal token ','"); goto fail; } if (*token == '(') { if (left_item) { show_error(error_str, "Open paren can not come after item"); goto fail; } if (current_exp) { show_error(error_str, "Open paren can not come after expression"); goto fail; } ret = process_filter(event, &arg, error_str, 0); if (ret != 1) { if (ret == 0) show_error(error_str, "Unbalanced number of '('"); goto fail; } ret = 0; /* A not wants just one expression */ if (not) { if (current_op) goto fail_print; *parg = arg; return 0; } if (current_op) ret = add_right(current_op, arg, error_str); else current_exp = arg; if (ret < 0) goto fail; } else { /* ')' */ if (!current_op && !current_exp) goto fail_print; /* Make sure everything is finished at this level */ if (current_exp && !check_op_done(current_exp)) goto fail_print; if (current_op && !check_op_done(current_op)) goto fail_print; if (current_op) *parg = current_op; else *parg = current_exp; return 1; } break; case EVENT_OP: op_type = process_op(token, &btype, &ctype, &etype); /* All expect a left arg except for NOT */ switch (op_type) { case OP_BOOL: /* Logic ops need a left expression */ if (!current_exp && !current_op) goto fail_print; /* fall through */ case OP_NOT: /* logic only processes ops and exp */ if (left_item) goto fail_print; break; case OP_EXP: case OP_CMP: if (!left_item) goto fail_print; break; case OP_NONE: show_error(error_str, "Unknown op token %s", token); goto fail; } ret = 0; switch (op_type) { case OP_BOOL: arg = create_arg_op(btype); if (current_op) ret = add_left(arg, current_op); else ret = add_left(arg, current_exp); current_op = arg; current_exp = NULL; break; case OP_NOT: arg = create_arg_op(btype); if (current_op) ret = add_right(current_op, arg, error_str); if (ret < 0) goto fail; current_exp = arg; ret = process_filter(event, &arg, error_str, 1); if (ret < 0) goto fail; ret = add_right(current_exp, arg, error_str); if (ret < 0) goto fail; break; case OP_EXP: case OP_CMP: if (op_type == OP_EXP) arg = create_arg_exp(etype); else arg = create_arg_cmp(ctype); if (current_op) ret = add_right(current_op, arg, error_str); if (ret < 0) goto fail; ret = add_left(arg, left_item); if (ret < 0) { arg = NULL; goto fail_print; } current_exp = arg; break; default: break; } arg = NULL; if (ret < 0) goto fail_print; break; case EVENT_NONE: break; default: goto fail_print; } } while (type != EVENT_NONE); if (!current_op && !current_exp) goto fail_print; if (!current_op) current_op = current_exp; current_op = collapse_tree(current_op); *parg = current_op; return 0; fail_print: show_error(error_str, "Syntax error"); fail: free_arg(current_op); free_arg(current_exp); free_arg(arg); free(token); return -1; }