static enum request open_pager_mode(enum request request) { if (request == REQ_VIEW_PAGER) { /* Detect if the user requested the main view. */ if (argv_contains(opt_rev_args, "--stdin")) { open_main_view(NULL, OPEN_FORWARD_STDIN); } else if (argv_contains(opt_cmdline_args, "--pretty=raw")) { open_main_view(NULL, OPEN_STDIN); } else { open_pager_view(NULL, OPEN_STDIN); } } else if (request == REQ_VIEW_DIFF) { if (argv_contains(opt_rev_args, "--stdin")) open_diff_view(NULL, OPEN_FORWARD_STDIN); else open_diff_view(NULL, OPEN_STDIN); } else { close(STDIN_FILENO); report("Ignoring stdin."); return request; } return REQ_NONE; }
static enum request open_pager_mode(enum request request) { enum open_flags flags = OPEN_DEFAULT; if (request == REQ_VIEW_PAGER) { /* Detect if the user requested the main view. */ if (argv_contains(opt_rev_argv, "--stdin")) { request = REQ_VIEW_MAIN; flags |= OPEN_FORWARD_STDIN; } else if (argv_contains(opt_cmdline_argv, "--pretty=raw")) { request = REQ_VIEW_MAIN; flags |= OPEN_STDIN; } else { flags |= OPEN_STDIN; } } else if (request == REQ_VIEW_DIFF) { if (argv_contains(opt_rev_argv, "--stdin")) flags |= OPEN_FORWARD_STDIN; } /* Open the requested view even if the pager mode is enabled so * the warning message below is displayed correctly. */ open_view(NULL, request, flags); if (!open_in_pager_mode(flags)) { close(STDIN_FILENO); report("Ignoring stdin."); } return REQ_NONE; }
static int construct_dpdk_options(const struct smap *ovs_other_config, char ***argv, const int initial_size, char **extra_args, const size_t extra_argc) { struct dpdk_options_map { const char *ovs_configuration; const char *dpdk_option; bool default_enabled; const char *default_value; } opts[] = { {"dpdk-lcore-mask", "-c", false, NULL}, {"dpdk-hugepage-dir", "--huge-dir", false, NULL}, }; int i, ret = initial_size; /*First, construct from the flat-options (non-mutex)*/ for (i = 0; i < ARRAY_SIZE(opts); ++i) { const char *lookup = smap_get(ovs_other_config, opts[i].ovs_configuration); if (!lookup && opts[i].default_enabled) { lookup = opts[i].default_value; } if (lookup) { if (!argv_contains(extra_args, extra_argc, opts[i].dpdk_option)) { dpdk_option_extend(argv, ret, opts[i].dpdk_option, lookup); ret += 2; } else { VLOG_WARN("Ignoring database defined option '%s' due to " "dpdk_extras config", opts[i].dpdk_option); } } } return ret; }
static int construct_dpdk_mutex_options(const struct smap *ovs_other_config, char ***argv, const int initial_size, char **extra_args, const size_t extra_argc) { struct dpdk_exclusive_options_map { const char *category; const char *ovs_dpdk_options[MAX_DPDK_EXCL_OPTS]; const char *eal_dpdk_options[MAX_DPDK_EXCL_OPTS]; const char *default_value; int default_option; } excl_opts[] = { {"memory type", {"dpdk-alloc-mem", "dpdk-socket-mem", NULL,}, {"-m", "--socket-mem", NULL,}, "1024,0", 1 }, }; int i, ret = initial_size; for (i = 0; i < ARRAY_SIZE(excl_opts); ++i) { int found_opts = 0, scan, found_pos = -1; const char *found_value; struct dpdk_exclusive_options_map *popt = &excl_opts[i]; for (scan = 0; scan < MAX_DPDK_EXCL_OPTS && popt->ovs_dpdk_options[scan]; ++scan) { const char *lookup = smap_get(ovs_other_config, popt->ovs_dpdk_options[scan]); if (lookup && strlen(lookup)) { found_opts++; found_pos = scan; found_value = lookup; } } if (!found_opts) { if (popt->default_option) { found_pos = popt->default_option; found_value = popt->default_value; } else { continue; } } if (found_opts > 1) { VLOG_ERR("Multiple defined options for %s. Please check your" " database settings and reconfigure if necessary.", popt->category); } if (!argv_contains(extra_args, extra_argc, popt->eal_dpdk_options[found_pos])) { dpdk_option_extend(argv, ret, popt->eal_dpdk_options[found_pos], found_value); ret += 2; } else { VLOG_WARN("Ignoring database defined option '%s' due to " "dpdk_extras config", popt->eal_dpdk_options[found_pos]); } } return ret; }