From: Andre Noll Date: Tue, 29 Nov 2011 07:36:49 +0000 (+0100) Subject: Merge branch 't/flac' X-Git-Tag: v0.4.9~2 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=f48194d3ff2a3983f21cab1553fbe29529f2e790;hp=-c Merge branch 't/flac' --- f48194d3ff2a3983f21cab1553fbe29529f2e790 diff --combined NEWS index 0b8b33e8,a79cc29f..8bb2862e --- a/NEWS +++ b/NEWS @@@ -2,6 -2,6 +2,10 @@@ 0.4.9 (to be announced) "hybrid causality" ------------------------------------------ ++Support for another audio format and many small improvements/fixes ++all over the place. ++ ++ - Support for flac, the free lossless audio codec. - Fix for an endless loop in the mp3 decoder for certain (corrupt) mp3 files. - autogen.sh now detects a distcc setup and adjusts the @@@ -15,11 -15,6 +19,11 @@@ communication between para_server and para_audiod. - The alsa writer eats up less CPU cycles when configured to use the DMIX plugin. + - Simplified and unified receiver code. + - Makefile cleanups. + - Commands which print a list of matching audio files now + emit a meaningful error message if no audio file matched the + given pattern(s). -------------------------------------- 0.4.8 (2011-08-19) "nested assignment" diff --combined aft.c index f6d0c4b3,8c31906a..d2113f1c --- a/aft.c +++ b/aft.c @@@ -107,6 -107,8 +107,8 @@@ struct ls_widths unsigned short num_played_width; /** size of the amp field. */ unsigned short amp_width; + /** size of the audio format field. */ + unsigned short audio_format_width; }; /** Data passed from the ls command handler to its callback function. */ @@@ -902,7 -904,7 +904,7 @@@ static int print_list_item(struct ls_da "%*d " /* image_id */ "%*d " /* lyrics_id */ "%*d " /* bitrate */ - "%s " /* audio format */ + "%*s " /* audio format */ "%*d " /* frequency */ "%d " /* channels */ "%s " /* duration */ @@@ -914,6 -916,7 +916,7 @@@ w->image_id_width, afsi->image_id, w->lyrics_id_width, afsi->lyrics_id, w->bitrate_width, afhi->bitrate, + w->audio_format_width, audio_format_name(afsi->audio_format_id), w->frequency_width, afhi->frequency, afhi->channels, @@@ -1328,6 -1331,8 +1331,8 @@@ static int prepare_ls_row(struct osl_ro w->duration_width = PARA_MAX(w->duration_width, num_digits); GET_NUM_DIGITS(d->afsi.amp, &num_digits); w->amp_width = PARA_MAX(w->amp_width, num_digits); + num_digits = strlen(audio_format_name(d->afsi.audio_format_id)); + w->audio_format_width = PARA_MAX(w->audio_format_width, num_digits); if (options->flags & LS_FLAG_ADMISSIBLE_ONLY) { GET_NUM_DIGITS(score, &num_digits); num_digits++; /* add one for the sign (space or "-") */ @@@ -1364,11 -1369,8 +1369,11 @@@ static void com_ls_callback(int fd, con prepare_ls_row)); if (ret < 0) goto out; - if (!opts->num_matching_paths) + if (opts->num_matching_paths == 0) { + if (opts->num_patterns > 0) + para_printf(&b, "no matches\n"); goto out; + } ret = sort_matching_paths(opts); if (ret < 0) goto out; @@@ -2023,6 -2025,8 +2028,6 @@@ struct touch_action_data struct com_touch_options *cto; /** Message buffer. */ struct para_buffer pb; - /** How many audio files matched the given pattern. */ - unsigned num_matches; }; static int touch_audio_file(__a_unused struct osl_table *table, @@@ -2069,6 -2073,7 +2074,6 @@@ if (tad->cto->amp >= 0) new_afsi.amp = tad->cto->amp; } - tad->num_matches++; save_afsi(&new_afsi, &obj); /* in-place update */ aced.aft_row = row; aced.old_afsi = &old_afsi; @@@ -2100,8 -2105,9 +2105,8 @@@ static void com_touch_callback(int fd, ret = for_each_matching_row(&pmd); if (ret < 0) ret2 = para_printf(&tad.pb, "%s\n", para_strerror(-ret)); - else - if (!tad.num_matches) - ret2 = para_printf(&tad.pb, "no matches\n"); + else if (pmd.num_matches == 0) + ret2 = para_printf(&tad.pb, "no matches\n"); if (ret2 >= 0 && tad.pb.offset) pass_buffer_as_shm(tad.pb.buf, tad.pb.offset, &fd); free(tad.pb.buf); @@@ -2197,6 -2203,8 +2202,6 @@@ struct com_rm_action_data uint32_t flags; /** Message buffer. */ struct para_buffer pb; - /** Number of audio files removed. */ - unsigned num_removed; }; static int remove_audio_file(__a_unused struct osl_table *table, @@@ -2214,6 -2222,8 +2219,6 @@@ ret = osl(osl_del_row(audio_file_table, row)); if (ret < 0) para_printf(&crd->pb, "%s: %s\n", name, para_strerror(-ret)); - else - crd->num_removed++; return ret; } @@@ -2243,11 -2253,11 +2248,11 @@@ static void com_rm_callback(int fd, con para_printf(&crd.pb, "%s\n", para_strerror(-ret)); return; } - if (!crd.num_removed && !(crd.flags & RM_FLAG_FORCE)) + if ((pmd.num_matches == 0) && !(crd.flags & RM_FLAG_FORCE)) ret = para_printf(&crd.pb, "no matches -- nothing removed\n"); - else { - if (crd.flags & RM_FLAG_VERBOSE) - ret = para_printf(&crd.pb, "removed %u files\n", crd.num_removed); + else if (crd.flags & RM_FLAG_VERBOSE) { + ret = para_printf(&crd.pb, "removed %u files\n", + pmd.num_matches); } if (ret >= 0 && crd.pb.offset) pass_buffer_as_shm(crd.pb.buf, crd.pb.offset, &fd); @@@ -2316,6 -2326,8 +2321,6 @@@ enum cpsi_flags struct cpsi_action_data { /** command line flags (see \ref cpsi_flags). */ unsigned flags; - /** Number of audio files changed. */ - unsigned num_copied; /** Message buffer. */ struct para_buffer pb; /** Values are copied from here. */ @@@ -2347,6 -2359,7 +2352,6 @@@ static int copy_selector_info(__a_unuse if (cad->flags & CPSI_FLAG_COPY_ATTRIBUTES) target_afsi.attributes = cad->source_afsi.attributes; save_afsi(&target_afsi, &target_afsi_obj); /* in-place update */ - cad->num_copied++; if (cad->flags & CPSI_FLAG_VERBOSE) { ret = para_printf(&cad->pb, "copied afsi to %s\n", name); if (ret < 0) @@@ -2389,9 -2402,9 +2394,9 @@@ out if (ret < 0) para_printf(&cad.pb, "%s\n", para_strerror(-ret)); else if (cad.flags & CPSI_FLAG_VERBOSE) { - if (cad.num_copied) + if (pmd.num_matches > 0) para_printf(&cad.pb, "copied requested afsi from %s " - "to %u files\n", source_path, cad.num_copied); + "to %u files\n", source_path, pmd.num_matches); else para_printf(&cad.pb, "nothing copied\n"); }