mood.c: Switch to fnmatch() in mood method name_like.
authorAndre Noll <maan@systemlinux.org>
Sat, 29 Sep 2007 10:22:52 +0000 (12:22 +0200)
committerAndre Noll <maan@systemlinux.org>
Sat, 29 Sep 2007 10:22:52 +0000 (12:22 +0200)
Also, change doxygen documentation to the new style.

mood.c

diff --git a/mood.c b/mood.c
index 54867e5..56ee1c4 100644 (file)
--- a/mood.c
+++ b/mood.c
@@ -6,6 +6,7 @@
 
 /** \file mood.c Paraslash's mood handling functions. */
 
+#include <fnmatch.h>
 #include "para.h"
 #include "error.h"
 #include "afh.h"
 /**
  * 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.
  *