Esempio n. 1
0
static int drun_token_match ( const Mode *data, GRegex **tokens, unsigned int index )
{
    DRunModePrivateData *rmpd = (DRunModePrivateData *) mode_get_private_data ( data );
    int                 match = 1;
    if ( tokens ) {
        for ( int j = 0; match && tokens != NULL && tokens[j] != NULL; j++ ) {
            int    test        = 0;
            GRegex *ftokens[2] = { tokens[j], NULL };
            // Match name
            if ( rmpd->entry_list[index].name &&
                 helper_token_match ( ftokens, rmpd->entry_list[index].name ) ) {
                test = 1;
            }
            // Match generic name
            if ( !test && rmpd->entry_list[index].generic_name &&
                 helper_token_match ( ftokens, rmpd->entry_list[index].generic_name ) ) {
                test = 1;
            }
            // Match executable name.
            if ( !test && helper_token_match ( ftokens, rmpd->entry_list[index].exec ) ) {
                test = 1;
            }
            // Match against category.
            if ( !test ) {
#ifdef GET_CAT_PARSE_TIME
                gchar **list = rmpd->entry_list[index].categories;
                for ( int iter = 0; !test && list && list[iter]; iter++ ) {
                    test = helper_token_match ( ftokens, list[iter] );
                }
#else
                gchar **list = g_key_file_get_locale_string_list ( rmpd->entry_list[index].key_file, "Desktop Entry", "Categories", NULL, NULL, NULL );
                for ( int iter = 0; !test && list && list[iter]; iter++ ) {
                    test = helper_token_match ( ftokens, list[iter] );
                }
                g_strfreev ( list );
#endif
            }
            if ( test == 0 ) {
                match = 0;
            }
        }
    }
    return match;
}
Esempio n. 2
0
static int script_token_match ( const Mode *sw, GRegex **tokens, unsigned int index )
{
    ScriptModePrivateData *rmpd = sw->private_data;
    return helper_token_match ( tokens, rmpd->cmd_list[index] );
}