afs: Shutdown signals on exit.
[paraslash.git] / mm.c
diff --git a/mm.c b/mm.c
index ead20681f781427f1c1d27aec015bc64f79ff9e0..358783a193a2366fdf402506ffe3eb91a699b0d8 100644 (file)
--- a/mm.c
+++ b/mm.c
@@ -1,15 +1,11 @@
-/*
- * Copyright (C) 2007-2009 Andre Noll <maan@systemlinux.org>
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
+/* Copyright (C) 2007 Andre Noll <maan@tuebingen.mpg.de>, see file COPYING. */
 
 /** \file mm.c Paraslash's mood methods. */
 
-#include <time.h>
 #include <regex.h>
 #include <fnmatch.h>
 #include <osl.h>
+#include <lopsub.h>
 
 #include "para.h"
 #include "error.h"
@@ -18,6 +14,7 @@
 #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)
@@ -187,6 +188,22 @@ static int mm_channels_score_function(__a_unused const char *path,
        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,
@@ -204,7 +221,7 @@ struct mm_year_data {
 
 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;
@@ -352,5 +369,7 @@ const struct mood_method mood_methods[] = {
        {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}
 };