+static int mm_played_rarely_parser(int argc, __a_unused char **argv,
+ __a_unused void **ignored)
+{
+ return argc? -E_MOOD_SYNTAX : 1;
+}
+
+static int mm_path_matches_score_function(const char *path,
+ __a_unused const struct afs_info *afsi,
+ __a_unused const struct afh_info *afhi,
+ const void *data)
+{
+ if (fnmatch(data, path, 0))
+ return -100;
+ return 100;
+}
+
+static int mm_path_matches_parser(int argc, char **argv, void **data)
+{
+ if (argc != 1)
+ return -E_MOOD_SYNTAX;
+ *data = para_strdup(argv[1]);
+ return 1;
+}
+
+static void mm_path_matches_cleanup(void *data)
+{
+ free(data);
+}
+
+static int mm_is_set_parser(int argc, char **argv, void **bitnum)
+{
+ int ret;
+ unsigned char c, *res;
+
+ if (argc != 1)
+ return -E_MOOD_SYNTAX;
+ ret = get_attribute_bitnum_by_name(argv[1], &c);
+ if (ret < 0)
+ return ret;
+ res = para_malloc(1);
+ *res = c;
+ *bitnum = res;
+ return 1;
+}
+
+static int mm_is_set_score_function(__a_unused const char *path,
+ __a_unused const struct afs_info *afsi,
+ __a_unused const struct afh_info *afhi,
+ const void *data)