]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
Merge branch 't/wma_improvements'
authorAndre Noll <maan@systemlinux.org>
Wed, 18 Jul 2012 16:47:33 +0000 (18:47 +0200)
committerAndre Noll <maan@systemlinux.org>
Wed, 18 Jul 2012 16:47:33 +0000 (18:47 +0200)
a02611 wma: Remove exponent_sizes[] from struct private_wma_data.

Has been cooking long enough.

26 files changed:
.gitignore
Doxyfile
Makefile.in
NEWS
afs.cmd
aft.c
alsa_write.c
ao_write.c
audiod.c
audiod.cmd
audiod_command.c
buffer_tree.h
client.c
command.c
command_util.sh
configure.ac
error.h
file_write.c
gcrypt.c
ggo/makefile
mood.c
mp3dec_filter.c
oss_write.c
osx_write.c
server.cmd
write.h

index d337367bfe0325eeb6caa6b6f6982eb35bdb14c2..141424f058ffadc11a675bb511d4e712c794cb84 100644 (file)
@@ -18,7 +18,6 @@ Makefile.deps
 TODO
 NONE
 aclocal.m4
-*_command_list.c
 *_command_list.h
 *_command_list.man
 paraslash-git.tar.bz2
index 83973cfb9dc23c6d6eaacb2efe7406c74d6b5d73..3fed0c2e759c155e90534bc6f092f967f2a67f5c 100644 (file)
--- 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
index 30a5c015a6f982dd5703aa51498aa89eda347b4e..868cfeac5ad719545b210982fcc934e58b53af3c 100644 (file)
@@ -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 df54a6412db9ef55d4b580cbf7328b72f4a6e07f..7fcf7f974a402907019cd0f0805a666cee3b603c 100644 (file)
--- 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 11b163115258736e4f72760a2408c83ac832c648..f0bd26f1a1bef059126b362478526081e68e3743 100644 (file)
--- 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 2732790938442822e983205a164cc5f09185a049..f01f1868e60b1592c9bde8f0d371234edd60d23a 100644 (file)
--- 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;
index a4863a59a5bc3a426a08e6a69d333bded736d780..8c12c728e551035bd8eca071216e3c7e44060de5 100644 (file)
@@ -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,
index 6dc3192ccb710b12148bfc7a6417de3f07efd59c..93861ab63f50baf478bf74fe6f216fce6cf39f53 100644 (file)
@@ -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,
        };
index 40603c4eff782b0f945ccab6f5193e99f78b7462..93bc8da37c6e8cf16f550b9e88b8c6f2c0c5ef95 100644 (file)
--- 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;
                }
index c58907448f12eeb44551b98d113c3ef52ba9979f..6c99d4c7d272e73e686bc8a9cd1d5832b3bdf9de 100644 (file)
@@ -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
index 9d92d1c36505ee4599a507e3fbe7d0c0c8e2fc61..35b76b5f6fa277ea2aa55656f557b32ef36b5585 100644 (file)
@@ -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:
index 4d27ec7b8b1a49db01aa4a87fe94b6a7fff0e96c..a9890b9854b5bce2fce731a19d6cc44ba538c442 100644 (file)
@@ -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,
index c194e1929b9dfa2cb7704ca1f6b78dd704eb3815..f0f3b2617be6f3554250cedfafbbcc92c38f54b7 100644 (file)
--- 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);
index 72f8e04e7fe949c89bba065c857a0e7d9ab0820c..f9bace34146e28ccaf7b0632e0fa34ede51de8aa 100644 (file)
--- 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;
index 76b3445fc1557b607ef72ae9408dec38f8a54507..b37c5b03ea5516c2bad778fd82e35a9fa6da2131 100755 (executable)
@@ -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
                ;;
index c616b0a5ce67ebf7e82bfb279984c167286313df..90521dfe20b0f964f5e90bcbf87276800119fbc9 100644 (file)
@@ -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 3100b31299b3064fb47875bdbef971425e02fd11..2474e0ab87778a01da7c8c70290bc22b41d901e0 100644 (file)
--- 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
index 458c7f3e6fab40f72d66b1c7cbc790ddb0d4131f..5c5c5149ab4d27f7f8853df6a47833948da30f74 100644 (file)
@@ -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
index 926eb15f41ae479b167a0b9a694b972c6f88fcfd..aaf97d424b4e5725c025288d4dd5cc341da9a6a2 100644 (file)
--- 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)
index 48fff2e4ad765e0046d79ba5c8023c92673f99cb..9c01ae65f548b4756e8b52c4535b96451c5598e6 100644 (file)
@@ -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 bafe710c09372a7e8a1f82168324d9a64a0e633e..e905f92cc64b4e99d55691d3d9e5805e3f3985d1 100644 (file)
--- 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;
index 4bdbc6fd5dc84b6fd73e7678dd04affba1eb6c4b..6955a7423650f3b929b807b6184221d5b5773717 100644 (file)
@@ -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))
index f1e901993120008eb67a221c438b1b3f5c3a3c10..eae4167a18503b2cc8014a5069b53ce8c8eb9677 100644 (file)
@@ -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
index edb9f9230268c65703372e587e63140501e5e697..0f9d9605926a81fa5be0c4643ca6565fbe0391c2 100644 (file)
@@ -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
index d0e8f271ebca5a4f419c2cd0f8268d09365a1849..83097f1f2862a719d0b002c229d3b8fc102e5f8e 100644 (file)
@@ -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 56a9711a44af6fde00ef23f6f5d203e407daf4d0..ddf43b6932b9b894ce0dd08bb2a123691f86cdc4 100644 (file)
--- 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;
        /**