X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=mood.c;h=86e0eba22c0819ea657423ec7934cce959e92142;hp=e685fd91c982fd82cd9afa69c3a06932328907a5;hb=423ec3140c9774bbeaccb7afaef8e74b1d7d05f2;hpb=07010f70da6ea0ba9940116eef83abeb02fa8d5d diff --git a/mood.c b/mood.c index e685fd91..86e0eba2 100644 --- a/mood.c +++ b/mood.c @@ -164,6 +164,23 @@ static uint64_t int_sqrt(uint64_t x) return res; } +static int mm_no_attributes_set_parser(const char *arg, __a_unused void **ignored) +{ + if (arg && *arg) + PARA_WARNING_LOG("ignored junk at eol: %s\n", arg); + return 1; +} + +static int mm_no_attributes_set_score_function(__a_unused const char *path, + const struct afs_info *afsi, + __a_unused const struct audio_format_info *afhi, + __a_unused const void *data) +{ + if (!afsi->attributes) + return 100; + return -100; +} + static int mm_played_rarely_score_function(__a_unused const char *path, const struct afs_info *afsi, __a_unused const struct audio_format_info *afhi, @@ -182,7 +199,7 @@ static int mm_played_rarely_score_function(__a_unused const char *path, static int mm_played_rarely_parser(const char *arg, __a_unused void **ignored) { - if (*arg) + if (arg && *arg) PARA_WARNING_LOG("ignored junk at eol: %s\n", arg); return 1; } @@ -291,26 +308,21 @@ static int compute_mood_score(const struct osl_row *aft_row, struct mood *m, return 1; } +#define DEFINE_MOOD_METHOD(_name) \ +.parser = mm_ ## _name ## _parser, \ +.score_function = mm_ ## _name ## _score_function, \ +.name = #_name + +#define DEFINE_MOOD_METHOD_WITH_CLEANUP(_name) \ + DEFINE_MOOD_METHOD(_name), \ + .cleanup = mm_ ## _name ## _cleanup + static const struct mood_method mood_methods[] = { -{ - .parser = mm_played_rarely_parser, - .score_function = mm_played_rarely_score_function, - .name = "played_rarely" -}, -{ - .parser = mm_is_set_parser, - .score_function = mm_is_set_score_function, - .name = "is_set" -}, -{ - .parser = mm_name_like_parser, - .score_function = mm_name_like_score_function, - .cleanup = mm_name_like_cleanup, - .name = "name_like" -}, -{ - .parser = NULL -} + {DEFINE_MOOD_METHOD(no_attributes_set)}, + {DEFINE_MOOD_METHOD(played_rarely)}, + {DEFINE_MOOD_METHOD(is_set)}, + {DEFINE_MOOD_METHOD_WITH_CLEANUP(name_like)}, + {.parser = NULL} }; static void cleanup_list_entry(struct mood_item *item)