Lines Matching refs:uc_mgr

41 static int parse_sequence(snd_use_case_mgr_t *uc_mgr,
67 int uc_mgr_config_load_file(snd_use_case_mgr_t *uc_mgr,
73 ucm_filename(filename, sizeof(filename), uc_mgr->conf_format,
74 file[0] == '/' ? NULL : uc_mgr->conf_dir_name,
76 err = uc_mgr_config_load(uc_mgr->conf_format, filename, cfg);
113 static int parse_string_substitute(snd_use_case_mgr_t *uc_mgr,
123 err = uc_mgr_get_substituted_value(uc_mgr, &s, str);
132 static int parse_string_substitute3(snd_use_case_mgr_t *uc_mgr,
135 if (uc_mgr->conf_format < 3)
137 return parse_string_substitute(uc_mgr, n, res);
143 static int parse_integer_substitute(snd_use_case_mgr_t *uc_mgr,
152 err = uc_mgr_get_substituted_value(uc_mgr, &s2, s1);
163 static int parse_integer_substitute3(snd_use_case_mgr_t *uc_mgr,
172 if (uc_mgr->conf_format < 3)
175 err = uc_mgr_get_substituted_value(uc_mgr, &s2, s1);
196 static int get_string3(snd_use_case_mgr_t *uc_mgr, const char *s1, char **s)
198 if (uc_mgr->conf_format < 3) {
204 return uc_mgr_get_substituted_value(uc_mgr, s, s1);
207 static int parse_get_safe_name(snd_use_case_mgr_t *uc_mgr, snd_config_t *n,
220 err = get_string3(uc_mgr, id, name);
233 static int error_node(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
238 err = parse_string_substitute3(uc_mgr, cfg, &s);
243 if (!uc_mgr->suppress_nodev_errors)
252 static int parse_syntax_field(snd_use_case_mgr_t *uc_mgr,
275 uc_mgr->conf_format = l;
282 static int evaluate_regex(snd_use_case_mgr_t *uc_mgr,
301 if (uc_mgr->conf_format < 3) {
315 err = uc_mgr_define_regex(uc_mgr, id, n);
327 static int evaluate_define(snd_use_case_mgr_t *uc_mgr,
338 return evaluate_regex(uc_mgr, cfg);
347 if (uc_mgr->conf_format < 3) {
360 err = uc_mgr_get_substituted_value(uc_mgr, &s, var);
369 err = uc_mgr_set_variable(uc_mgr, id, s);
377 return evaluate_regex(uc_mgr, cfg);
383 static int evaluate_define_macro(snd_use_case_mgr_t *uc_mgr,
400 if (uc_mgr->conf_format < 6) {
405 err = snd_config_merge(uc_mgr->macros, d, 0);
411 static int evaluate_macro1(snd_use_case_mgr_t *uc_mgr,
425 err = snd_config_search(uc_mgr->macros, mid, &m);
453 err = uc_mgr_set_variable(uc_mgr, name, var);
463 err = uc_mgr_evaluate_inplace(uc_mgr, mc);
468 err = uc_mgr_config_tree_merge(uc_mgr, dst, mc, NULL, NULL);
478 err = uc_mgr_delete_variable(uc_mgr, name);
492 static int evaluate_macro(snd_use_case_mgr_t *uc_mgr,
499 ret = evaluate_define_macro(uc_mgr, cfg);
514 if (uc_mgr->conf_format < 6) {
530 err = evaluate_macro1(uc_mgr, cfg, n2);
544 static int evaluate_include(snd_use_case_mgr_t *uc_mgr,
556 err = uc_mgr_evaluate_include(uc_mgr, cfg, n);
564 static int evaluate_condition(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
575 err = uc_mgr_evaluate_condition(uc_mgr, cfg, n);
583 static int evaluate_variant(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
596 if (uc_mgr->conf_format < 6) {
601 if (uc_mgr->parse_master_section)
604 if (uc_mgr->parse_variant == NULL)
613 if (strcmp(id, uc_mgr->parse_variant))
616 err = uc_mgr_evaluate_inplace(uc_mgr, n);
620 err = uc_mgr_config_tree_merge(uc_mgr, cfg, n, NULL, NULL);
635 int uc_mgr_evaluate_inplace(snd_use_case_mgr_t *uc_mgr,
648 err1 = evaluate_define(uc_mgr, cfg);
652 err2 = evaluate_include(uc_mgr, cfg);
659 err3 = evaluate_variant(uc_mgr, cfg);
664 uc_mgr->macro_hops++;
665 if (uc_mgr->macro_hops > 100) {
669 err4 = evaluate_macro(uc_mgr, cfg);
670 uc_mgr->macro_hops--;
675 err5 = evaluate_condition(uc_mgr, cfg);
685 static int parse_libconfig1(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
732 err = uc_mgr_config_load(uc_mgr->conf_format, file, &cfg);
735 err = uc_mgr_substitute_tree(uc_mgr, cfg);
740 err = snd_config_merge(uc_mgr->local_config, cfg, 0);
748 ucm_filename(filename, sizeof(filename), uc_mgr->conf_format,
749 file[0] == '/' ? NULL : uc_mgr->conf_dir_name,
751 err = uc_mgr_config_load_into(uc_mgr->conf_format, filename, uc_mgr->local_config);
759 err = uc_mgr_substitute_tree(uc_mgr, config);
763 err = snd_config_merge(uc_mgr->local_config, config, 0);
774 static int parse_libconfig(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
792 err = parse_libconfig1(uc_mgr, n);
803 static int parse_transition(snd_use_case_mgr_t *uc_mgr,
832 err = get_string3(uc_mgr, id, &tseq->name);
838 err = parse_sequence(uc_mgr, &tseq->transition_list, n);
852 static int parse_compound(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg,
877 err = fcn(uc_mgr, n, data1, data2);
902 static int parse_device_list(snd_use_case_mgr_t *uc_mgr ATTRIBUTE_UNUSED,
936 err = parse_string_substitute3(uc_mgr, n, &sdev->name);
967 struct use_case_device *find_component_dev(snd_use_case_mgr_t *uc_mgr,
974 list_for_each(pos, &uc_mgr->verb_list) {
1008 static int parse_component_seq(snd_use_case_mgr_t *uc_mgr,
1015 err = parse_string_substitute3(uc_mgr, n, &val);
1019 cmpt_seq->device = find_component_dev(uc_mgr, val);
1051 static int parse_sequence(snd_use_case_mgr_t *uc_mgr,
1090 err = parse_string_substitute3(uc_mgr, n, &curr->data.cdev);
1101 err = parse_string_substitute3(uc_mgr, n, &curr->data.cset);
1113 err = parse_component_seq(uc_mgr, n,
1131 err = parse_string_substitute3(uc_mgr, n, &curr->data.device);
1166 err = parse_string_substitute3(uc_mgr, n, &curr->data.sysw);
1176 err = parse_integer_substitute3(uc_mgr, n, &curr->data.sleep);
1186 err = parse_integer_substitute3(uc_mgr, n, &curr->data.sleep);
1198 err = parse_string_substitute3(uc_mgr, n, &curr->data.exec);
1213 err = parse_string_substitute3(uc_mgr, n, &curr->data.cfgsave);
1266 static int parse_value(snd_use_case_mgr_t *uc_mgr ATTRIBUTE_UNUSED,
1282 err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
1305 err = parse_string_substitute(uc_mgr, n, &s);
1367 static int parse_modifier(snd_use_case_mgr_t *uc_mgr,
1378 if (parse_get_safe_name(uc_mgr, cfg, data2, &name) < 0)
1396 err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
1407 err = parse_string_substitute3(uc_mgr, n, &modifier->comment);
1416 err = parse_device_list(uc_mgr, &modifier->dev_list,
1426 err = parse_device_list(uc_mgr, &modifier->dev_list,
1436 err = parse_sequence(uc_mgr, &modifier->enable_list, n);
1446 err = parse_sequence(uc_mgr, &modifier->disable_list, n);
1456 err = parse_transition(uc_mgr, &modifier->transition_list, n);
1466 err = parse_value(uc_mgr, &modifier->value_list, n);
1513 static int parse_device(snd_use_case_mgr_t *uc_mgr,
1524 if (parse_get_safe_name(uc_mgr, cfg, data2, &name) < 0)
1541 err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
1552 err = parse_string_substitute3(uc_mgr, n, &device->comment);
1561 err = parse_device_list(uc_mgr, &device->dev_list,
1571 err = parse_device_list(uc_mgr, &device->dev_list,
1582 err = parse_sequence(uc_mgr, &device->enable_list, n);
1593 err = parse_sequence(uc_mgr, &device->disable_list, n);
1604 err = parse_transition(uc_mgr, &device->transition_list, n);
1614 err = parse_value(uc_mgr, &device->value_list, n);
1634 static int parse_dev_name_list(snd_use_case_mgr_t *uc_mgr,
1660 err = get_string3(uc_mgr, name1, &name1s);
1664 err = parse_string_substitute3(uc_mgr, n, &name2);
1701 static int parse_compound_check_legacy(snd_use_case_mgr_t *uc_mgr,
1742 return parse_compound(uc_mgr, cfg, fcn, data1, (void *)id);
1744 return fcn(uc_mgr, cfg, data1, NULL);
1747 static int parse_device_name(snd_use_case_mgr_t *uc_mgr,
1752 return parse_compound_check_legacy(uc_mgr, cfg, parse_device, data1);
1755 static int parse_modifier_name(snd_use_case_mgr_t *uc_mgr,
1760 return parse_compound_check_legacy(uc_mgr, cfg, parse_modifier, data1);
1881 static int parse_verb(snd_use_case_mgr_t *uc_mgr,
1890 err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
1903 err = parse_sequence(uc_mgr, &verb->enable_list, n);
1913 err = parse_sequence(uc_mgr, &verb->disable_list, n);
1923 err = parse_transition(uc_mgr, &verb->transition_list, n);
1933 err = parse_value(uc_mgr, &verb->value_list, n);
1954 static int parse_verb_file(snd_use_case_mgr_t *uc_mgr,
1978 list_add_tail(&verb->list, &uc_mgr->verb_list);
1992 err = uc_mgr_config_load_file(uc_mgr, file, &cfg);
1997 err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
2010 err = parse_verb(uc_mgr, verb, n);
2021 err = parse_compound(uc_mgr, n,
2033 err = parse_compound(uc_mgr, n,
2045 err = parse_dev_name_list(uc_mgr, n, &verb->rename_list);
2056 err = parse_dev_name_list(uc_mgr, n, &verb->remove_list);
2066 if (uc_mgr->conf_format > 3 && strcmp(id, "LibraryConfig") == 0) {
2067 err = parse_libconfig(uc_mgr, n);
2101 static int parse_variant(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg,
2119 err = parse_string_substitute3(uc_mgr, n, &file);
2131 err = parse_string_substitute3(uc_mgr, n, &comment);
2160 static int parse_master_section(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg,
2175 err = parse_get_safe_name(uc_mgr, cfg, NULL, &use_case_name);
2182 uc_mgr->parse_master_section = 1;
2183 err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
2184 uc_mgr->parse_master_section = 0;
2197 err = parse_string_substitute3(uc_mgr, n, &file);
2207 err = parse_string_substitute3(uc_mgr, n, &comment);
2215 if (uc_mgr->conf_format >= 6 && strcmp(id, "Variant") == 0) {
2224 err = uc_mgr_evaluate_inplace(uc_mgr, n2);
2253 err = parse_verb_file(uc_mgr, use_case_name, comment, file);
2266 err = parse_variant(uc_mgr, n, &vfile, &vcomment);
2269 uc_mgr->parse_variant = id;
2270 err = parse_verb_file(uc_mgr, id,
2273 uc_mgr->parse_variant = NULL;
2289 static int parse_controls_fixedboot(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
2293 if (!list_empty(&uc_mgr->fixedboot_list)) {
2297 err = parse_sequence(uc_mgr, &uc_mgr->fixedboot_list, cfg);
2309 static int parse_controls_boot(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
2313 if (!list_empty(&uc_mgr->boot_list)) {
2317 err = parse_sequence(uc_mgr, &uc_mgr->boot_list, cfg);
2329 static int parse_controls(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
2333 if (!list_empty(&uc_mgr->default_list)) {
2337 err = parse_sequence(uc_mgr, &uc_mgr->default_list, cfg);
2394 static int parse_master_file(snd_use_case_mgr_t *uc_mgr, snd_config_t *cfg)
2406 if (uc_mgr->conf_format >= 2) {
2407 err = parse_syntax_field(uc_mgr, cfg, uc_mgr->conf_file_name);
2413 err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
2425 err = parse_string_substitute3(uc_mgr, n, &uc_mgr->comment);
2435 err = parse_compound(uc_mgr, n,
2445 err = parse_controls_fixedboot(uc_mgr, n);
2453 err = parse_controls_boot(uc_mgr, n);
2461 err = parse_controls(uc_mgr, n);
2469 err = parse_value(uc_mgr, &uc_mgr->value_list, n);
2478 if (uc_mgr->conf_format > 3 && strcmp(id, "LibraryConfig") == 0) {
2479 err = parse_libconfig(uc_mgr, n);
2489 return error_node(uc_mgr, n);
2568 static int parse_toplevel_path(snd_use_case_mgr_t *uc_mgr,
2607 err = parse_integer_substitute(uc_mgr, n2, &version);
2621 err = parse_string_substitute(uc_mgr, n2, &dir);
2630 err = parse_string_substitute(uc_mgr, n2, &file);
2682 if (replace_string(&uc_mgr->conf_dir_name, dir) == NULL)
2684 if (replace_string(&uc_mgr->conf_file_name, file) == NULL)
2688 uc_mgr->conf_format = version;
2716 static int parse_toplevel_config(snd_use_case_mgr_t *uc_mgr,
2730 err = parse_syntax_field(uc_mgr, cfg, filename);
2735 err = uc_mgr_evaluate_inplace(uc_mgr, cfg);
2747 err = parse_toplevel_path(uc_mgr, filename, n);
2754 if (uc_mgr->conf_format > 3 && strcmp(id, "LibraryConfig") == 0) {
2755 err = parse_libconfig(uc_mgr, n);
2773 static int load_toplevel_config(snd_use_case_mgr_t *uc_mgr,
2792 err = parse_toplevel_config(uc_mgr, filename, tcfg);
2797 err = uc_mgr_config_load(uc_mgr->conf_format, filename, cfg);
2800 uc_mgr->card_name);
2812 int uc_mgr_import_master_config(snd_use_case_mgr_t *uc_mgr)
2818 err = snd_config_top(&uc_mgr->local_config);
2822 err = snd_config_top(&uc_mgr->macros);
2826 name = uc_mgr->card_name;
2828 err = get_by_card(uc_mgr, name);
2836 get_by_card_name(uc_mgr, name);
2839 err = load_toplevel_config(uc_mgr, &cfg);
2843 err = parse_master_file(uc_mgr, cfg);
2844 if (uc_mgr->macros) {
2845 snd_config_delete(uc_mgr->macros);
2846 uc_mgr->macros = NULL;
2850 uc_mgr_free_ctl_list(uc_mgr);
2851 uc_mgr_free_verb(uc_mgr);
2857 uc_mgr_free_ctl_list(uc_mgr);
2858 replace_string(&uc_mgr->conf_dir_name, NULL);
2891 snd_use_case_mgr_t *uc_mgr;
2961 err = snd_use_case_mgr_open(&uc_mgr, fn);
2968 err = snd_use_case_get(uc_mgr, "comment", (const char **)&s);
2974 snd_use_case_mgr_close(uc_mgr);