From: Andre Noll Date: Wed, 18 Jul 2012 16:47:33 +0000 (+0200) Subject: Merge branch 't/wma_improvements' X-Git-Tag: v0.4.11~4 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=c4bfb18b78b3935b8dbf68f70b219cfb2a192979;hp=a02611146dcc9eb5aac4b05e4602e58f719076ae Merge branch 't/wma_improvements' a02611 wma: Remove exponent_sizes[] from struct private_wma_data. Has been cooking long enough. --- diff --git a/.gitignore b/.gitignore index d337367b..141424f0 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,6 @@ Makefile.deps TODO NONE aclocal.m4 -*_command_list.c *_command_list.h *_command_list.man paraslash-git.tar.bz2 diff --git a/Doxyfile b/Doxyfile index 83973cfb..3fed0c2e 100644 --- a/Doxyfile +++ b/Doxyfile @@ -623,7 +623,7 @@ EXCLUDE_PATTERNS = *.cmdline.* \ gcc-compat.h \ fade.c \ config.h \ - *_command_list.[ch] \ + *_command_list.h \ *_completion.h # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names diff --git a/Makefile.in b/Makefile.in index 30a5c015..868cfeac 100644 --- a/Makefile.in +++ b/Makefile.in @@ -119,20 +119,21 @@ $(subst p,P,$(subst q,Q,$(subst r,R,$(subst s,S,$(subst t,T,\ $(subst u,U,$(subst v,V,$(subst w,W,$(subst x,X,$(subst y,Y,\ $(subst z,Z,$1)))))))))))))))))))))))))) -%_command_list.c: %.cmd - @[ -z "$(Q)" ] || echo 'GEN $@' - $(Q) ./command_util.sh c < $< >$@ -%_command_list.h: %.cmd +%_command_list.h: %.cmd %.c @[ -z "$(Q)" ] || echo 'GEN $@' $(Q) ./command_util.sh h < $< >$@ -%_command_list.man: %.cmd +%_command_list.man: %.cmd %.c @[ -z "$(Q)" ] || echo 'GEN $@' $(Q) ./command_util.sh man < $< > $@ -%_completion.h: %.cmd +%_completion.h: %.cmd %.c @[ -z "$(Q)" ] || echo 'GEN $@' $(Q) ./command_util.sh compl $(strip $(call TOUPPER,$(*F)))_COMPLETERS \ $(strip $(call TOUPPER,$(*F)))_COMMANDS < $< > $@ +server_command_list.h server_command_list.man server_completion.h: command.c +afs_command_list.h afs_command_list.man afs_completion.h: afs.c aft.c attribute.c +audiod_command_list.h audiod_command_list.man audiod_completion.h: audiod_command.c + server_command_lists_man = server_command_list.man afs_command_list.man man/man1/para_server.1: para_server $(server_command_lists_man) | $(man_dir) @[ -z "$(Q)" ] || echo 'MAN $<' diff --git a/NEWS b/NEWS index df54a641..7fcf7f97 100644 --- a/NEWS +++ b/NEWS @@ -7,7 +7,11 @@ - The --no_default_filters option of para_filter has been removed. - Several fixes and latency improvements to various decoders. + - The alsa writer now limits the prebuffer time to 500ms. - Documentation improvements. + - Overhaul of the command_util.sh script. + - Fixes for some minor problems found by the clang analyzer. + - Compiles (almost) without warnings on gcc-3. ------------------------------------------ 0.4.10 (2012-03-30) "heterogeneous vacuum" diff --git a/afs.cmd b/afs.cmd index 11b16311..f0bd26f1 100644 --- a/afs.cmd +++ b/afs.cmd @@ -1,10 +1,5 @@ -OF: afs_command_list +BN: afs SF: afs.c aft.c attribute.c -HC: Prototypes for the commands of the audio file selector. -CC: Array of commands for the audio file selector. -AT: server_command -SI: osl regex -IN: para error crypt sideband command string afh afs server list user_list SN: list of afs commands TM: mood lyr img pl --- diff --git a/aft.c b/aft.c index 27327909..f01f1868 100644 --- a/aft.c +++ b/aft.c @@ -1277,8 +1277,10 @@ static int prepare_ls_row(struct osl_row *row, void *ls_opts) ret = get_score_and_aft_row(row, &score, &aft_row); if (ret < 0) return ret; - } else + } else { aft_row = row; + score = 0; + } ret = get_audio_file_path_of_row(aft_row, &path); if (ret < 0) return ret; diff --git a/alsa_write.c b/alsa_write.c index a4863a59..8c12c728 100644 --- a/alsa_write.c +++ b/alsa_write.c @@ -72,7 +72,7 @@ static int alsa_init(struct private_alsa_write_data *pad, snd_pcm_sw_params_t *swparams; snd_pcm_uframes_t start_threshold, stop_threshold; snd_pcm_uframes_t buffer_size, period_size; - snd_output_t *log; + snd_output_t *output_log; unsigned buffer_time; int ret; const char *msg; @@ -113,6 +113,8 @@ static int alsa_init(struct private_alsa_write_data *pad, NULL); if (ret < 0 || buffer_time == 0) goto fail; + /* buffer at most 500 milliseconds */ + buffer_time = PARA_MIN(buffer_time, 500U * 1000U); msg = "could not set buffer time"; ret = snd_pcm_hw_params_set_buffer_time_near(pad->handle, hwparams, &buffer_time, NULL); @@ -161,12 +163,12 @@ static int alsa_init(struct private_alsa_write_data *pad, ret = snd_pcm_nonblock(pad->handle, 1); if (ret < 0) goto fail; - ret = snd_output_buffer_open(&log); + ret = snd_output_buffer_open(&output_log); if (ret == 0) { char *buf; PARA_INFO_LOG("dumping alsa configuration\n"); - snd_pcm_dump(pad->handle, log); - snd_output_buffer_string(log, &buf); + snd_pcm_dump(pad->handle, output_log); + snd_output_buffer_string(output_log, &buf); for (;;) { char *p = strchr(buf, '\n'); if (!p) /* omit last output line, it's empty */ @@ -175,7 +177,7 @@ static int alsa_init(struct private_alsa_write_data *pad, PARA_INFO_LOG("%s\n", buf); buf = p + 1; } - snd_output_close(log); + snd_output_close(output_log); } return 1; fail: @@ -356,7 +358,6 @@ void alsa_write_init(struct writer *w) w->pre_select = alsa_write_pre_select; w->post_select = alsa_write_post_select; w->parse_config_or_die = alsa_parse_config_or_die; - w->shutdown = NULL; /* nothing to do */ w->free_config = alsa_free_config; w->help = (struct ggo_help) { .short_help = alsa_write_args_info_help, diff --git a/ao_write.c b/ao_write.c index 6dc3192c..93861ab6 100644 --- a/ao_write.c +++ b/ao_write.c @@ -375,7 +375,6 @@ void ao_write_init(struct writer *w) w->post_select = aow_post_select; w->parse_config_or_die = aow_parse_config_or_die; w->free_config = aow_free_config; - w->shutdown = NULL; w->help = (struct ggo_help) { .short_help = ao_write_args_info_help, }; diff --git a/audiod.c b/audiod.c index 40603c4e..93bc8da3 100644 --- a/audiod.c +++ b/audiod.c @@ -1199,8 +1199,6 @@ static void status_post_select(struct sched *s, struct task *t) kill_btrn(st->ct->btrn, &st->ct->task, -E_AUDIOD_OFF); goto out; } - if (st->ct->task.error >= 0) - goto out; close_stat_pipe(); st->clock_diff_count = conf.clock_diff_count_arg; goto out; @@ -1210,8 +1208,6 @@ static void status_post_select(struct sched *s, struct task *t) size_t sz; int ret; if (st->ct->task.error < 0) { - if (st->ct->task.error >= 0) - goto out; close_stat_pipe(); goto out; } diff --git a/audiod.cmd b/audiod.cmd index c5890744..6c99d4c7 100644 --- a/audiod.cmd +++ b/audiod.cmd @@ -1,9 +1,5 @@ -OF: audiod_command_list +BN: audiod SF: audiod_command.c -HC: prototypes for the audiod command handlers -CC: array of audiod commands -AT: audiod_command -IN: list para sched audiod SN: list of audiod commands --- N: cycle diff --git a/audiod_command.c b/audiod_command.c index 9d92d1c3..35b76b5f 100644 --- a/audiod_command.c +++ b/audiod_command.c @@ -29,6 +29,9 @@ extern struct sched sched; extern char *stat_item_values[NUM_STAT_ITEMS]; + +struct audiod_command audiod_cmds[] = {DEFINE_AUDIOD_CMD_ARRAY}; + /** Iterate over the array of all audiod commands. */ #define FOR_EACH_COMMAND(c) for (c = 0; audiod_cmds[c].name; c++) @@ -249,7 +252,7 @@ static int dump_commands(int fd) * to each individual command to close the fd if necessary. */ -int com_help(int fd, int argc, char **argv) +static int com_help(int fd, int argc, char **argv) { int i, ret; char *buf; @@ -284,7 +287,7 @@ out: return ret; } -int com_tasks(int fd, __a_unused int argc, __a_unused char **argv) +static int com_tasks(int fd, __a_unused int argc, __a_unused char **argv) { char *tl = get_task_list(&sched); int ret = 1; @@ -296,7 +299,7 @@ int com_tasks(int fd, __a_unused int argc, __a_unused char **argv) return ret; } -int com_stat(int fd, int argc, char **argv) +static int com_stat(int fd, int argc, char **argv) { int i, ret, parser_friendly = 0; uint64_t mask = 0; @@ -342,39 +345,39 @@ int com_stat(int fd, int argc, char **argv) return ret; } -int com_grab(int fd, int argc, char **argv) +static int com_grab(int fd, int argc, char **argv) { return grab_client_new(fd, argc, argv, &sched); } -__noreturn int com_term(int fd, __a_unused int argc, __a_unused char **argv) +__noreturn static int com_term(int fd, __a_unused int argc, __a_unused char **argv) { close(fd); clean_exit(EXIT_SUCCESS, "terminating on user request"); } -int com_on(int fd, __a_unused int argc, __a_unused char **argv) +static int com_on(int fd, __a_unused int argc, __a_unused char **argv) { audiod_status = AUDIOD_ON; close(fd); return 1; } -int com_off(int fd, __a_unused int argc, __a_unused char **argv) +static int com_off(int fd, __a_unused int argc, __a_unused char **argv) { audiod_status = AUDIOD_OFF; close(fd); return 1; } -int com_sb(int fd, __a_unused int argc, __a_unused char **argv) +static int com_sb(int fd, __a_unused int argc, __a_unused char **argv) { audiod_status = AUDIOD_STANDBY; close(fd); return 1; } -int com_cycle(int fd, int argc, char **argv) +static int com_cycle(int fd, int argc, char **argv) { switch (audiod_status) { case AUDIOD_ON: diff --git a/buffer_tree.h b/buffer_tree.h index 4d27ec7b..a9890b98 100644 --- a/buffer_tree.h +++ b/buffer_tree.h @@ -196,7 +196,7 @@ void btr_splice_out_node(struct btr_node *btrn); void btr_pushdown(struct btr_node *btrn); void *btr_context(struct btr_node *btrn); void btr_merge(struct btr_node *btrn, size_t dest_size); -void btr_log_tree(struct btr_node *btrn, int loglevel); +void btr_log_tree(struct btr_node *btrn, int ll); void btr_pushdown_one(struct btr_node *btrn); bool btr_inplace_ok(struct btr_node *btrn); int btr_node_status(struct btr_node *btrn, size_t min_iqs, diff --git a/client.c b/client.c index c194e192..f0f3b261 100644 --- a/client.c +++ b/client.c @@ -307,7 +307,7 @@ static void setatt_completer(struct i9e_completion_info *ci, free(orig); } sl[2 * num_atts] = NULL; - ret = i9e_extract_completions(ci->word, sl, &cr->matches); + i9e_extract_completions(ci->word, sl, &cr->matches); out: free(buf); free_argv(sl); diff --git a/command.c b/command.c index 72f8e04e..f9bace34 100644 --- a/command.c +++ b/command.c @@ -36,6 +36,9 @@ #include "signal.h" #include "version.h" +struct server_command afs_cmds[] = {DEFINE_AFS_CMD_ARRAY}; +struct server_command server_cmds[] = {DEFINE_SERVER_CMD_ARRAY}; + /** Commands including options must be shorter than this. */ #define MAX_COMMAND_LEN 32768 @@ -314,7 +317,7 @@ fail: return ret; } -int com_sender(struct command_context *cc) +static int com_sender(struct command_context *cc) { int i, ret = 0; char *msg = NULL; @@ -371,7 +374,7 @@ int com_sender(struct command_context *cc) } /* server info */ -int com_si(struct command_context *cc) +static int com_si(struct command_context *cc) { int i, ret; char *msg, *ut, *sender_info = NULL; @@ -414,7 +417,7 @@ int com_si(struct command_context *cc) } /* version */ -int com_version(struct command_context *cc) +static int com_version(struct command_context *cc) { char *msg; size_t len; @@ -495,7 +498,7 @@ out: #undef EMPTY_STATUS_ITEMS /* stat */ -int com_stat(struct command_context *cc) +static int com_stat(struct command_context *cc) { int i, ret; struct misc_meta_data tmp, *nmmd = &tmp; @@ -605,7 +608,7 @@ static struct server_command *get_cmd_ptr(const char *name, char **handler) } /* help */ -int com_help(struct command_context *cc) +static int com_help(struct command_context *cc) { struct server_command *cmd; char *perms, *handler, *buf; @@ -644,7 +647,7 @@ int com_help(struct command_context *cc) } /* hup */ -int com_hup(struct command_context *cc) +static int com_hup(struct command_context *cc) { if (cc->argc != 1) return -E_COMMAND_SYNTAX; @@ -653,7 +656,7 @@ int com_hup(struct command_context *cc) } /* term */ -int com_term(struct command_context *cc) +static int com_term(struct command_context *cc) { if (cc->argc != 1) return -E_COMMAND_SYNTAX; @@ -661,7 +664,7 @@ int com_term(struct command_context *cc) return 1; } -int com_play(struct command_context *cc) +static int com_play(struct command_context *cc) { if (cc->argc != 1) return -E_COMMAND_SYNTAX; @@ -673,7 +676,7 @@ int com_play(struct command_context *cc) } /* stop */ -int com_stop(struct command_context *cc) +static int com_stop(struct command_context *cc) { if (cc->argc != 1) return -E_COMMAND_SYNTAX; @@ -686,7 +689,7 @@ int com_stop(struct command_context *cc) } /* pause */ -int com_pause(struct command_context *cc) +static int com_pause(struct command_context *cc) { if (cc->argc != 1) return -E_COMMAND_SYNTAX; @@ -701,7 +704,7 @@ int com_pause(struct command_context *cc) } /* next */ -int com_next(struct command_context *cc) +static int com_next(struct command_context *cc) { if (cc->argc != 1) return -E_COMMAND_SYNTAX; @@ -713,7 +716,7 @@ int com_next(struct command_context *cc) } /* nomore */ -int com_nomore(struct command_context *cc) +static int com_nomore(struct command_context *cc) { if (cc->argc != 1) return -E_COMMAND_SYNTAX; @@ -725,7 +728,7 @@ int com_nomore(struct command_context *cc) } /* ff */ -int com_ff(struct command_context *cc) +static int com_ff(struct command_context *cc) { long promille; int ret, backwards = 0; @@ -764,7 +767,7 @@ out: } /* jmp */ -int com_jmp(struct command_context *cc) +static int com_jmp(struct command_context *cc) { long unsigned int i; int ret; diff --git a/command_util.sh b/command_util.sh index 76b3445f..b37c5b03 100755 --- a/command_util.sh +++ b/command_util.sh @@ -1,6 +1,5 @@ #!/usr/bin/env bash - read_header() { local key value i @@ -10,36 +9,12 @@ read_header() ---) break ;; - HC:) - header_comment="$value" - ;; - CC:) - c_file_comment="$value" - ;; - OF:) - output_file="$value" - array_name=${value%command_list}cmds + BN:) + base_name="$value" ;; SF:) source_files="$value" ;; - AT:) - array_type="$value" - ;; - SI:) - for i in $value; do - system_includes="$system_includes -#include <$i.h>" - done - ;; - IN:) - for i in $value; do - includes="$includes -#include \"$i.h\"" - done - includes="$includes -#include \"$output_file.h\"" - ;; SN:) section_name="$value" ;; @@ -47,11 +22,6 @@ read_header() template_members="$value" esac done - if test -z "$header_comment" -o -z "$c_file_comment" \ - -o -z "$output_file"; then - echo "header error" 1&>2 - exit 1 - fi } read_one_command() @@ -193,56 +163,53 @@ com_man() done } -dump_proto() +make_proto() { - local source_file match="" - - echo '/**' - echo " * $desc_txt" - echo ' *' - echo " * Usage: $usage_txt" - echo ' * ' - echo "$help_txt" | sed -e 's/^/ * /g' - echo ' */' + local regex='\(__noreturn \)*\(static \)*int com_' + local source_file match="" all_commands CR=' +' if test -n "$prototype"; then - echo "$prototype" - echo + result="$prototype$CR" return fi + all_commands="$(cat $source_files | grep "$regex")" + result= for source_file in $source_files; do - match=$(grep "^\(__noreturn \)*int com_$name_txt(" $source_file | head -n 1 | sed -e 's/$/;/1') + match=$(grep "$regex$name_txt(" <<< "$all_commands" | head -n 1 | sed -e 's/$/;/1') if test -n "$match"; then - echo "$match" + result="$result$match$CR" break fi done - echo } -dump_array_member() +make_array_member() { - local TAB=' ' - echo '{' - echo ".name = \"$name_txt\"," - echo ".handler = com_$name_txt," + local TAB=' ' CR=' +' + local tmp + + result="{.name = \"$name_txt\", .handler = com_$name_txt, " if test -n "$perms_txt"; then - echo ".perms = $perms_txt," + result="$result .perms = $perms_txt," fi - echo ".description = \"$desc_txt\"," - echo ".usage = \"$usage_txt\"," - echo ".help = " - printf "%s\n" "$help_txt" | sed -e 's/^/\"/g' -e 's/$/\\n\"/g' \ - -e "s/$TAB/\\\t/g" - echo '},' + result="$result.description = \"$desc_txt\", .usage = \"$usage_txt\", \\$CR .help = " + tmp="$(printf "%s\n" "$help_txt" | sed -e 's/^/\"/g' -e 's/$/\\n\"/g' \ + -e "s/$TAB/\\\t/g" -e's/$/\\/g')" + result="$result$tmp$CR}, \\$CR" } -dump_completion() +make_completion() { - echo " {.name = \"$name_txt\", .completer = ${name_txt}_completer}, \\" + local CR=' +' + result=" {.name = \"$name_txt\", .completer = ${name_txt}_completer}, \\$CR" } template_loop() { + local loop_result= + local t_name="$name_txt" local t_perms="$perms_txt" local t_desc="$desc_txt" @@ -251,48 +218,31 @@ template_loop() local t_source_files="$source_files" local member for member in $template_members; do - local sed_cmd="sed -e s/@member@/$member/g" - #echo "sed_cmd: $sed_cmd" - name_txt=$(echo "$t_name" | $sed_cmd) - #name_txt="$tname" - perms_txt=$(echo "$t_perms" | $sed_cmd) - desc_txt=$(echo "$t_desc" | $sed_cmd) - usage_txt=$(echo "$t_usage" | $sed_cmd) - help_txt=$(printf "%s\n" "$t_help" | $sed_cmd) - prototype=$(echo "$template_prototype" | $sed_cmd) + name_txt="${t_name//@member@/$member}" + perms_txt="${t_perms//@member@/$member}" + desc_txt="${t_desc//@member@/$member}" + usage_txt="${t_usage//@member@/$member}" + help_txt="${t_help//@member@/$member}" + prototype="${template_prototype//@member@/$member}" + result= $1 + loop_result="$loop_result$result" done - -} - -com_c_file() -{ - echo "/** \file $output_file.c $c_file_comment */" - echo "$system_includes" - echo "$includes" - echo "struct $array_type $array_name[] = {" - while : ; do - read_one_command - if test $ret -lt 0; then - exit 1 - fi - if test $ret -eq 0; then - break - fi - if test $template -eq 0; then - dump_array_member - continue - fi - template_loop dump_array_member - done - echo '{.name = NULL}};' + result="$loop_result" + # reset global variables + name_txt="$t_name" + perms_txt="$t_perms" + desc_txt="$t_desc" + usage_txt="$t_usage" + help_txt="$t_help" + source_files="$t_source_files" } com_header() { - echo "/** \file $output_file.h $header_comment */" - echo - echo "extern struct $array_type $array_name[];" + local array_members CR=' +' + while : ; do read_one_command if test $ret -lt 0; then @@ -302,11 +252,19 @@ com_header() break fi if test $template -eq 0; then - dump_proto + make_proto + printf "%s" "$result" + make_array_member + array_members="$array_members$result" continue fi - template_loop dump_proto + template_loop make_proto + printf "%s" "$result" + template_loop make_array_member + array_members="$array_members$result" done + array_members="$array_members{.name = NULL} \\$CR" + echo "#define DEFINE_$(tr 'a-z' 'A-Z' <<< "$base_name")_CMD_ARRAY $array_members" } com_completion() @@ -322,10 +280,12 @@ com_completion() break fi if test $template -eq 0; then - dump_completion + make_completion + printf "%s" "$result" continue fi - template_loop dump_completion + template_loop make_completion + printf "%s" "$result" done echo } @@ -334,9 +294,6 @@ read_header arg="$1" shift case "$arg" in - "c") - com_c_file - ;; "h") com_header ;; diff --git a/configure.ac b/configure.ac index c616b0a5..90521dfe 100644 --- a/configure.ac +++ b/configure.ac @@ -98,7 +98,7 @@ all_errlist_objs="mp3_afh afh_common net string signal time daemon dccp_recv recv_common write_common file_write audiod_command client_common recv stdout filter stdin audioc write client exec send_common ggo udp_recv color fec fecdec_filter - prebuffer_filter audiod_command_list bitstream imdct + prebuffer_filter bitstream imdct wma_afh wma_common wmadec_filter buffer_tree crypt_common gui gui_theme sideband" @@ -125,7 +125,7 @@ audiod_cmdline_objs="add_cmdline(audiod compress_filter http_recv dccp_recv file audiod_errlist_objs="audiod signal string daemon stat net crypt_common sideband time grab_client filter_common wav_filter compress_filter amp_filter http_recv dccp_recv recv_common fd sched write_common file_write audiod_command fecdec_filter - client_common ggo udp_recv color fec prebuffer_filter audiod_command_list + client_common ggo udp_recv color fec prebuffer_filter bitstream imdct wma_common wmadec_filter buffer_tree" audiod_ldflags="-lm" audiod_audio_formats="wma" @@ -269,13 +269,11 @@ else string signal time daemon http_send close_on_fork mm crypt_common ipc dccp_send fd user_list chunk_queue afs aft mood score attribute blob playlist sched acl - send_common udp_send color fec server_command_list - afs_command_list wma_afh wma_common sideband" - + send_common udp_send color fec wma_afh wma_common sideband" all_errlist_objs="$all_errlist_objs server vss command http_send close_on_fork mm ipc dccp_send user_list chunk_queue afs aft mood score attribute blob playlist - acl udp_send server_command_list afs_command_list" + acl udp_send" server_ldflags="" server_audio_formats="mp3 wma" diff --git a/error.h b/error.h index 3100b312..2474e0ab 100644 --- a/error.h +++ b/error.h @@ -29,9 +29,6 @@ DEFINE_ERRLIST_OBJECT_ENUM; #define COLOR_ERRORS #define SIGNAL_ERRORS #define FADE_ERRORS -#define SERVER_COMMAND_LIST_ERRORS -#define AFS_COMMAND_LIST_ERRORS -#define AUDIOD_COMMAND_LIST_ERRORS #define STDOUT_ERRORS #define FILE_WRITE_ERRORS #define STDIN_ERRORS diff --git a/file_write.c b/file_write.c index 458c7f3e..5c5c5149 100644 --- a/file_write.c +++ b/file_write.c @@ -158,7 +158,6 @@ void file_write_init(struct writer *w) w->parse_config_or_die = file_write_parse_config_or_die; w->free_config = file_write_free_config; w->close = file_write_close; - w->shutdown = NULL; /* nothing to do */ w->help = (struct ggo_help) { .short_help = file_write_args_info_help, .detailed_help = file_write_args_info_detailed_help diff --git a/gcrypt.c b/gcrypt.c index 926eb15f..aaf97d42 100644 --- a/gcrypt.c +++ b/gcrypt.c @@ -499,7 +499,6 @@ static int get_private_key(const char *key_file, struct asymmetric_key **result) ret = read_bignum(cp, end, &u, NULL); if (ret < 0) goto release_q; - cp += ret; /* * OpenSSL uses slightly different parameters than gcrypt. To use these * parameters we need to swap the values of p and q and recompute u. @@ -574,7 +573,6 @@ static int get_asn_public_key(const char *key_file, struct asymmetric_key **resu ret = read_bignum(cp, end, &e, NULL); if (ret < 0) goto release_n; - cp += ret; gret = gcry_sexp_build(&sexp, &erroff, RSA_PUBKEY_SEXP, n, e); if (gret) { @@ -697,7 +695,6 @@ int get_asymmetric_key(const char *key_file, int private, key->num_bytes = ret; key->sexp = sexp; *result = key; - ret = key->num_bytes; unmap: ret2 = para_munmap(map, map_size); if (ret >= 0 && ret2 < 0) diff --git a/ggo/makefile b/ggo/makefile index 48fff2e4..9c01ae65 100644 --- a/ggo/makefile +++ b/ggo/makefile @@ -57,7 +57,7 @@ $(ggo_dir)/afh.ggo: $(ggo_dir)/loglevel.m4 $(ggo_dir)/audioc.ggo: $(ggo_dir)/loglevel.m4 $(ggo_dir)/history_file.m4 $(ggo_dir)/complete.m4 $(ggo_dir)/filter.ggo: $(ggo_dir)/loglevel.m4 $(ggo_dir)/fsck.ggo: $(ggo_dir)/loglevel.m4 -$(ggo_dir)/gui.ggo: $(ggo_dir)/loglevel.m4 +$(ggo_dir)/gui.ggo: $(ggo_dir)/loglevel.m4 $(ggo_dir)/config_file.m4 $(ggo_dir)/recv.ggo: $(ggo_dir)/loglevel.m4 $(ggo_dir)/write.ggo: $(ggo_dir)/loglevel.m4 $(ggo_dir)/client.ggo: $(ggo_dir)/loglevel.m4 $(ggo_dir)/config_file.m4 $(ggo_dir)/history_file.m4 $(ggo_dir)/complete.m4 diff --git a/mood.c b/mood.c index bafe710c..e905f92c 100644 --- a/mood.c +++ b/mood.c @@ -108,12 +108,16 @@ __a_const static uint64_t int_sqrt(uint64_t x) return res; } -/* returns 1 if row matches score item, 0 if not. */ -static int get_item_score(struct mood_item *item, const struct afs_info *afsi, +/* + * Returns true if row matches, false if it does not match. In any case score + * and score_arg_sum are set/increased accordingly. + */ +static bool get_item_score(struct mood_item *item, const struct afs_info *afsi, const struct afh_info *afhi, const char *path, long *score, long *score_arg_sum) { - int ret, match = 1; + int ret; + bool match = true; *score_arg_sum += item->random_score? 100 : PARA_ABS(item->score_arg); ret = 100; @@ -121,7 +125,7 @@ static int get_item_score(struct mood_item *item, const struct afs_info *afsi, ret = item->method->score_function(path, afsi, afhi, item->parser_data); if ((ret < 0 && !item->logical_not) || (ret >= 0 && item->logical_not)) - match = 0; /* no match */ + match = false; } if (item->random_score) *score = PARA_ABS(ret) * para_random(100); @@ -135,7 +139,8 @@ static int compute_mood_score(const struct osl_row *aft_row, struct mood *m, long *result) { struct mood_item *item; - int ret, match = 0; + int ret; + bool match; long score_arg_sum = 0, score = 0, item_score; struct afs_info afsi; struct afh_info afhi; @@ -154,27 +159,29 @@ static int compute_mood_score(const struct osl_row *aft_row, struct mood *m, return ret; /* reject audio file if it matches any entry in the deny list */ list_for_each_entry(item, &m->deny_list, mood_item_node) { - ret = get_item_score(item, &afsi, &afhi, path, &item_score, + match = get_item_score(item, &afsi, &afhi, path, &item_score, &score_arg_sum); - if (ret > 0) /* not admissible */ + if (match) /* not admissible */ return 0; score += item_score; } + match = false; list_for_each_entry(item, &m->accept_list, mood_item_node) { ret = get_item_score(item, &afsi, &afhi, path, &item_score, &score_arg_sum); if (ret == 0) continue; - match = 1; + match = true; score += item_score; } /* reject if there is no matching entry in the accept list */ if (!match && !list_empty(&m->accept_list)) return 0; list_for_each_entry(item, &m->score_list, mood_item_node) { - ret = get_item_score(item, &afsi, &afhi, path, &item_score, + match = get_item_score(item, &afsi, &afhi, path, &item_score, &score_arg_sum); - score += item_score; + if (match) + score += item_score; } if (score_arg_sum) score /= score_arg_sum; diff --git a/mp3dec_filter.c b/mp3dec_filter.c index 4bdbc6fd..6955a742 100644 --- a/mp3dec_filter.c +++ b/mp3dec_filter.c @@ -130,7 +130,7 @@ decode: ret = handle_decode_error(pmd); if (ret < 0) goto err; - ret = mad_stream_sync(&pmd->stream); + mad_stream_sync(&pmd->stream); if (pmd->stream.error == MAD_ERROR_BUFLEN) { ret = -E_MP3DEC_EOF; if (len == iqs && btr_no_parent(btrn)) diff --git a/oss_write.c b/oss_write.c index f1e90199..eae4167a 100644 --- a/oss_write.c +++ b/oss_write.c @@ -233,7 +233,6 @@ void oss_write_init(struct writer *w) w->post_select = oss_post_select; w->parse_config_or_die = oss_parse_config_or_die; w->free_config = oss_free_config; - w->shutdown = NULL; w->help = (struct ggo_help) { .short_help = oss_write_args_info_help, .detailed_help = oss_write_args_info_detailed_help diff --git a/osx_write.c b/osx_write.c index edb9f923..0f9d9605 100644 --- a/osx_write.c +++ b/osx_write.c @@ -333,7 +333,6 @@ void osx_write_init(struct writer *w) w->post_select = osx_write_post_select; w->parse_config_or_die = osx_write_parse_config_or_die; w->free_config = osx_free_config; - w->shutdown = NULL; /* nothing to do */ w->help = (struct ggo_help) { .short_help = osx_write_args_info_help, .detailed_help = osx_write_args_info_detailed_help diff --git a/server.cmd b/server.cmd index d0e8f271..83097f1f 100644 --- a/server.cmd +++ b/server.cmd @@ -1,10 +1,5 @@ -OF: server_command_list +BN: server SF: command.c -HC: prototypes for the server command handlers -CC: array of server commands -AT: server_command -SI: osl regex -IN: para error crypt sideband command string afh afs server list user_list SN: list of server commands --- N: ff diff --git a/write.h b/write.h index 56a9711a..ddf43b69 100644 --- a/write.h +++ b/write.h @@ -72,12 +72,6 @@ struct writer { * This function is assumed to succeed. */ void (*close)(struct writer_node *); - /** - * Shutdown the writer. - * - * This is a optional function pointer used for cleaning up. - */ - void (*shutdown)(struct writer_node *); /** The short and the log help text of this writer. */ struct ggo_help help; /**