From: Andre Noll Date: Sat, 29 Sep 2007 10:22:52 +0000 (+0200) Subject: mood.c: Switch to fnmatch() in mood method name_like. X-Git-Tag: v0.3.0~327 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=ec17f2a2552856bc5efa8e9dcdb0707b8c7e2694 mood.c: Switch to fnmatch() in mood method name_like. Also, change doxygen documentation to the new style. --- diff --git a/mood.c b/mood.c index 54867e58..56ee1c43 100644 --- a/mood.c +++ b/mood.c @@ -6,6 +6,7 @@ /** \file mood.c Paraslash's mood handling functions. */ +#include #include "para.h" #include "error.h" #include "afh.h" @@ -16,18 +17,18 @@ /** * Contains statistical data of the currently admissible audio files. * - * It is used to assign normalized score values to each admissbile audio file. + * It is used to assign normalized score values to each admissible audio file. */ struct afs_statistics { - /** sum of num played over all admissible files */ + /** Sum of num played over all admissible files. */ int64_t num_played_sum; - /** sum of last played times over all admissible files */ + /** Sum of last played times over all admissible files. */ int64_t last_played_sum; - /** quadratic deviation of num played time */ + /** Quadratic deviation of num played time. */ int64_t num_played_qd; - /** quadratic deviation of last played time */ + /** Quadratic deviation of last played time. */ int64_t last_played_qd; - /** number of admissible files */ + /** Number of admissible files */ unsigned num; }; struct afs_statistics statistics; @@ -41,7 +42,7 @@ struct afs_statistics statistics; * argument depends on the mood method this function is used for. It usually is * the argument given at the end of a mood line. * - * Mood score functions must return values between -100 and +100 inclisively. + * Mood score functions must return values between -100 and +100 inclusively. * Boolean score functions should always return either -100 or +100. * * \sa struct mood_method, mood_parser. @@ -49,7 +50,7 @@ struct afs_statistics statistics; typedef int mood_score_function(const struct osl_row*, void *); /** - * Preprocess a mood line. + * Pre-process a mood line. * * The mood_parser of a mood_method is called once at mood open time for each * line of the current mood definition that contains the mood_method's name as @@ -57,7 +58,7 @@ typedef int mood_score_function(const struct osl_row*, void *); * mood_parser must determine whether the line is syntactically correct and * return a positive value if so and a negative value otherwise. * - * Some mood parsers preprocess the data given in the mood line to compute a + * Some mood parsers pre-process the data given in the mood line to compute a * structure which depends of the particular mood_method and which is used * later in the mood_score_function of the mood_method. The mood_parser may * store a pointer to its structure via the second argument. @@ -115,7 +116,7 @@ struct mood_item { * * When a mood is opened, each line of its definition is investigated, and a * corresponding mood item is produced. Each mood line starts with \p accept, - * \p deny, or \p score which determins the type of the mood line. For each + * \p deny, or \p score which determines the type of the mood line. For each * such type a linked list is maintained whose entries are the mood items. * * \sa mood_item, mood_open(). @@ -187,34 +188,26 @@ static int mm_played_rarely_parser(const char *arg, __a_unused void **ignored) return 1; } -static int mm_name_like_score_function(const struct osl_row *row, void *preg) +static int mm_name_like_score_function(const struct osl_row *row, void *data) { char *path; int ret = get_audio_file_path_of_row(row, &path); if (ret < 0) return 0; - ret = regexec((regex_t *)preg, path, 42, NULL, 0); - return (ret == REG_NOMATCH)? -100 : 100; + ret = fnmatch(data, path, 0); + return ret? -100 : 100; } -static int mm_name_like_parser(const char *arg, void **regex) +static int mm_name_like_parser(const char *arg, void **data) { - regex_t *preg = para_malloc(sizeof(*preg)); - int ret = regcomp(preg, arg, REG_NOSUB); - - if (ret) { - free(preg); - return -E_MOOD_REGEX; - } - *regex = preg; + *data = para_strdup(arg); return 1; } -static void mm_name_like_cleanup(void *preg) +static void mm_name_like_cleanup(void *data) { - regfree(preg); - free(preg); + free(data); } static int mm_is_set_parser(const char *arg, void **bitnum) @@ -277,6 +270,8 @@ static int compute_mood_score(const struct osl_row *aft_row, struct mood *m, list_for_each_entry(item, &m->accept_list, mood_item_node) if (add_item_score(aft_row, item, &score, &score_arg_sum) > 0) match = 1; + if (list_empty(&m->accept_list)) + PARA_NOTICE_LOG("accrpt list empty\n"); /* reject if there is no matching entry in the accept list */ if (!match && !list_empty(&m->accept_list)) return -E_NOT_ADMISSIBLE; @@ -760,7 +755,7 @@ static int add_if_admissible(struct osl_row *aft_row, void *data) * * \param n Number of elements. * \param old_qd The quadratic deviation before the change. - * \param old_val The value that was repaced. + * \param old_val The value that was replaced. * \param new_val The replacement value. * \param old_sum The sum of all elements before the update. * @@ -832,7 +827,7 @@ static int delete_from_statistics_and_score_table(const struct osl_row *aft_row) } /** - * Delete one entry from the statitics and from the score table. + * Delete one entry from the statistics and from the score table. * * \param aft_row The audio file which is no longer admissible. *