/** * as_validator_add_issue: **/ static void as_validator_add_issue (AsValidator *validator, AsIssueImportance importance, AsIssueKind kind, const gchar *format, ...) { va_list args; gchar *buffer; gchar *str; gchar *id_str; g_autofree gchar *fname = NULL; AsValidatorIssue *issue; AsValidatorPrivate *priv = GET_PRIVATE (validator); va_start (args, format); buffer = g_strdup_vprintf (format, args); va_end (args); issue = as_validator_issue_new (); as_validator_issue_set_kind (issue, kind); as_validator_issue_set_importance (issue, importance); as_validator_issue_set_message (issue, buffer); g_free (buffer); /* find location */ if (priv->current_fname == NULL) fname = g_strdup ("<unknown>"); else fname = g_strdup (priv->current_fname); if (priv->current_cpt == NULL) str = g_strdup_printf ("%s:<root>", fname); else if (as_str_empty (as_component_get_id (priv->current_cpt))) str = g_strdup_printf ("%s:???", fname); else str = g_strdup_printf ("%s:%s", fname, as_component_get_id (priv->current_cpt)); as_validator_issue_set_location (issue, str); g_free (str); id_str = g_strdup_printf ("%s - %s", as_validator_issue_get_location (issue), as_validator_issue_get_message (issue)); /* str ownership is transferred to the hashtable */ g_hash_table_insert (priv->issues, id_str, issue); }
/** * as_validator_add_issue: **/ static void as_validator_add_issue (AsValidator *validator, xmlNode *node, AsIssueImportance importance, AsIssueKind kind, const gchar *format, ...) { va_list args; gchar *buffer; gchar *id_str; g_autofree gchar *location = NULL; AsValidatorIssue *issue; AsValidatorPrivate *priv = GET_PRIVATE (validator); va_start (args, format); buffer = g_strdup_vprintf (format, args); va_end (args); issue = as_validator_issue_new (); as_validator_issue_set_kind (issue, kind); as_validator_issue_set_importance (issue, importance); as_validator_issue_set_message (issue, buffer); g_free (buffer); /* update location information */ if (priv->current_fname != NULL) as_validator_issue_set_filename (issue, priv->current_fname); if (priv->current_cpt != NULL) as_validator_issue_set_cid (issue, as_component_get_id (priv->current_cpt)); if (node != NULL) as_validator_issue_set_line (issue, node->line); location = as_validator_issue_get_location (issue); id_str = g_strdup_printf ("%s - %s", location, as_validator_issue_get_message (issue)); /* str ownership is transferred to the hashtable */ g_hash_table_insert (priv->issues, id_str, issue); }