]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
Merge branch 't/versioning_improvements'
authorAndre Noll <maan@systemlinux.org>
Mon, 1 Jul 2013 19:06:48 +0000 (21:06 +0200)
committerAndre Noll <maan@systemlinux.org>
Mon, 1 Jul 2013 19:11:22 +0000 (21:11 +0200)
Cooking for ~2 weeks.

15e99a version.c: Mark version_git() as const.
9bdebf Remove CODENAME macro.
be2f6b gui: Use version_single_line().
d60dae Improve man page layout.
5dbc9a afh/play: Include supported audio formats in help output.
042767 Use self-made help to avoid recompilations on version changes.
48f1fc Provide "purpose" texts.
aa74a9 Revamp ggo help.
9f7a49 afh_recv: Replace ggo text section by description.
b59e0e Make gengetopt descriptions work.
06b3e7 Introduce version.c to limit recompilation on version changes.
75feac Make all commands print git version and improve version string.
b01605 Avoid unwanted log messages during startup.
625fdb Don't check return value of command line parsers unnecessarily.
533b03 Build receivers, filters and writers without -h and -V support.
b59a3c filter: Wrap lines in the available filter list.
9e56d3 audioc: Print config file errors.
e5264d doc: Rewrite udp sender description
5ec373 client: Fix typo in comment.
6d5159 client: Remove duplicate include.

Makefile.in
NEWS
audioc.c
audiod_command.c
client.c
compress_filter.c
gui.c
interactive.c
oss_mix.c
play.c
web/download.in.html

index e5d87abec1602670e507f104bf9fb7a6b2905d42..f82afd7b88f65a9ad2d75032ca401d0445025272 100644 (file)
@@ -181,6 +181,10 @@ $(object_dir)/mp3dec_filter.o: mp3dec_filter.c | $(object_dir)
        @[ -z "$(Q)" ] || echo 'CC $<'
        $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @mad_cppflags@ $<
 
+$(object_dir)/compress_filter.o: compress_filter.c | $(object_dir)
+       @[ -z "$(Q)" ] || echo 'CC $<'
+       $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) -O3 $<
+
 $(object_dir)/aacdec_filter.o: aacdec_filter.c | $(object_dir)
        @[ -z "$(Q)" ] || echo 'CC $<'
        $(Q) $(CC) -c -o $@ $(CPPFLAGS) $(DEBUG_CPPFLAGS) @faad_cppflags@ $<
diff --git a/NEWS b/NEWS
index 07481964e2400d42caeb0db78bf3d66bbbe44509..866904e32955d84a72ff8ba5d9e811a99de975fb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -8,7 +8,13 @@
          by clock_gettime() on systems which support it.
        - Speed and usability improvements for para_gui.
        - para_client now restores the fd flags of stdin and stdout
-         on shutdown
+         on shutdown.
+       - Improved manual pages.
+       - Consistent version strings for all executables.
+       - Reduced depencies on generated files result in fewer
+         recompilations on changes.
+       - Performance improvements for the compress filter.
+       - Improved downloads web page.
 
 -----------------------------------------
 0.4.12 (2012-12-20) "volatile relativity"
index 164a1554f0ee2ceba94f6a509ea4911fba8a66f9..0edab366efe6ef6fa50f99c22b9ffa3492494640 100644 (file)
--- a/audioc.c
+++ b/audioc.c
@@ -43,6 +43,25 @@ static char *concat_args(unsigned argc, char * const *argv)
        return buf;
 }
 
+static int connect_audiod(const char *sname, char *args)
+{
+       int fd = -1, ret;
+
+       ret = connect_local_socket(sname);
+       if (ret < 0)
+               goto fail;
+       fd = ret;
+       ret = send_cred_buffer(fd, args);
+       if (ret < 0)
+               goto fail;
+       return fd;
+fail:
+       PARA_ERROR_LOG("could not connect %s\n", sname);
+       if (fd >= 0)
+               close(fd);
+       return ret;
+}
+
 #ifdef HAVE_READLINE
 #include "list.h"
 #include "sched.h"
@@ -147,8 +166,6 @@ static int audioc_i9e_line_handler(char *line)
 {
        char *args = NULL;
        int ret;
-       if (!line || !*line)
-               return 0;
 
        PARA_DEBUG_LOG("line: %s\n", line);
        ret = create_argv(line, " ", &conf.inputs);
@@ -157,15 +174,14 @@ static int audioc_i9e_line_handler(char *line)
        conf.inputs_num = ret;
        args = concat_args(conf.inputs_num, conf.inputs);
        free_argv(conf.inputs);
+       if (!args)
+               return 0;
        conf.inputs_num = 0; /* required for audioc_cmdline_parser_free() */
-       ret = connect_local_socket(socket_name);
+       ret = connect_audiod(socket_name, args);
        if (ret < 0)
                goto out;
        at->fd = ret;
        ret = mark_fd_nonblocking(at->fd);
-       if (ret < 0)
-               goto close;
-       ret = send_cred_buffer(at->fd, args);
        if (ret < 0)
                goto close;
        free(args);
@@ -330,21 +346,16 @@ int main(int argc, char *argv[])
                interactive_session();
        args = concat_args(conf.inputs_num, conf.inputs);
 
-       ret = connect_local_socket(socket_name);
+       ret = connect_audiod(socket_name, args);
        free(socket_name);
-       if (ret < 0) {
-               PARA_EMERG_LOG("failed to connect to local socket\n");
+       if (ret < 0)
                goto out;
-       }
        fd = ret;
-       ret = send_cred_buffer(fd, args);
+       ret = mark_fd_blocking(STDOUT_FILENO);
        if (ret < 0)
                goto out;
        bufsize = conf.bufsize_arg;
        buf = para_malloc(bufsize);
-       ret = mark_fd_blocking(STDOUT_FILENO);
-       if (ret < 0)
-               goto out;
        do {
                size_t n = ret = recv_bin_buffer(fd, buf, bufsize);
                if (ret <= 0)
index 2f3726faed46a8d004d4111a9e503a70851af511..b49d659e0ac0bd784b2002b941b3471540ee5ac9 100644 (file)
@@ -442,7 +442,7 @@ int handle_connect(int accept_fd, fd_set *rfds)
        if (ret < 0)
                goto out;
        ret = create_argv(buf, "\n", &argv);
-       if (ret < 0)
+       if (ret <= 0)
                goto out;
        argc = ret;
        //PARA_INFO_LOG("argv[0]: %s, argc = %d\n", argv[0], argc);
index 3587a971abe9f4ee4b72c7252533de0fa3af0d6c..2d6ef31f590bca1736d458cc61c4fbe67459641b 100644 (file)
--- a/client.c
+++ b/client.c
@@ -445,11 +445,9 @@ static int client_i9e_line_handler(char *line)
        int ret;
 
        client_disconnect(ct);
-       if (!line || !*line)
-               return 0;
-       PARA_DEBUG_LOG("line handler: %s\n", line);
+       PARA_DEBUG_LOG("line: %s\n", line);
        ret = make_client_argv(line);
-       if (ret < 0)
+       if (ret <= 0)
                return ret;
        ret = client_connect(ct, &sched, NULL, NULL);
        if (ret < 0)
index f6108c752ab97bb87228ea6cfe118b7003673cd3..0c0200e7e3b522af5aad7bb0a9f86f7e32024218 100644 (file)
@@ -74,18 +74,23 @@ next_buffer:
                op = para_malloc(length);
        for (i = 0; i < length / 2; i++) {
                /* be careful in that heat, my dear */
-               int sample = *ip++, adjusted_sample = (PARA_ABS(sample) *
-                       pcd->current_gain) >> gain_shift;
-               if (adjusted_sample > 32767) { /* clip */
-                       PARA_NOTICE_LOG("clip: sample: %d, adjusted sample: %d\n",
-                               sample, adjusted_sample);
-                       adjusted_sample = 32767;
+               int sample = *ip++;
+               bool neg = false;
+
+               if (sample < 0) {
+                       sample = -sample;
+                       neg = true;
+               }
+               sample *= pcd->current_gain;
+               sample >>= gain_shift;
+               if (sample > 32767) { /* clip */
+                       sample = 32767;
                        pcd->current_gain = (3 * pcd->current_gain +
                                (1 << pcd->conf->inertia_arg)) / 4;
                        pcd->peak = 0;
-               } else
-                       pcd->peak = PARA_MAX(pcd->peak, adjusted_sample);
-               op[i] = sample >= 0? adjusted_sample : -adjusted_sample;
+               } else if (sample > pcd->peak)
+                       pcd->peak = sample;
+               op[i] = neg? -sample : sample;
                if (++pcd->num_samples & mask)
                        continue;
 //             PARA_DEBUG_LOG("gain: %u, peak: %u\n", pcd->current_gain,
diff --git a/gui.c b/gui.c
index 4d2c9f72a5fe7ba303653654df82fc84d3f4ed0e..baab0bd905e56fee0a7a821e0c536e15b532db5f 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -294,7 +294,7 @@ static char *configfile_exists(void)
 static void add_spaces(WINDOW* win, unsigned int num)
 {
        char space[] = "                                ";
-       unsigned sz = sizeof(space);
+       unsigned sz = sizeof(space) - 1; /* number of spaces */
 
        while (num >= sz)  {
                waddstr(win, space);
index f281901248e3aebe878553220dda938d1c3fbece..43cb99f2781979e74b66eef640fadb7878f30aeb 100644 (file)
@@ -272,6 +272,7 @@ static void clear_bottom_line(void)
        rl_redisplay();
        wipe_bottom_line(); /* wipe out the prompt */
        rl_insert_text(text);
+       free(text);
        rl_point = point;
 }
 
@@ -290,21 +291,25 @@ static bool input_available(void)
 static void i9e_line_handler(char *line)
 {
        int ret;
+       struct btr_node *dummy;
 
+       if (!line) {
+               i9ep->input_eof = true;
+               return;
+       }
+       if (!*line)
+               goto free_line;
+       rl_set_prompt("");
+       dummy = btr_new_node(&(struct btr_node_description)
+               EMBRACE(.name = "dummy line handler"));
+       i9e_attach_to_stdout(dummy);
        ret = i9ep->ici->line_handler(line);
        if (ret < 0)
                PARA_WARNING_LOG("%s\n", para_strerror(-ret));
-       rl_set_prompt("");
-       if (line) {
-               if (!*line)
-                       rl_set_prompt(i9ep->ici->prompt);
-               else
-                       add_history(line);
-               free(line);
-       } else {
-               rl_set_prompt("");
-               i9ep->input_eof = true;
-       }
+       add_history(line);
+       btr_remove_node(&dummy);
+free_line:
+       free(line);
 }
 
 static int i9e_post_select(__a_unused struct sched *s, __a_unused struct task *t)
index 9fe865045a8e96006813d48b4dc0ff59164dd460..5182ad238b81f706ebac2f6abdcaec3859b809dc 100644 (file)
--- a/oss_mix.c
+++ b/oss_mix.c
@@ -56,8 +56,10 @@ static int oss_mix_open(const char *dev, struct mixer_handle **handle)
                dev = "/dev/mixer";
        PARA_INFO_LOG("opening %s\n", dev);
        ret = para_open(dev, O_RDWR, 42);
-       if (ret < 0)
+       if (ret < 0) {
+               PARA_ERROR_LOG("could not open %s\n", dev);
                return ret;
+       }
        h = para_malloc(sizeof(*h));
        h->fd = ret;
        *handle = h;
diff --git a/play.c b/play.c
index e6a58fce566ee7ec7553d31d91f8386b5cef7094..6eed58ab53779dd22afb9442d002b60c71165525 100644 (file)
--- a/play.c
+++ b/play.c
@@ -974,15 +974,7 @@ out:
 
 static int play_i9e_line_handler(char *line)
 {
-       struct play_task *pt = &play_task;
-       int ret;
-
-       if (line == NULL || !*line)
-               return 0;
-       ret = run_command(line, pt);
-       if (ret < 0)
-               return ret;
-       return 0;
+       return run_command(line, &play_task);
 }
 
 static int play_i9e_key_handler(int key)
index 563b61af5586402880d252cddcff5df1ebb4ce57..393fce9352d65a48f751735b886f5f57473dbfe3 100644 (file)
@@ -1,13 +1,73 @@
 <h1>Download</h1>
 <hr>
 
-<p> Clone the git repository by executing </p>
+Paraslash is only available as source code, no binary packages are
+provided at this point. There are several ways to download the source:
 
-<p> <b> git clone git://paraslash.systemlinux.org/git paraslash </b> </p>
+<ul>
+       <li> <em> git</em>.
 
-<p> Or grab the <a href="releases/paraslash-git.tar.bz2">tarball</a>
-of the current master branch, or download the latest version from the
-<a href="releases/">download directory</a>. All regular releases are
-<a href="PUBLIC_KEY">cryptographically signed</a>. Since development
-takes place in separate topic branches the master branch is expected
-to be more stable than any of the released versions. </p>
+               Clone the git repository by executing
+
+               <p> <pre> <kbd> git clone git://paraslash.systemlinux.org/git paraslash </kbd> </pre> </p>
+
+               <p> The repository contains the full history of the
+               project since 2006, all work in progress and the source
+               code for the web pages. Choosing this option allows to
+               check out any of the four integration branches maint,
+               master, next, pu (see the
+
+               <a href="manual.html#git_branches">git_branches</a>
+
+               section of the manual). All previous releases
+               correspond to tagged commits and may be checked out
+               as well. Since development takes place in separate
+               topic branches the master branch is expected to be
+               more stable than any of the released versions. </p>
+
+               <p> Compiling from git requires additional tools,
+               notably the autoconf package must be installed. </p>
+
+       </li>
+
+       <li> <em> regular releases</em>.
+
+               All released versions can be downloaded as compressed
+               tarballs from the
+
+               <a href="releases/">download directory</a>.
+
+               These tarballs are
+
+               <a href="PUBLIC_KEY">cryptographically signed</a>
+
+               and contain a pre-generated configure script. They
+               can be compiled and installed without autoconf.
+
+       </li>
+
+       <li> <em>master tarballs</em>.
+
+               Whenever significant changes are incorporated a
+
+               <a href="releases/paraslash-git.tar.bz2">tarball</a>
+
+               of the current master branch is created. All changes in
+               this tarball will be included in the next release. Like
+               for regular releases, a configure script is provided
+               for convenience.
+
+       </li>
+
+       <li> <em>gitweb snapshots</em>.
+
+               The
+
+                       <a href="/gitweb/gitweb.cgi?p=.git;a=summary">gitweb</a>
+
+               page contains a snapshot link for each revision. This
+               allows to get a specific revision without downloading
+               the full history.
+
+       </li>
+</ul>