projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
audiod: Implement --config-file option.
[paraslash.git]
/
mood.c
diff --git
a/mood.c
b/mood.c
index 98bbb8d90d192b410fd1b22202da8461799f57a4..cdc0745a255f994eb1a37c661cbfa1dfe1952221 100644
(file)
--- a/
mood.c
+++ b/
mood.c
@@
-13,6
+13,7
@@
#include "afh.h"
#include "afs.h"
#include "list.h"
#include "afh.h"
#include "afs.h"
#include "list.h"
+#include "ipc.h"
/**
* Contains statistical data of the currently admissible audio files.
/**
* Contains statistical data of the currently admissible audio files.
@@
-83,7
+84,7
@@
typedef void mood_cleanup_function(void *);
* Used for scoring and to determine whether a file is admissible.
*/
struct mood_method {
* Used for scoring and to determine whether a file is admissible.
*/
struct mood_method {
- /* The name of the method. */
+ /*
*
The name of the method. */
const char *name;
/** Pointer to the mood parser. */
mood_parser *parser;
const char *name;
/** Pointer to the mood parser. */
mood_parser *parser;
@@
-265,6
+266,7
@@
static int add_item_score(const struct osl_row *row, struct mood_item *item, lon
ret = get_afhi_of_row(row, &afhi);
if (ret< 0)
return ret;
ret = get_afhi_of_row(row, &afhi);
if (ret< 0)
return ret;
+ free(afhi.info_string); /* don't need the tag info */
ret = get_audio_file_path_of_row(row, &path);
if (ret< 0)
return ret;
ret = get_audio_file_path_of_row(row, &path);
if (ret< 0)
return ret;
@@
-535,42
+537,50
@@
static int check_mood(struct osl_row *mood_row, void *data)
struct osl_object mood_def;
struct mood_line_parser_data mlpd = {.line_num = 0};
struct osl_object mood_def;
struct mood_line_parser_data mlpd = {.line_num = 0};
- int ret = mood_get_name_and_def_by_row(mood_row, &mood_name, &mood_def);
+ int ret
2, ret
= mood_get_name_and_def_by_row(mood_row, &mood_name, &mood_def);
if (ret < 0) {
if (ret < 0) {
- para_printf(pb, "failed to get mood definition\n");
+ ret2 = para_printf(pb, "failed to get mood definition: %s\n",
+ para_strerror(-ret));
return ret;
}
if (!*mood_name) /* ignore dummy row */
goto out;
return ret;
}
if (!*mood_name) /* ignore dummy row */
goto out;
- para_printf(pb, "checking mood %s...\n", mood_name);
+ ret = para_printf(pb, "checking mood %s...\n", mood_name);
+ if (ret < 0)
+ goto out;
ret = for_each_line_ro(mood_def.data, mood_def.size,
parse_mood_line, &mlpd);
if (ret < 0)
ret = for_each_line_ro(mood_def.data, mood_def.size,
parse_mood_line, &mlpd);
if (ret < 0)
- para_printf(pb, "%s line %u: %s\n", mood_name, mlpd.line_num,
+
ret2 =
para_printf(pb, "%s line %u: %s\n", mood_name, mlpd.line_num,
para_strerror(-ret));
out:
osl_close_disk_object(&mood_def);
para_strerror(-ret));
out:
osl_close_disk_object(&mood_def);
- return
1
;
+ return
ret
;
}
/**
* Check all moods for syntax errors.
*
}
/**
* Check all moods for syntax errors.
*
+ * \param fd The afs socket.
* \param query Unused.
* \param query Unused.
- * \param result: Contains check messages.
*/
*/
-int mood_check_callback(__a_unused const struct osl_object *query,
- struct osl_object *result)
+void mood_check_callback(int fd, __a_unused const struct osl_object *query)
{
{
- struct para_buffer pb = {.buf = NULL};
+ struct para_buffer pb = {
+ .max_size = SHMMAX,
+ .private_data = &fd,
+ .max_size_handler = pass_buffer_as_shm
+ };
- para_printf(&pb, "checking moods...\n");
+ int ret = para_printf(&pb, "checking moods...\n");
+ if (ret < 0)
+ return;
osl_rbtree_loop(moods_table, BLOBCOL_ID, &pb,
check_mood);
osl_rbtree_loop(moods_table, BLOBCOL_ID, &pb,
check_mood);
- result->data = pb.buf;
-
result->size = pb.size
;
-
return 1
;
+ if (pb.offset)
+
pass_buffer_as_shm(pb.buf, pb.offset, &fd)
;
+
free(pb.buf)
;
}
#if 0
}
#if 0