/*
- * Copyright (C) 2007-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file mm.c Paraslash's mood methods. */
-#include <time.h>
#include <regex.h>
#include <fnmatch.h>
#include <osl.h>
#include "afs.h"
#include "mm.h"
+/** The comparators for numeric mood methods (year, bitrate, ...). */
#define MOOD_COMPARATORS \
MC(LESS, <) \
MC(LESS_OR_EQUAL, <=) \
MC(GREATER, >) \
MC(GREATER_OR_EQUAL, >=) \
+/** Prefix mood comparator name with "_MC", example: MC_LESS. */
#define MC(a, b) MC_ ## a,
+/** Each mood comparator is identified by an integer of this type. */
enum mood_comparator_id {MOOD_COMPARATORS NUM_MOOD_COMPARATORS};
#undef MC
+/** Stringfied mood comparator, example: "<". */
#define MC(a, b) # b,
-static const char const *mood_comparators[] = {MOOD_COMPARATORS};
+/** Array of mood comparators represented as C strings ("<", "<=", ...). */
+static const char *mood_comparators[] = {MOOD_COMPARATORS};
#undef MC
static int parse_mood_comparator(const char *word)
return mm_compare_num_score_function(afhi->channels, private);
}
+static int mm_image_id_score_function(__a_unused const char *path,
+ const struct afs_info *afsi,
+ __a_unused const struct afh_info *afhi,
+ const void *private)
+{
+ return mm_compare_num_score_function(afsi->image_id, private);
+}
+
+static int mm_lyrics_id_score_function(__a_unused const char *path,
+ const struct afs_info *afsi,
+ __a_unused const struct afh_info *afhi,
+ const void *private)
+{
+ return mm_compare_num_score_function(afsi->lyrics_id, private);
+}
+
static int mm_num_played_score_function(__a_unused const char *path,
const struct afs_info *afsi,
__a_unused const struct afh_info *afhi,
static int mm_year_parser(int argc, char **argv, void **private)
{
- int ret = -E_MOOD_SYNTAX;
+ int ret;
struct mm_year_data *mmyd = para_malloc(sizeof(*mmyd));
time_t current_time;
struct tm *gmt;
{DEFINE_COMPARE_NUM_MOOD_METHOD(frequency)},
{DEFINE_COMPARE_NUM_MOOD_METHOD(channels)},
{DEFINE_COMPARE_NUM_MOOD_METHOD(num_played)},
+ {DEFINE_COMPARE_NUM_MOOD_METHOD(image_id)},
+ {DEFINE_COMPARE_NUM_MOOD_METHOD(lyrics_id)},
{.parser = NULL}
};