Beispiel #1
0
static mc_search_cond_t *
mc_search__cond_struct_new (mc_search_t * lc_mc_search, const char *str,
                            gsize str_len, const char *charset)
{
    mc_search_cond_t *mc_search_cond;
    mc_search_cond = g_malloc0 (sizeof (mc_search_cond_t));

    mc_search_cond->str = g_string_new_len (str, str_len);
    mc_search_cond->charset = g_strdup (charset);

    switch (lc_mc_search->search_type)
    {
    case MC_SEARCH_T_GLOB:
        mc_search__cond_struct_new_init_glob (charset, lc_mc_search, mc_search_cond);
        break;
    case MC_SEARCH_T_NORMAL:
        mc_search__cond_struct_new_init_normal (charset, lc_mc_search, mc_search_cond);
        break;
    case MC_SEARCH_T_REGEX:
        mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond);
        break;
    case MC_SEARCH_T_HEX:
        mc_search__cond_struct_new_init_hex (charset, lc_mc_search, mc_search_cond);
        break;
    default:
        break;
    }
    return mc_search_cond;
}
Beispiel #2
0
void
mc_search__cond_struct_new_init_normal (const char *charset, mc_search_t * lc_mc_search,
                                        mc_search_cond_t * mc_search_cond)
{
    GString *tmp;

    tmp = mc_search__normal_translate_to_regex (mc_search_cond->str);
    g_string_free (mc_search_cond->str, TRUE);

    mc_search_cond->str = tmp;
    mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond);
}
Beispiel #3
0
Datei: glob.c Projekt: CTU-OSP/mc
void
mc_search__cond_struct_new_init_glob (const char *charset, mc_search_t * lc_mc_search,
                                      mc_search_cond_t * mc_search_cond)
{
    GString *tmp;

    tmp = mc_search__glob_translate_to_regex (mc_search_cond->str);
    g_string_free (mc_search_cond->str, TRUE);

    if (lc_mc_search->is_entire_line)
    {
        g_string_prepend_c (tmp, '^');
        g_string_append_c (tmp, '$');
    }
    mc_search_cond->str = tmp;

    mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond);
}
Beispiel #4
0
void
mc_search__cond_struct_new_init_normal (const char *charset, mc_search_t * lc_mc_search,
                                        mc_search_cond_t * mc_search_cond)
{
    GString *tmp;

    tmp = mc_search__normal_translate_to_regex (mc_search_cond->str);
    g_string_free (mc_search_cond->str, TRUE);

    if (lc_mc_search->whole_words)
    {
        /* NOTE: \b as word boundary doesn't allow search
         * whole words with non-ASCII symbols */
        g_string_prepend (tmp, "(^|[^\\p{L}\\p{N}_])(");
        g_string_append (tmp, ")([^\\p{L}\\p{N}_]|$)");
    }

    mc_search_cond->str = tmp;
    mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond);
}