static bool problem_data_get_osinfo_from_items(problem_data_t *problem_data, map_string_t *osinfo, const char *osinfo_name, const char *release_name) { char *data = problem_data_get_content_or_NULL(problem_data, osinfo_name); if (data) { parse_osinfo(data, osinfo); return true; } data = problem_data_get_content_or_NULL(problem_data, release_name); if (!data) return false; insert_map_string(osinfo, xstrdup(OSINFO_PRETTY_NAME), xstrdup(data)); return true; }
static void set_settings(mantisbt_settings_t *m, map_string_t *settings, struct dump_dir *dd) { const char *environ; environ = getenv("Mantisbt_Login"); m->m_login = xstrdup(environ ? environ : get_map_string_item_or_empty(settings, "Login")); environ = getenv("Mantisbt_Password"); m->m_password = xstrdup(environ ? environ : get_map_string_item_or_empty(settings, "Password")); environ = getenv("Mantisbt_MantisbtURL"); m->m_mantisbt_url = environ ? environ : get_map_string_item_or_empty(settings, "MantisbtURL"); if (!m->m_mantisbt_url[0]) m->m_mantisbt_url = "http://localhost/mantisbt"; else { /* We don't want trailing '/': "https://host/dir/" -> "https://host/dir" */ char *last_slash = strrchr(m->m_mantisbt_url, '/'); if (last_slash && last_slash[1] == '\0') *last_slash = '\0'; } m->m_mantisbt_soap_url = concat_path_file(m->m_mantisbt_url, "api/soap/mantisconnect.php"); environ = getenv("Mantisbt_Project"); if (environ) { m->m_project = xstrdup(environ); environ = getenv("Mantisbt_ProjectVersion"); if (environ) m->m_project_version = xstrdup(environ); } else { const char *option = get_map_string_item_or_NULL(settings, "Project"); if (option) m->m_project = xstrdup(option); option = get_map_string_item_or_NULL(settings, "ProjectVersion"); if (option) m->m_project_version = xstrdup(option); } if (!m->m_project || !*m->m_project) /* if not overridden or empty... */ { free(m->m_project); free(m->m_project_version); if (dd != NULL) { map_string_t *osinfo = new_map_string(); char *os_info_data = dd_load_text(dd, FILENAME_OS_INFO); parse_osinfo(os_info_data, osinfo); free(os_info_data); parse_osinfo_for_mantisbt(osinfo, &m->m_project, &m->m_project_version); free_map_string(osinfo); } } environ = getenv("Mantisbt_SSLVerify"); m->m_ssl_verify = string_to_bool(environ ? environ : get_map_string_item_or_empty(settings, "SSLVerify")); environ = getenv("Mantisbt_DontMatchComponents"); m->m_DontMatchComponents = environ ? environ : get_map_string_item_or_empty(settings, "DontMatchComponents"); m->m_create_private = get_global_create_private_ticket(); if (!m->m_create_private) { environ = getenv("Mantisbt_CreatePrivate"); m->m_create_private = string_to_bool(environ ? environ : get_map_string_item_or_empty(settings, "CreatePrivate")); } log_notice("create private MantisBT ticket: '%s'", m->m_create_private ? "YES": "NO"); }