From: Andre Noll Date: Sun, 26 Oct 2014 12:11:41 +0000 (+0100) Subject: Merge branch 't/audiod_exit_cleanup' X-Git-Tag: v0.5.4~49 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=97ad8ac8735dfd7a514aa66e9de54f253440c17d;hp=751fface082c907983978023bdcb43540a462192 Merge branch 't/audiod_exit_cleanup' Cooked for two months. * t/audiod_exit_cleanup: audiod: Clean up by notifying tasks. --- diff --git a/INSTALL b/INSTALL index 9917afb6..4a814dc1 100644 --- a/INSTALL +++ b/INSTALL @@ -27,4 +27,6 @@ Example for cross-compiling: For details see the user manual: + http://people.tuebingen.mpg.de/maan/paraslash/manual.html +or http://paraslash.systemlinux.org/manual.html diff --git a/NEWS b/NEWS index 40ab08a1..305d9147 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,19 @@ NEWS ==== +----------------------------------------------- +0.5.4 (to be announced) "exponential alignment" +----------------------------------------------- + + - Minor cleanups to daemon.c. + - New URLs for home page and git services. + - Improved error diagnostics for the mvblob commands. + - New sender subcommand: status. + - Improved help text for server and afs commands. + - audiod memory leak fixes. + +Download: ./releases/paraslash-git.tar.bz2 + --------------------------------------------- 0.5.3 (2014-08-01) "symbolic synchronization" --------------------------------------------- diff --git a/README b/README index 24b971d3..0a0aae88 100644 --- a/README +++ b/README @@ -5,8 +5,10 @@ audio files. See the user manual for details. Distribution of paraslash is covered by the GNU GPL, version 2 unless otherwise stated. See file COPYING. -Web page: http://paraslash.systemlinux.org/ -Git URL: git://paraslash.systemlinux.org/git -Email: Andre Noll +Web page: http://people.tuebingen.mpg.de/maan/paraslash/ +Alternative web page: http://paraslash.systemlinux.org/ +Gitweb: http://git.tuebingen.mpg.de/paraslash.git/ +Git URL: git://git.tuebingen.mpg.de/paraslash.git +Email: Andre Noll Comments and bug reports are welcome. diff --git a/aac.h b/aac.h index 6e6c3402..5d544ff7 100644 --- a/aac.h +++ b/aac.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/aac_afh.c b/aac_afh.c index f354a63c..10e0a0da 100644 --- a/aac_afh.c +++ b/aac_afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/aac_common.c b/aac_common.c index ca29607a..9d566168 100644 --- a/aac_common.c +++ b/aac_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/aacdec_filter.c b/aacdec_filter.c index 7988723b..c6fe4d9c 100644 --- a/aacdec_filter.c +++ b/aacdec_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/acl.c b/acl.c index e1415050..2923523d 100644 --- a/acl.c +++ b/acl.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/acl.h b/acl.h index af68e1bc..bb9c157c 100644 --- a/acl.h +++ b/acl.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2014 Andre Noll + * Copyright (C) 2008-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/afh.c b/afh.c index 15b5e6b9..f876244d 100644 --- a/afh.c +++ b/afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2014 Andre Noll + * Copyright (C) 2008-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/afh.h b/afh.h index f0ea8124..4204108a 100644 --- a/afh.h +++ b/afh.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -58,6 +58,18 @@ struct afh_info { uint16_t bitrate; }; +/** Data about the current audio file, passed from afs to server. */ +struct audio_file_data { + /** The open file descriptor to the current audio file. */ + int fd; + /** Vss needs this for streaming. */ + struct afh_info afhi; + /** Size of the largest chunk. */ + uint32_t max_chunk_size; + /** Needed to get the audio file header. */ + uint8_t audio_format_id; +}; + /** * Structure for audio format handling. * diff --git a/afh_common.c b/afh_common.c index b06e4eb5..0e9b13ca 100644 --- a/afh_common.c +++ b/afh_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/afh_recv.c b/afh_recv.c index 92e9e839..01785d6c 100644 --- a/afh_recv.c +++ b/afh_recv.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 Andre Noll + * Copyright (C) 2011-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/afs.c b/afs.c index a17da5b4..dd0d1bcd 100644 --- a/afs.c +++ b/afs.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/afs.cmd b/afs.cmd index 91da48cb..7bb00545 100644 --- a/afs.cmd +++ b/afs.cmd @@ -5,12 +5,11 @@ TM: mood lyr img pl --- N: add P: AFS_READ | AFS_WRITE -D: Add new audio files to the database. -U: add [-l] [-f] [-v] path... -H: Each given path may be either the full path to an audio -H: file, or the full path of a directory. In case of a -H: directory, all audio files in that directory are added -H: recursively. Only absolute paths are accepted. +D: Add or update audio files. +U: add [-a] [-l] [-f] [-v] path... +H: Each path must be absolute and refer to either an audio file, or a +H: directory. In case of a directory, all audio files in that directory +H: are added recursively. Only absolute paths are accepted. H: H: Options: H: @@ -18,9 +17,9 @@ H: -a Add all files. The default is to add only files ending in a H: known suffix for a supported audio format. H: H: -l Add files lazily. If the path already exists in the -H: database, skip this file. This operation is really cheap. -H: Use it when adding large directories if only a few files -H: where added. +H: database, skip this file. This operation is really cheap. Useful +H: to update large directories after some files have been added or +H: deleted. H: H: -f Force adding/updating. Recompute the audio format handler data H: even if a file with the same path and the same hash value exists. @@ -51,7 +50,7 @@ H: -lp: parser-friendly mode H: -lm: mbox listing mode H: -lc: chunk-table listing mode H: -H: -p List full path of audio file. If not specified, only the basename +H: -p List full paths. If this option is not specified, only the basename H: of each file is printed. H: H: -a List only files that are admissible with respect to the current mood or @@ -79,9 +78,8 @@ N: lsatt P: AFS_READ D: List attributes. U: lsatt [-i] [-l] [-r] [pattern] -H: Print the list of all defined attributes which match the -H: given pattern. If no pattern is given, the full list is -H: printed. +H: Print the list of all defined attributes which match the given +H: pattern. If no pattern is given, the full list is printed. H: H: Options: H: @@ -99,9 +97,9 @@ U: setatt attribute{+|-}... pattern H: Set ('+') or unset ('-') the given attributes for all audio files matching H: pattern. Example: H: -H: setatt rock+ punk+ classic- '*foo.mp3' +H: setatt rock+ punk+ pop- '*foo.mp3' H: -H: sets the 'rock' and the 'punk' attribute but unsets the 'classic' +H: sets the 'rock' and the 'punk' attribute and unsets the 'pop' H: attribute of all files ending with 'foo.mp3'. --- N: addatt @@ -149,9 +147,10 @@ N: rm P: AFS_READ | AFS_WRITE D: Remove entries from the audio file table. U: rm [-v] [-f] [-p] pattern... -H: Delete all entries in the audio file table that match any given pattern. -H: Note that affects the table entries only; paraslash won't touch your -H: audio files in any way. +H: Delete all entries in the audio file table that match any given pattern. Note +H: that this affects the table entries only; the command won't touch your audio +H: files on disk. +H: H: Options: H: H: -v Verbose mode. Explain what is being done. @@ -166,28 +165,29 @@ H: a slash (see fnmatch(3)). --- N: touch P: AFS_READ | AFS_WRITE -D: Manipulate the afs data for all audio files matching a pattern. +D: Manipulate the afs entry of audio files. U: touch [-n=numplayed] [-l=lastplayed] [-y=lyrics_id] [-i=image_id] [-a=amp] [-v] [-p] pattern -H: If no option is given, lastplayed is set to the current time -H: and numplayed is increased by one. Otherwise, only the given -H: options are taken into account. +H: If no option is given, the lastplayed field is set to the current time +H: and the value of the numplayed field is increased by one. Otherwise, +H: only the given options are taken into account. H: H: Options: H: -H: -n Set numplayed count. The number of times afs has selected this -H: audio file for streaming. +H: -n Set the numplayed count, i.e. the number of times this audio +H: file was selected for streaming so far. H: -H: -l Set lastplayed time. The last time this audio file was selected. -H: Must be given as the number of seconds since the epoch. Example: +H: -l Set the lastplayed time, i.e. the last time this audio file was +H: selected for streaming. The argument must be a number of seconds +H: since the epoch. Example: H: H: touch -l=$(date +%s) file H: H: sets the lastplayed time of 'file' to the current time. H: -H: -y Set the lyrics id. Specify the lyrics data file associated with -H: this audio file. +H: -y Set the lyrics ID which specifies the lyrics data file associated +H: with the audio file. H: -H: -i Set the image id. Same as -y, but sets the image. +H: -i Like -y, but sets the image ID. H: H: -a Set the amplification value (0-255). This determines a scaling H: factor by which the amplitude should be multiplied in order to @@ -208,10 +208,9 @@ N: cpsi P: AFS_READ | AFS_WRITE D: Copy audio file selector info. U: cpsi [-a] [-y] [-i] [-l] [-n] [-v] source pattern... -H: If no option, or only the -v option is given, all fields of -H: the audio file selector info are copied to all files -H: matching pattern. Otherwise, only the given options are -H: taken into account. +H: If no option, or only the -v option is given, all fields of the +H: audio file selector info are copied to all files matching pattern. +H: Otherwise, only the given options are taken into account. H: H: Options: H: @@ -242,14 +241,11 @@ T: add N: add@member@ O: int com_add@member@(struct command_context *cc); P: AFS_READ | AFS_WRITE -D: Read data from stdin and add it as a blob to the @member@ table. +D: Add stdin as a blob to the @member@ table. U: add@member@ @member@_name -H: Read arbitrary binary data from stdin and send that data to -H: the audio file selector process which creates a new blob for -H: the data in the corresponding osl table. -H: -H: The names of the blobs of a table are unique. If an entry with the -H: given name already exists, its contents are replaced by the new data. +H: Read from stdin and ask the audio file selector to create a blob in the +H: corresponding osl table. If the named blob already exists, it gets replaced +H: with the new data. --- T: cat N: cat@member@ @@ -257,9 +253,7 @@ O: int com_cat@member@(struct command_context *cc); P: AFS_READ D: Dump the contents of a blob of type @member@ to stdout. U: cat@member@ @member@_name -H: This command may be used to retrieve the blob identified by -H: the given name from the corresponding osl table to which -H: they were previously added. +H: Retrieve the named blob and write it to stdout. --- T: ls N: ls@member@ @@ -267,9 +261,8 @@ O: int com_ls@member@(struct command_context *cc); P: AFS_READ D: List blobs of type @member@ matching a pattern. U: ls@member@ [-i] [-l] [-r] [pattern] -H: Print a list of the names of all blobs in the corresponding -H: osl table which match the given pattern. If no pattern is -H: given, the full list is printed. +H: Print the list of all blobs which match the given pattern. If no +H: pattern is given, the full list is printed. H: H: Options: H: @@ -287,8 +280,7 @@ O: int com_rm@member@(struct command_context *cc); P: AFS_READ | AFS_WRITE D: Remove blob(s) of type @member@ from the @member@ table. U: rm@member@ pattern... -H: Remove all blobs from the corresponding table which match -H: any given pattern. +H: Remove all blobs whose name matches any of the given patterns. --- T: mv N: mv@member@ @@ -296,4 +288,5 @@ O: int com_mv@member@(struct command_context *cc); P: AFS_READ | AFS_WRITE D: Rename a blob of type @member@. U: mv@member@ old_@member@_name new_@member@_name -H: Rename the blob identified by the first name as the second name. +H: Rename the blob identified by old_@member@_name to new_@member@_name. +H: This command fails if new_@member@_name already exists. diff --git a/afs.h b/afs.h index 7a3f963f..0b443354 100644 --- a/afs.h +++ b/afs.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -122,18 +122,6 @@ struct ls_data { unsigned char *hash; }; -/** Data about the current audio file, passed from afs to server. */ -struct audio_file_data { - /** The open file descriptor to the current audio file. */ - int fd; - /** Vss needs this for streaming. */ - struct afh_info afhi; - /** Size of the largest chunk. */ - uint32_t max_chunk_size; - /** Needed to get the audio file header. */ - uint8_t audio_format_id; -}; - /** * Codes used for communication between the server and the afs process. * diff --git a/aft.c b/aft.c index 39f95ad2..3e2c3621 100644 --- a/aft.c +++ b/aft.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/alsa_mix.c b/alsa_mix.c index c860efc8..c44c74f9 100644 --- a/alsa_mix.c +++ b/alsa_mix.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/alsa_write.c b/alsa_write.c index 32d8a50e..7a0ee5be 100644 --- a/alsa_write.c +++ b/alsa_write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/amp_filter.c b/amp_filter.c index 8b8db201..e43e45f7 100644 --- a/amp_filter.c +++ b/amp_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Andre Noll + * Copyright (C) 2009-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ao_write.c b/ao_write.c index 4cecdfd8..6e2d9ee3 100644 --- a/ao_write.c +++ b/ao_write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 Andre Noll + * Copyright (C) 2011-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/attribute.c b/attribute.c index 7777a8dd..8211cbc6 100644 --- a/attribute.c +++ b/attribute.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/audioc.c b/audioc.c index 83425a2e..001619d5 100644 --- a/audioc.c +++ b/audioc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/audiod.c b/audiod.c index 74298e3c..d9df3847 100644 --- a/audiod.c +++ b/audiod.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -1402,7 +1402,7 @@ int main(int argc, char *argv[]) writer_init(); if (conf.help_given || conf.detailed_help_given) print_help_and_die(); - drop_privileges_or_die(conf.user_arg, conf.group_arg); + daemon_drop_privileges_or_die(conf.user_arg, conf.group_arg); parse_config_or_die(); init_colors_or_die(); init_random_seed_or_die(); @@ -1420,8 +1420,8 @@ int main(int argc, char *argv[]) PARA_EMERG_LOG("%s\n", para_strerror(-ret)); exit(EXIT_FAILURE); } - log_welcome("para_audiod"); - set_server_start_time(NULL); + daemon_log_welcome("para_audiod"); + daemon_set_start_time(); set_initial_status(); FOR_EACH_SLOT(i) clear_slot(i); diff --git a/audiod.h b/audiod.h index aa98001c..484caa23 100644 --- a/audiod.h +++ b/audiod.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/audiod_command.c b/audiod_command.c index 2f2f3062..2aae0d80 100644 --- a/audiod_command.c +++ b/audiod_command.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -527,7 +527,7 @@ void audiod_status_dump(bool force) free(new); } - new = get_server_uptime_str(now); + new = daemon_get_uptime_str(now); old = stat_item_values[SI_AUDIOD_UPTIME]; if (force || !old || strcmp(old, new)) { free(old); diff --git a/bash_completion b/bash_completion index 33bf64f6..7f1aecb6 100644 --- a/bash_completion +++ b/bash_completion @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2014 Andre Noll +# Copyright (C) 2007-2014 Andre Noll # # Licensed under the GPL v2. For licencing details see COPYING. diff --git a/blob.c b/blob.c index dc71b8e3..bdff9061 100644 --- a/blob.c +++ b/blob.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -482,35 +482,51 @@ static int com_addblob(callback_function *f, struct command_context *cc) return stdin_command(cc, &arg_obj, f, afs_cb_result_handler, cc); } -/* FIXME: Print output to client, not to log file */ -static void com_mvblob_callback(struct osl_table *table, __a_unused int fd, +static void com_mvblob_callback(struct osl_table *table, int fd, const struct osl_object *query) { char *src = (char *) query->data; struct osl_object obj = {.data = src, .size = strlen(src) + 1}; char *dest = src + obj.size; struct osl_row *row; + struct para_buffer pb = { + .max_size = shm_get_shmmax(), + .private_data = &fd, + .max_size_handler = afs_max_size_handler + }; int ret = osl(osl_get_row(table, BLOBCOL_NAME, &obj, &row)); - if (ret < 0) + if (ret < 0) { + para_printf(&pb, "could not locate %s: %s\n", src, + para_strerror(-ret)); goto out; + } obj.data = dest; obj.size = strlen(dest) + 1; ret = osl(osl_update_object(table, row, BLOBCOL_NAME, &obj)); - if (ret < 0) + if (ret < 0) { + para_printf(&pb, "failed to update object %s: %s\n", dest, + para_strerror(-ret)); goto out; + } afs_event(BLOB_RENAME, NULL, table); out: - if (ret < 0) - PARA_NOTICE_LOG("%s\n", para_strerror(-ret)); + if (pb.offset) + pass_buffer_as_shm(fd, SBD_OUTPUT, pb.buf, pb.offset); + free(pb.buf); } static int com_mvblob(callback_function *f, struct command_context *cc) { + int ret; + if (cc->argc != 3) return -E_MOOD_SYNTAX; - return send_option_arg_callback_request(NULL, cc->argc - 1, - cc->argv + 1, f, NULL, NULL); + ret = send_option_arg_callback_request(NULL, cc->argc - 1, + cc->argv + 1, f, afs_cb_result_handler, cc); + if (ret < 0) + send_strerror(cc, -ret); + return ret; } #define DEFINE_BLOB_COMMAND(cmd_name, table_name, cmd_prefix) \ diff --git a/buffer_tree.c b/buffer_tree.c index 44b73c94..03696b16 100644 --- a/buffer_tree.c +++ b/buffer_tree.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Andre Noll + * Copyright (C) 2009-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/buffer_tree.h b/buffer_tree.h index e01cb906..f69fb216 100644 --- a/buffer_tree.h +++ b/buffer_tree.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Andre Noll + * Copyright (C) 2009-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/check_wav.c b/check_wav.c index a36cea9a..9d6f01a0 100644 --- a/check_wav.c +++ b/check_wav.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/check_wav.h b/check_wav.h index 5310d170..14a8362c 100644 --- a/check_wav.h +++ b/check_wav.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/chunk_queue.c b/chunk_queue.c index 5328c113..672c5f02 100644 --- a/chunk_queue.c +++ b/chunk_queue.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/chunk_queue.h b/chunk_queue.h index 946cacda..79c57f06 100644 --- a/chunk_queue.h +++ b/chunk_queue.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/client.c b/client.c index 987a637f..4c4806f9 100644 --- a/client.c +++ b/client.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/client.h b/client.h index 0a0c55cb..86148b97 100644 --- a/client.h +++ b/client.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/client_common.c b/client_common.c index c111e351..0ae163ad 100644 --- a/client_common.c +++ b/client_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/close_on_fork.c b/close_on_fork.c index eb470cf6..0e1389a6 100644 --- a/close_on_fork.c +++ b/close_on_fork.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/command.c b/command.c index eb15875c..db28b39d 100644 --- a/command.c +++ b/command.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -344,7 +344,10 @@ static int com_sender(struct command_context *cc) if (ret < 0) { if (scd.sender_num < 0) return ret; - msg = senders[scd.sender_num].help(); + if (strcmp(cc->argv[2], "status") == 0) + msg = senders[scd.sender_num].status(); + else + msg = senders[scd.sender_num].help(); return send_sb(&cc->scc, msg, strlen(msg), SBD_OUTPUT, false); } @@ -364,7 +367,7 @@ static int com_sender(struct command_context *cc) usleep(100 * 1000); continue; } - memcpy(&mmd->sender_cmd_data, &scd, sizeof(scd)); + mmd->sender_cmd_data = scd; mutex_unlock(mmd_mutex); break; } @@ -374,28 +377,20 @@ static int com_sender(struct command_context *cc) /* server info */ static int com_si(struct command_context *cc) { - int i, ret; - char *msg, *ut, *sender_info = NULL; + int ret; + char *msg, *ut; if (cc->argc != 1) return -E_COMMAND_SYNTAX; mutex_lock(mmd_mutex); - for (i = 0; senders[i].name; i++) { - char *info = senders[i].info(); - sender_info = para_strcat(sender_info, info); - free(info); - } - ut = get_server_uptime_str(now); + ut = daemon_get_uptime_str(now); ret = xasprintf(&msg, - "version: %s\n" "up: %s\nplayed: %u\n" "server_pid: %d\n" "afs_pid: %d\n" "connections (active/accepted/total): %u/%u/%u\n" "current loglevel: %s\n" - "supported audio formats: %s\n" - "%s", - version_git(), + "supported audio formats: %s\n", ut, mmd->num_played, (int)getppid(), (int)mmd->afs_pid, @@ -403,12 +398,10 @@ static int com_si(struct command_context *cc) mmd->num_commands, mmd->num_connects, conf.loglevel_arg, - AUDIO_FORMAT_HANDLERS, - sender_info + AUDIO_FORMAT_HANDLERS ); mutex_unlock(mmd_mutex); free(ut); - free(sender_info); return send_sb(&cc->scc, msg, ret, SBD_OUTPUT, false); } diff --git a/compress_filter.c b/compress_filter.c index 119e0169..edf733e3 100644 --- a/compress_filter.c +++ b/compress_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/configure.ac b/configure.ac index f0749cc6..37f2fbc6 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.61]) -AC_INIT([paraslash],[git],[maan@systemlinux.org]) +AC_INIT([paraslash],[git],[maan@tuebingen.mpg.de]) AC_CONFIG_HEADER([config.h]) AC_CONFIG_FILES([Makefile]) @@ -143,7 +143,7 @@ if test "$have_osl" = "yes"; then else AC_MSG_WARN([libosl not found, can not build para_server. Download libosl at - http://systemlinux.org/~maan/osl + http://people.tuebingen.mpg.de/maan/osl/ or execute git clone git://git.tuebingen.mpg.de/osl ]) diff --git a/crypt.c b/crypt.c index 0137e004..1678977a 100644 --- a/crypt.c +++ b/crypt.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/crypt.h b/crypt.h index 324a87b3..4b17b4c0 100644 --- a/crypt.h +++ b/crypt.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/crypt_backend.h b/crypt_backend.h index ddebe62e..040a719b 100644 --- a/crypt_backend.h +++ b/crypt_backend.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 Andre Noll + * Copyright (C) 2011-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/crypt_common.c b/crypt_common.c index fb6e1ef4..a6ba4f1e 100644 --- a/crypt_common.c +++ b/crypt_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/daemon.c b/daemon.c index 05002f4e..b0d8fd74 100644 --- a/daemon.c +++ b/daemon.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -229,7 +229,7 @@ void daemon_open_log_or_die(void) /** * Log the startup message containing the paraslash version. */ -void log_welcome(const char *whoami) +void daemon_log_welcome(const char *whoami) { PARA_INFO_LOG("welcome to %s " PACKAGE_VERSION " ("BUILD_DATE")\n", whoami); @@ -249,7 +249,7 @@ void log_welcome(const char *whoami) * * \sa getpwnam(3), getuid(2), setuid(2), getgrnam(2), setgid(2) */ -void drop_privileges_or_die(const char *username, const char *groupname) +void daemon_drop_privileges_or_die(const char *username, const char *groupname) { struct passwd *p; char *tmp; @@ -290,27 +290,20 @@ void drop_privileges_or_die(const char *username, const char *groupname) } /** - * Set the server startup time. + * Set the startup time. * - * \param startuptime The value to store as the server start time. + * This should be called once on startup. It sets the start time to the + * current time. The stored time is used for retrieving the server uptime. * - * This should be called once on startup with \a startuptime either NULL or a - * pointer to a struct timeval which contains the current time. If \a - * startuptime is NULL, the server start time is set to the current time. - * - * \sa time(2), difftime(3) \ref get_server_uptime(), \ref - * get_server_uptime_str(). + * \sa time(2), \ref daemon_get_uptime(), \ref daemon_get_uptime_str(). */ -void set_server_start_time(const struct timeval *startuptime) +void daemon_set_start_time(void) { - if (startuptime) - me->startuptime = startuptime->tv_sec; - else - time(&me->startuptime); + time(&me->startuptime); } /** - * Get the server uptime. + * Get the uptime. * * \param current_time The current time. * @@ -319,9 +312,9 @@ void set_server_start_time(const struct timeval *startuptime) * * \return This returns the server uptime in seconds, i.e. the difference * between the current time and the value stored previously via \ref - * set_server_start_time(). + * daemon_set_start_time(). */ -time_t get_server_uptime(const struct timeval *current_time) +time_t daemon_get_uptime(const struct timeval *current_time) { time_t t; @@ -334,15 +327,15 @@ time_t get_server_uptime(const struct timeval *current_time) /** * Construct a string containing the current uptime. * - * \param current_time See a \ref get_server_uptime(). + * \param current_time See a \ref daemon_get_uptime(). * * \return A dynamically allocated string of the form "days:hours:minutes". * * \sa server_uptime. */ -__malloc char *get_server_uptime_str(const struct timeval *current_time) +__malloc char *daemon_get_uptime_str(const struct timeval *current_time) { - long t = get_server_uptime(current_time); + long t = daemon_get_uptime(current_time); return make_message("%li:%02li:%02li", t / 86400, (t / 3600) % 24, (t / 60) % 60); } diff --git a/daemon.h b/daemon.h index fd435577..df9de6a3 100644 --- a/daemon.h +++ b/daemon.h @@ -4,12 +4,11 @@ void daemonize(bool parent_waits); void daemon_open_log_or_die(void); void daemon_close_log(void); -void log_welcome(const char *whoami); -void drop_privileges_or_die(const char *username, const char *groupname); -/** used for server_uptime() */ -void set_server_start_time(const struct timeval *startuptime); -time_t get_server_uptime(const struct timeval *current_time); -__malloc char *get_server_uptime_str(const struct timeval *current_time); +void daemon_log_welcome(const char *whoami); +void daemon_drop_privileges_or_die(const char *username, const char *groupname); +void daemon_set_start_time(void); +time_t daemon_get_uptime(const struct timeval *current_time); +__malloc char *daemon_get_uptime_str(const struct timeval *current_time); void daemon_set_logfile(char *logfile_name); void daemon_set_flag(unsigned flag); void daemon_clear_flag(unsigned flag); diff --git a/dccp_recv.c b/dccp_recv.c index a45b572d..9e8f8683 100644 --- a/dccp_recv.c +++ b/dccp_recv.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/dccp_send.c b/dccp_send.c index 1e95aac6..4eda3b94 100644 --- a/dccp_send.c +++ b/dccp_send.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include @@ -24,7 +23,6 @@ #include "error.h" #include "string.h" #include "afh.h" -#include "afs.h" #include "server.h" #include "net.h" #include "list.h" @@ -199,13 +197,13 @@ static const char *dccp_list_available_ccids(void) return list; } -static char *dccp_info(void) +static char *dccp_status(void) { - char *info = get_sender_info(dss, "dccp"); - char *ret = make_message("%s" "\tsupported ccids: %s\n", - info, dccp_list_available_ccids()); - free(info); - return ret; + char *status = generic_sender_status(dss, "dccp"); + char *result = make_message("%ssupported ccids: %s\n", status, + dccp_list_available_ccids()); + free(status); + return result; } /** @@ -220,7 +218,7 @@ void dccp_send_init(struct sender *s) { int ret, k, n; - s->info = dccp_info; + s->status = dccp_status; s->send = NULL; s->pre_select = dccp_pre_select; s->post_select = dccp_post_select; diff --git a/error.h b/error.h index 8bc87335..c28a25a3 100644 --- a/error.h +++ b/error.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/error2.c b/error2.c index 9271dadf..189a2962 100644 --- a/error2.c +++ b/error2.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2014 Andre Noll + * Copyright (C) 2013-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/exec.c b/exec.c index 5f48436d..004c0437 100644 --- a/exec.c +++ b/exec.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2014 Andre Noll + * Copyright (C) 2003-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/fade.c b/fade.c index 543a666d..8c488a9f 100644 --- a/fade.c +++ b/fade.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2014 Andre Noll + * Copyright (C) 1998-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/fd.c b/fd.c index b8d0d77c..1053268e 100644 --- a/fd.c +++ b/fd.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/fd.h b/fd.h index c8127a4a..3a3221da 100644 --- a/fd.h +++ b/fd.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/fecdec_filter.c b/fecdec_filter.c index 0909007a..9edbcafe 100644 --- a/fecdec_filter.c +++ b/fecdec_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Andre Noll + * Copyright (C) 2009-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/file_write.c b/file_write.c index 5d43fe7d..393de379 100644 --- a/file_write.c +++ b/file_write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/filter.c b/filter.c index 55afbd32..79574db1 100644 --- a/filter.c +++ b/filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/filter.h b/filter.h index 7af0fbbb..c42f121d 100644 --- a/filter.h +++ b/filter.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/filter_common.c b/filter_common.c index 616a7601..6db0c57f 100644 --- a/filter_common.c +++ b/filter_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/flac_afh.c b/flac_afh.c index eeb0e86c..fd7bd24a 100644 --- a/flac_afh.c +++ b/flac_afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 Andre Noll + * Copyright (C) 2011-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/flacdec_filter.c b/flacdec_filter.c index b741f6b2..fc382a79 100644 --- a/flacdec_filter.c +++ b/flacdec_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 Andre Noll + * Copyright (C) 2011-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/gcrypt.c b/gcrypt.c index 751c1a4a..af7f2af1 100644 --- a/gcrypt.c +++ b/gcrypt.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 Andre Noll + * Copyright (C) 2011-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ggo.c b/ggo.c index deea00bb..04abf8eb 100644 --- a/ggo.c +++ b/ggo.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2014 Andre Noll + * Copyright (C) 2008-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ggo.h b/ggo.h index 9d9c5044..49bdf1d9 100644 --- a/ggo.h +++ b/ggo.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2014 Andre Noll + * Copyright (C) 2008-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/grab_client.c b/grab_client.c index 7948c449..f4bcbb79 100644 --- a/grab_client.c +++ b/grab_client.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/grab_client.h b/grab_client.h index 91adf2ea..f3de708f 100644 --- a/grab_client.h +++ b/grab_client.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/gui.c b/gui.c index 92b7f7cf..61ce0432 100644 --- a/gui.c +++ b/gui.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2014 Andre Noll + * Copyright (C) 1998-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/gui.h b/gui.h index 8a469346..6e5cc3bb 100644 --- a/gui.h +++ b/gui.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/gui_theme.c b/gui_theme.c index b860b359..9e90029b 100644 --- a/gui_theme.c +++ b/gui_theme.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/http_recv.c b/http_recv.c index 9deea791..2c7d02bb 100644 --- a/http_recv.c +++ b/http_recv.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/http_send.c b/http_send.c index 3e9c9539..65fec69f 100644 --- a/http_send.c +++ b/http_send.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -20,7 +19,6 @@ #include "string.h" #include "server.cmdline.h" #include "afh.h" -#include "afs.h" #include "server.h" #include "http.h" #include "list.h" @@ -235,9 +233,9 @@ static int http_com_allow(struct sender_command_data *scd) return 1; } -static char *http_info(void) +static char *http_status(void) { - return get_sender_info(hss, "http"); + return generic_sender_status(hss, "http"); } /** @@ -251,7 +249,7 @@ static char *http_info(void) void http_send_init(struct sender *s) { int ret; - s->info = http_info; + s->status = http_status; s->send = http_send; s->pre_select = http_pre_select; s->post_select = http_post_select; diff --git a/interactive.c b/interactive.c index 3d2f6d68..efb18cee 100644 --- a/interactive.c +++ b/interactive.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 Andre Noll + * Copyright (C) 2011-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/interactive.h b/interactive.h index 96401b16..2c393023 100644 --- a/interactive.h +++ b/interactive.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2014 Andre Noll + * Copyright (C) 2011-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ipc.c b/ipc.c index b8a6fd0c..3cf705ab 100644 --- a/ipc.c +++ b/ipc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/m4/gengetopt/logfile.m4 b/m4/gengetopt/logfile.m4 index bb102939..070d736b 100644 --- a/m4/gengetopt/logfile.m4 +++ b/m4/gengetopt/logfile.m4 @@ -6,6 +6,6 @@ string typestr="filename" optional details=" If this option is not given, CURRENT_PROGRAM writes the log - messages to to stderr + messages to stderr. " diff --git a/mix.h b/mix.h index cfcfd72b..1141ce59 100644 --- a/mix.h +++ b/mix.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/mm.c b/mm.c index 6f2c088e..82b6fe60 100644 --- a/mm.c +++ b/mm.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/mm.h b/mm.h index 9c64002b..b6eac2d5 100644 --- a/mm.h +++ b/mm.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/mood.c b/mood.c index 897c22b9..a2525a78 100644 --- a/mood.c +++ b/mood.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/mood.h b/mood.h index 10e2ba10..d63f8a39 100644 --- a/mood.h +++ b/mood.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/mp3_afh.c b/mp3_afh.c index 2b558cbb..0ca742cb 100644 --- a/mp3_afh.c +++ b/mp3_afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2014 Andre Noll + * Copyright (C) 2003-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/mp3dec_filter.c b/mp3dec_filter.c index a51c77e2..fd11ce1e 100644 --- a/mp3dec_filter.c +++ b/mp3dec_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/net.c b/net.c index 8a190dda..dcadf543 100644 --- a/net.c +++ b/net.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/net.h b/net.h index 877d1cbb..c3dff7d8 100644 --- a/net.h +++ b/net.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ogg_afh.c b/ogg_afh.c index debc0c9f..a6e58ff9 100644 --- a/ogg_afh.c +++ b/ogg_afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2014 Andre Noll + * Copyright (C) 2004-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ogg_afh_common.c b/ogg_afh_common.c index 21444fa3..5e75265f 100644 --- a/ogg_afh_common.c +++ b/ogg_afh_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2014 Andre Noll + * Copyright (C) 2004-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ogg_afh_common.h b/ogg_afh_common.h index 59a5c486..3150f745 100644 --- a/ogg_afh_common.h +++ b/ogg_afh_common.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2014 Andre Noll + * Copyright (C) 2010-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/oggdec_filter.c b/oggdec_filter.c index 8a3e261e..48ac7a79 100644 --- a/oggdec_filter.c +++ b/oggdec_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/opus_afh.c b/opus_afh.c index 10fe25d8..22f14fd7 100644 --- a/opus_afh.c +++ b/opus_afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/opus_common.h b/opus_common.h index fea67274..b8d36903 100644 --- a/opus_common.h +++ b/opus_common.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2014 Andre Noll + * Copyright (C) 2013-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/opusdec_filter.c b/opusdec_filter.c index 4e69a46e..f84a42e5 100644 --- a/opusdec_filter.c +++ b/opusdec_filter.c @@ -2,7 +2,7 @@ * Copyright (c) 2002-2007 Jean-Marc Valin * Copyright (c) 2008 CSIRO * Copyright (c) 2007-2012 Xiph.Org Foundation - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/oss_mix.c b/oss_mix.c index 5fbfea08..cdac0773 100644 --- a/oss_mix.c +++ b/oss_mix.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2014 Andre Noll + * Copyright (C) 1998-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/oss_write.c b/oss_write.c index 77fe2a51..d4bfd446 100644 --- a/oss_write.c +++ b/oss_write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Andre Noll + * Copyright (C) 2009-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/osx_write.c b/osx_write.c index 229930be..0a8b3d2f 100644 --- a/osx_write.c +++ b/osx_write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/para.h b/para.h index 6bd048d8..e8aa3e84 100644 --- a/para.h +++ b/para.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/play.c b/play.c index c2a383c1..9fc49e37 100644 --- a/play.c +++ b/play.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/playlist.c b/playlist.c index b83f8df8..4f5ed6d8 100644 --- a/playlist.c +++ b/playlist.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/portable_io.h b/portable_io.h index 7371038a..8231fe7b 100644 --- a/portable_io.h +++ b/portable_io.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/prebuffer_filter.c b/prebuffer_filter.c index 356fb54c..17a5b616 100644 --- a/prebuffer_filter.c +++ b/prebuffer_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Andre Noll + * Copyright (C) 2009-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/recv.c b/recv.c index d127882a..b066a8e4 100644 --- a/recv.c +++ b/recv.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/recv.h b/recv.h index 4564337c..b17b77ab 100644 --- a/recv.h +++ b/recv.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/recv_common.c b/recv_common.c index 280f5bc4..02b785ff 100644 --- a/recv_common.c +++ b/recv_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/resample_filter.c b/resample_filter.c index 61ffd2b6..ef8a7011 100644 --- a/resample_filter.c +++ b/resample_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ringbuffer.c b/ringbuffer.c index e85661e4..2ea2592f 100644 --- a/ringbuffer.c +++ b/ringbuffer.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/ringbuffer.h b/ringbuffer.h index 075eb070..86b787be 100644 --- a/ringbuffer.h +++ b/ringbuffer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/sched.c b/sched.c index 44062a66..268ba541 100644 --- a/sched.c +++ b/sched.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/sched.h b/sched.h index 07877c46..d7b90a45 100644 --- a/sched.h +++ b/sched.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/score.c b/score.c index f1afd22b..53e55dae 100644 --- a/score.c +++ b/score.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/send.h b/send.h index 8a69cb71..cb35e255 100644 --- a/send.h +++ b/send.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -7,7 +7,15 @@ /** \file send.h Sender-related defines and structures. */ /** The sender subcommands. */ -enum {SENDER_ADD, SENDER_DELETE, SENDER_ALLOW, SENDER_DENY, SENDER_ON, SENDER_OFF, NUM_SENDER_CMDS}; +enum sender_subcommand { + SENDER_ADD, /**< Add a target (udp only). */ + SENDER_DELETE, /**< Delete a target (udp only). */ + SENDER_ALLOW, /**< Allow connections from given IP address(es). */ + SENDER_DENY, /**< Deny connections from given IP address(es). */ + SENDER_ON, /**< Activate the sender. */ + SENDER_OFF, /**< Deactivate the sender. */ + NUM_SENDER_CMDS /**< Used as array size in struct \ref sender. */ +}; /** * Describes one supported sender of para_server. @@ -37,7 +45,7 @@ struct sender { * * The result must be dynamically allocated and is freed by the caller. */ - char* (*info)(void); + char* (*status)(void); /** * The send-hook. * @@ -171,7 +179,7 @@ void shutdown_client(struct sender_client *sc, struct sender_status *ss); void shutdown_clients(struct sender_status *ss); void init_sender_status(struct sender_status *ss, char **access_arg, int num_access_args, int port, int max_clients, int default_deny); -char *get_sender_info(struct sender_status *ss, const char *name); +char *generic_sender_status(struct sender_status *ss, const char *name); void generic_com_allow(struct sender_command_data *scd, struct sender_status *ss); diff --git a/send_common.c b/send_common.c index 0baac3a6..144a48e1 100644 --- a/send_common.c +++ b/send_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -159,7 +159,7 @@ void init_sender_status(struct sender_status *ss, char **access_arg, * * \return The string printed in the "si" command. */ -char *get_sender_info(struct sender_status *ss, const char *name) +char *generic_sender_status(struct sender_status *ss, const char *name) { char *clnts = NULL, *ret; struct sender_client *sc, *tmp_sc; @@ -171,14 +171,12 @@ char *get_sender_info(struct sender_status *ss, const char *name) clnts = tmp; } ret = make_message( - "%s sender:\n" - "\tstatus: %s\n" - "\tport: %s\n" - "\tnumber of connected clients: %d\n" - "\tmaximal number of clients: %d%s\n" - "\tconnected clients: %s\n" - "\taccess %s list: %s\n", - name, + "status: %s\n" + "port: %s\n" + "number of connected clients: %d\n" + "maximal number of clients: %d%s\n" + "connected clients: %s\n" + "access %s list: %s\n", (ss->listen_fd >= 0)? "on" : "off", stringify_port(ss->port, strcmp(name, "http") ? "dccp" : "tcp"), ss->num_clients, diff --git a/server.c b/server.c index 908e039b..b5063e2d 100644 --- a/server.c +++ b/server.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -483,12 +483,12 @@ static void server_init(int argc, char **argv) version_handle_flag("server", conf.version_given); if (conf.help_given || conf.detailed_help_given) print_help_and_die(); - drop_privileges_or_die(conf.user_arg, conf.group_arg); + daemon_drop_privileges_or_die(conf.user_arg, conf.group_arg); /* parse config file, open log and set defaults */ parse_config_or_die(0); - log_welcome("para_server"); + daemon_log_welcome("para_server"); init_ipc_or_die(); /* init mmd struct and mmd->lock */ - set_server_start_time(NULL); + daemon_set_start_time(); init_user_list(user_list_file); /* become daemon */ if (conf.daemon_given) @@ -526,7 +526,7 @@ static void server_init(int argc, char **argv) static void status_refresh(void) { static int prev_uptime = -1, prev_events = -1; - int uptime = get_server_uptime(now); + int uptime = daemon_get_uptime(now); if (prev_events != mmd->events) goto out; diff --git a/server.cmd b/server.cmd index 83097f1f..ebe372b7 100644 --- a/server.cmd +++ b/server.cmd @@ -4,15 +4,14 @@ SN: list of server commands --- N: ff P: VSS_READ | VSS_WRITE -D: Jump amount of time forwards or backwards in current audio file. +D: Jump N seconds forward or backward. U: ff n[-] -H: Set the 'R' (reposition request) bit of the vss status flags -H: and enqueue a request to jump n seconds forwards or backwards -H: in the current audio file. +H: This sets the 'R' (reposition request) bit of the vss status flags +H: which enqueues a request to jump n seconds forwards or backwards. H: -H: EXAMPLE +H: Example: H: -H: ff 30- +H: para_client ff 30- H: H: jumps 30 seconds backwards. --- @@ -21,41 +20,41 @@ P: 0 D: Print online help. U: help [command] H: Without any arguments, help prints a list of available commands. When -H: issued with a command name as first argument, print out a description -H: for that command. +H: called with a command name as first argument, it prints the description +H: of that command. --- N: hup P: VSS_WRITE -D: Force reload of config file, log file and user list. +D: Reload config file, log file and user list. U: hup H: Reread the config file and the user list file, close and reopen the log -H: file, and tell all children to do the same. +H: file, and ask the afs process to do the same. Sending the HUP signal to +H: the server process has the same effect. --- N: jmp P: VSS_READ | VSS_WRITE -D: Jump to given position in current audio file. -U: jmp [n] -H: Set the 'R' (reposition request) bit of the vss status flags -H: and enqueue a request to jump to n% of the current audio file, -H: where 0 <= n <= 100. +D: Jump to the given position. +U: jmp n +H: Set the 'R' (reposition request) bit of the vss status flags and enqueue a +H: request to jump to n% of the current audio file, where 0 <= n <= 100. --- N: next P: VSS_READ | VSS_WRITE -D: Skip rest of the current audio file. +D: Close the current audio file. U: next -H: Set the 'N' (next audio file) bit of the vss status flags. When -H: playing, change audio file immediately. Equivalent to stop -H: if paused, NOP if stopped. +H: Set the 'N' (next audio file) bit of the vss status flags which instructs the +H: server to close its current audio file if necessary. If the 'P' bit (playing) +H: is on, playing continues with the next audio file. This command is equivalent +H: to stop if paused, and has no effect if stopped. --- N: nomore P: VSS_READ | VSS_WRITE D: Stop playing after current audio file. U: nomore -H: Set the 'O' (no more) bit of the vss status flags. This instructs -H: para_server to clear the 'P' (playing) bit as soon as it encounters -H: the 'N' (next audio file) bit being set. -H: Use this command instead of stop if you don't like -H: sudden endings. +H: Set the 'O' (no more) bit of the vss status flags which asks para_server to +H: clear the 'P' (playing) bit after the 'N' (next audio file) bit transitions +H: from off to on (because the end of the current audio file is reached). Use this +H: command instead of stop if you don't like sudden endings. --- N: pause P: VSS_READ | VSS_WRITE @@ -65,54 +64,60 @@ H: Clear the 'P' (playing) bit of the vss status flags. --- N: play P: VSS_READ | VSS_WRITE -D: Start playing or resume playing when paused. +D: Start or resume playing. U: play -H: Set the 'P' (playing) bit of the vss status flags. This -H: results in starting/continuing to stream. +H: Set the 'P' (playing) bit of the vss status flags. --- N: sender P: VSS_READ | VSS_WRITE -D: Control paraslash internal senders. +D: Control paraslash senders. U: sender [s cmd [arguments]] -H: send command cmd to sender s. cmd may be one of the following: -H: help, on, off, add, delete, allow, or deny. Note that not all senders -H: support each command. Try e.g. 'para_client sender http help' for -H: more information about the http sender. If no argument is given, -H: print out a list of all senders that are compiled in. +H: Send a command to a specific sender. The following commands are available, but +H: not all senders support every command. +H: +H: help, on, off, add, delete, allow, deny, status. +H: +H: The help command prints the help text of the given sender. If no command is +H: given the list of compiled in senders is shown. +H: +H: Example: +H: +H: para_client sender http help --- N: si P: 0 D: Print server info. U: si -H: Print server uptime and other information. +H: Show server and afs PID, number of connections, uptime and more. --- N: stat P: VSS_READ -D: Print status info for the current audio file. +D: Print information about the current audio file. U: stat [-n=num] [-p] -H: If -n is given, the command exits after having displayed the status n -H: times. Otherwise, the command runs in an endless loop. +H: If -n is given, exit after the status information has been shown n times. +H: Otherwise, the command runs in an endless loop. H: H: The -p option activates parser-friendly output: Each status item is -H: prefixed with its size in bytes and the status items identifiers are +H: prefixed with its size in bytes and the status item identifiers are H: printed as numerical values. --- N: stop P: VSS_READ | VSS_WRITE -D: Stop streaming. +D: Stop playing. U: stop -H: Clear the 'P' (play) bit and set the 'N' bit of the vss status -H: flags. +H: Clear the 'P' (playing) bit and set the 'N' (next audio file) bit of the vss +H: status flags, effectively stopping playback. --- N: term P: VSS_READ | VSS_WRITE -D: Terminate para_server. +D: Ask the server to terminate. U: term -H: Shuts down the server. Instead of this command, you can also send -H: SIGINT or SIGTERM. It should never be necessary to send SIGKILL. +H: Shut down the server. Instead of this command, you can also send SIGINT or +H: SIGTERM to the para_server process. It should never be necessary to send +H: SIGKILL. --- N: version P: 0 -D: Print server's version. +D: Print the git version string of para_server. U: version -H: Show version and other info +H: Show version and other info. diff --git a/server.h b/server.h index 64f0cc75..16449e6d 100644 --- a/server.h +++ b/server.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/sideband.c b/sideband.c index a5f19161..3862d7ac 100644 --- a/sideband.c +++ b/sideband.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/sideband.h b/sideband.h index 4a838cee..2176cf48 100644 --- a/sideband.h +++ b/sideband.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Andre Noll + * Copyright (C) 2012-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/signal.c b/signal.c index 972d9d12..68db5df7 100644 --- a/signal.c +++ b/signal.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2014 Andre Noll + * Copyright (C) 2004-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/signal.h b/signal.h index a15349ca..256f1067 100644 --- a/signal.h +++ b/signal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Andre Noll + * Copyright (C) 2007-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/spx.h b/spx.h index 3ae2c87c..6c193b49 100644 --- a/spx.h +++ b/spx.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2014 Andre Noll + * Copyright (C) 2010-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/spx_afh.c b/spx_afh.c index 2afebb18..c6f6a773 100644 --- a/spx_afh.c +++ b/spx_afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2014 Andre Noll + * Copyright (C) 2010-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/spx_common.c b/spx_common.c index f770be7d..6ceeaaec 100644 --- a/spx_common.c +++ b/spx_common.c @@ -1,6 +1,6 @@ /* * Copyright (C) 2002-2006 Jean-Marc Valin - * Copyright (C) 2010-2014 Andre Noll + * Copyright (C) 2010-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/spxdec_filter.c b/spxdec_filter.c index 8b29007c..4c7a773b 100644 --- a/spxdec_filter.c +++ b/spxdec_filter.c @@ -1,6 +1,6 @@ /* * Copyright (C) 2002-2006 Jean-Marc Valin - * Copyright (C) 2010-2014 Andre Noll + * Copyright (C) 2010-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/stat.c b/stat.c index afc9c389..652a749d 100644 --- a/stat.c +++ b/stat.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/stdin.c b/stdin.c index a66ad469..a4e81bd3 100644 --- a/stdin.c +++ b/stdin.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/stdin.h b/stdin.h index b40cf7eb..952d4809 100644 --- a/stdin.h +++ b/stdin.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/stdout.c b/stdout.c index bb921ad1..5fae20c2 100644 --- a/stdout.c +++ b/stdout.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/stdout.h b/stdout.h index 531fc7c2..57cf969d 100644 --- a/stdout.h +++ b/stdout.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/string.c b/string.c index 10b6073f..39d16c3a 100644 --- a/string.c +++ b/string.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2014 Andre Noll + * Copyright (C) 2004-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/string.h b/string.h index 11ba1283..20cf8def 100644 --- a/string.h +++ b/string.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/sync_filter.c b/sync_filter.c index fceb1d1c..8c3570fd 100644 --- a/sync_filter.c +++ b/sync_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Andre Noll + * Copyright (C) 2013 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/time.c b/time.c index c405351a..040053d2 100644 --- a/time.c +++ b/time.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/udp_recv.c b/udp_recv.c index bde41243..bb4eb1db 100644 --- a/udp_recv.c +++ b/udp_recv.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/udp_send.c b/udp_send.c index 6ed5026a..465b3ca6 100644 --- a/udp_send.c +++ b/udp_send.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -15,7 +15,6 @@ #include #include #include -#include #include #include "server.cmdline.h" @@ -23,7 +22,6 @@ #include "error.h" #include "string.h" #include "afh.h" -#include "afs.h" #include "server.h" #include "list.h" #include "send.h" @@ -355,7 +353,7 @@ err: return ret; } -static char *udp_info(void) +static char *udp_status(void) { struct sender_client *sc; char *ret, *tgts = NULL; @@ -371,10 +369,9 @@ static char *udp_info(void) tgts = tmp; } ret = make_message( - "udp sender:\n" - "\tstatus: %s\n" - "\tport: %s\n" - "\ttargets: %s\n", + "status: %s\n" + "port: %s\n" + "targets: %s\n", (sender_status == SENDER_ON)? "on" : "off", stringify_port(conf.udp_default_port_arg, "udp"), tgts? tgts : "(none)" @@ -427,7 +424,7 @@ static char *udp_help(void) void udp_send_init(struct sender *s) { INIT_LIST_HEAD(&targets); - s->info = udp_info; + s->status = udp_status; s->help = udp_help; s->send = NULL; s->pre_select = NULL; diff --git a/user_list.c b/user_list.c index 4815e5d3..057ca6f8 100644 --- a/user_list.c +++ b/user_list.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/user_list.h b/user_list.h index 120b0fdb..568c643e 100644 --- a/user_list.h +++ b/user_list.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/version.c b/version.c index d81da754..151974e5 100644 --- a/version.c +++ b/version.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2014 Andre Noll + * Copyright (C) 2013-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -57,7 +57,7 @@ const char *version_text(const char *pfx) "Copyright (C) 2014 Andre Noll\n" "This is free software with ABSOLUTELY NO WARRANTY." " See COPYING for details.\n" - "Report bugs to .\n" + "Report bugs to .\n" "build date: " BUILD_DATE ",\n" "build system: " UNAME_RS ",\n" "compiler: " CC_VERSION ".\n", diff --git a/vss.c b/vss.c index e0b764ab..8a916a2d 100644 --- a/vss.c +++ b/vss.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2014 Andre Noll + * Copyright (C) 1997-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/vss.h b/vss.h index c4d6f737..33a4b09e 100644 --- a/vss.h +++ b/vss.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/wav_filter.c b/wav_filter.c index 199db45a..8a1ad38b 100644 --- a/wav_filter.c +++ b/wav_filter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/web/.htaccess b/web/.htaccess new file mode 100644 index 00000000..d6a12221 --- /dev/null +++ b/web/.htaccess @@ -0,0 +1,12 @@ + + IndexOptions FancyIndexing IconWidth=30 IconsAreLinks + IndexOrderDefault Descending Date + IndexIgnore .. + + AddIcon ../signature.png *.asc + AddDescription "Digital signature" *.asc + + AddIcon ../tar-icon.png *.tgz *.tar.bz2 + AddDescription "current master snapshot" -git.tar.bz2 + AddDescription "release tarball" *.tgz *.tar.bz2 + diff --git a/web/contact.in.html b/web/contact.in.html index 3e980db8..aeb37207 100644 --- a/web/contact.in.html +++ b/web/contact.in.html @@ -2,7 +2,7 @@

André Noll, maan@systemlinux.org

+href="mailto:maan@tuebingen.mpg.de">maan@tuebingen.mpg.de

Comments and bug reports are welcome (english, german, or spanish language). Please provide enough info such as the version of paraslash diff --git a/web/download.in.html b/web/download.in.html index 393fce93..dd0b9c78 100644 --- a/web/download.in.html +++ b/web/download.in.html @@ -9,7 +9,9 @@ provided at this point. There are several ways to download the source: Clone the git repository by executing -

  git clone git://paraslash.systemlinux.org/git paraslash  

+

 
+			git clone git://git.tuebingen.mpg.de/paraslash.git
+		 

The repository contains the full history of the project since 2006, all work in progress and the source @@ -63,7 +65,7 @@ provided at this point. There are several ways to download the source: The - gitweb + gitweb page contains a snapshot link for each revision. This allows to get a specific revision without downloading diff --git a/web/gitweb_footer.html b/web/gitweb_footer.html deleted file mode 100644 index 8beeeaf0..00000000 --- a/web/gitweb_footer.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/web/gitweb_header.html.in b/web/gitweb_header.html.in deleted file mode 100644 index f7b40714..00000000 --- a/web/gitweb_header.html.in +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - -
- - paraslash - - -

Paraslash network audio streaming tools

-
-
- Home
- Features
- Screenshots
- Download
- Documentation
- Changes
- Development
- License
- Contact
- Credits
-
-

Changes

-
diff --git a/web/header.html b/web/header.html index 6e559faa..1960dc05 100644 --- a/web/header.html +++ b/web/header.html @@ -11,7 +11,7 @@ @@ -27,7 +27,6 @@ Screenshots
Download
Documentation
- Changes
Development
License
Contact
diff --git a/web/header2.html b/web/header2.html index 27ccd96a..956ca7aa 100644 --- a/web/header2.html +++ b/web/header2.html @@ -27,7 +27,6 @@ Screenshots
Download
Documentation
- Changes
Development
License
Contact
diff --git a/web/images/git-logo.png b/web/images/git-logo.png deleted file mode 100644 index 16ae8d53..00000000 Binary files a/web/images/git-logo.png and /dev/null differ diff --git a/web/images/signature.png b/web/images/signature.png new file mode 100644 index 00000000..9524182c Binary files /dev/null and b/web/images/signature.png differ diff --git a/web/images/tar-icon.png b/web/images/tar-icon.png new file mode 100644 index 00000000..4b1b472d Binary files /dev/null and b/web/images/tar-icon.png differ diff --git a/web/manual.m4 b/web/manual.m4 index 73eafbb4..42021c42 100644 --- a/web/manual.m4 +++ b/web/manual.m4 @@ -214,7 +214,7 @@ For the impatient: Detailed description: In any case you'll need - - XREFERENCE(http://systemlinux.org/~maan/osl/, libosl). + - XREFERENCE(http://people.tuebingen.mpg.de/maan/osl/, libosl). The _object storage layer_ library is used by para_server. To clone the source code repository, execute @@ -668,7 +668,7 @@ known audio files to those which satisfy certain criteria. It also maintains tables containing images (e.g. album cover art) and lyrics that can be associated with one or more audio files. -AFS uses XREFERENCE(http://systemlinux.org/~maan/osl/, libosl), the +AFS uses XREFERENCE(http://people.tuebingen.mpg.de/maan/osl/, libosl), the object storage layer library, as the backend library for storing information on audio files, playlists, etc. This library offers functionality similar to a relational database, but is much more @@ -1452,15 +1452,21 @@ the stream. Examples ~~~~~~~~ -The sender command of para_server allows to (de-)activate senders -and to change the access permissions senders at runtime. The "si" -(server info) command is used to list the streaming options of the -currently running server as well as the various sender access lists. +The "si" (server info) command lists some information about the +currently running server process. --> Show client/target/access lists: +-> Show PIDs, number of connected clients, uptime, and more: para_client si +The sender command of para_server prints information about senders, +like the various access control lists, and it allows to (de-)activate +senders and to change the access permissions at runtime. + +-> List all senders + + para_client sender + -> Obtain general help for the sender command: para_client help sender @@ -1470,6 +1476,10 @@ currently running server as well as the various sender access lists. s=http # or dccp or udp para_client sender $s help +-> Show status of the http sender + + para_client sender http status + By default para_server activates both the HTTP and th DCCP sender on startup. This can be changed via command line options or para_server's config file. @@ -2215,7 +2225,8 @@ RFCs Application web pages ~~~~~~~~~~~~~~~~~~~~~ - - XREFERENCE(http://paraslash.systemlinux.org/, paraslash) + - XREFERENCE(http://people.tuebingen.mpg.de/maan/paraslash/, paraslash) + - XREFERENCE(http://paraslash.systemlinux.org/, paraslash (alternative page)) - XREFERENCE(http://xmms2.org/wiki/Main_Page, xmms) - XREFERENCE(http://www.mpg123.de/, mpg123) - XREFERENCE(http://gstreamer.freedesktop.org/, gstreamer) diff --git a/web/para.css b/web/para.css index 422f454e..e8c43489 100644 --- a/web/para.css +++ b/web/para.css @@ -443,320 +443,3 @@ a.text:hover { text-decoration: underline; color: #880000; } - -table.project_list { - border-spacing: 0; -} - -table.diff_tree { - border-spacing: 0; - font-family: monospace; -} - -table.combined.diff_tree th { - text-align: center; -} - -table.combined.diff_tree td { - padding-right: 24px; -} - -table.combined.diff_tree th.link, -table.combined.diff_tree td.link { - padding: 0px 2px; -} - -table.combined.diff_tree td.nochange a { - color: #6666ff; -} - -table.combined.diff_tree td.nochange a:hover, -table.combined.diff_tree td.nochange a:visited { - color: #d06666; -} - -table.blame { - border-collapse: collapse; -} - -table.blame td { - padding: 0px 5px; - font-size: 100%; - vertical-align: top; -} - -tr.light:hover { - background-color: yellow; - color: #cc3322; -} - -tr.dark { - background-color: #333333; -} - -tr.dark2 { - background-color: #333333; -} - -tr.dark:hover { - background-color: yellow; - color: #cc3322; -} - -td.link, td.selflink { - padding: 2px 5px; - font-family: sans-serif; - font-size: 70%; -} - -td.selflink { - padding-right: 0px; -} - -td.sha1 { - font-family: monospace; -} - -td.error { - color: red; - background-color: yellow; -} - -td.current_head { - text-decoration: underline; -} - -table.diff_tree span.file_status.new { - color: #008000; -} - -table.diff_tree span.file_status.deleted { - color: #c00000; -} - -table.diff_tree span.file_status.moved, -table.diff_tree span.file_status.mode_chnge { - color: #777777; -} - -table.diff_tree span.file_status.copied { - color: #70a070; -} - -/* noage: "No commits" */ -table.project_list td.noage { - color: #808080; - font-style: italic; -} - -/* age2: 60*60*24*2 <= age */ -table.project_list td.age2, table.blame td.age2 { - font-style: italic; -} - -/* age1: 60*60*2 <= age < 60*60*24*2 */ -table.project_list td.age1 { - color: #009900; - font-style: italic; -} - -table.blame td.age1 { - color: #009900; - background: transparent; -} - -/* age0: age < 60*60*2 */ -table.project_list td.age0 { - color: #009900; - font-style: italic; - font-weight: bold; -} - -table.blame td.age0 { - color: #009900; - background: transparent; - font-weight: bold; -} - -td.pre, div.pre, div.diff { - white-space: pre; -} - -td.mode { - font-family: monospace; -} - -/* styling of diffs (patchsets): commitdiff and blobdiff views */ - -div.diff.header, -div.diff.extended_header { - white-space: normal; -} - -div.diff.header { - font-weight: bold; - - background-color: #333333; - - margin-top: 4px; - padding: 4px 0px 2px 0px; - border: solid #d9d8d1; - border-width: 1px 0px 1px 0px; -} - -div.diff.header a.path { - text-decoration: underline; -} - -div.diff.extended_header, -div.diff.extended_header a.path, -div.diff.extended_header a.hash { - color: #cccccc; -} - -div.diff.extended_header .info { - color: #b0b0b0; -} - -div.diff.extended_header { - background-color: #333333; - padding: 2px 0px 2px 0px; -} - -div.diff a.list, -div.diff a.path, -div.diff a.hash { - text-decoration: none; -} - -div.diff a.list:hover, -div.diff a.path:hover, -div.diff a.hash:hover { - text-decoration: underline; -} - -div.diff.to_file a.path, -div.diff.to_file { - color: #007000; -} - -div.diff.add { - color: #008800; -} - -div.diff.from_file a.path, -div.diff.from_file { - color: #ff0000; -} - -div.diff.rem { - color: #cc0000; -} - -div.diff.chunk_header a, -div.diff.chunk_header { - color: #990099; -} - -div.diff.chunk_header { - border: dotted #ffe0ff; - border-width: 1px 0px 0px 0px; - margin-top: 2px; -} - -div.diff.chunk_header span.chunk_info { - background-color: #000000; -} - -div.diff.chunk_header span.section { - color: #aa22aa; -} - -div.diff.incomplete { - color: #cccccc; -} - -div.diff.nodifferences { - font-weight: bold; - color: #600000; -} - -div.index_include { - border: solid #d9d8d1; - border-width: 0px 0px 1px; - padding: 12px 8px; -} - -div.search { - font-size: 100%; - font-weight: normal; - margin: 4px 8px; - float: right; - top: 56px; - right: 12px -} - -td.linenr { - text-align: right; -} - -a.linenr { - color: #999999; - text-decoration: none -} - -a.rss_logo { - float: right; - padding: 3px 0px; - width: 35px; - line-height: 10px; - border: 1px solid; - border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e; - color: #ffffff; - background-color: #ff6600; - font-weight: bold; - font-family: sans-serif; - font-size: 70%; - text-align: center; - text-decoration: none; -} - -a.rss_logo:hover { - background-color: #ee5500; -} - -span.refs span { - padding: 0px 4px; - font-size: 70%; - font-weight: normal; - border: 1px solid; - background-color: #222222; - border-color: #ffccff #ff00ee #ff00ee #ffccff; -} - -span.refs span.ref { - background-color: #aaaaff; - border-color: #ccccff #0033cc #0033cc #ccccff; -} - -span.refs span.tag { - background-color: #ffffaa; - border-color: #ffffcc #ffee00 #ffee00 #ffffcc; -} - -span.refs span.head { - background-color: #222222; - border-color: #ccffcc #00cc33 #00cc33 #ccffcc; -} - -span.atnight { - color: #cc0000; -} - -span.match { - color: #e00000; -} - -div.binary { - font-style: italic; -} diff --git a/wma_afh.c b/wma_afh.c index 65795fd8..cfa73040 100644 --- a/wma_afh.c +++ b/wma_afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Andre Noll + * Copyright (C) 2009-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/wma_common.c b/wma_common.c index e53cdf5e..3c775be2 100644 --- a/wma_common.c +++ b/wma_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2014 Andre Noll + * Copyright (C) 2009-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/write.c b/write.c index eaf56f41..ecb3887c 100644 --- a/write.c +++ b/write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Andre Noll + * Copyright (C) 2005-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/write.h b/write.h index cb734988..6ce5c32d 100644 --- a/write.h +++ b/write.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/write_common.c b/write_common.c index 4c5ef4bc..50c81d79 100644 --- a/write_common.c +++ b/write_common.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ diff --git a/write_common.h b/write_common.h index e0351602..d077178e 100644 --- a/write_common.h +++ b/write_common.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2014 Andre Noll + * Copyright (C) 2006-2014 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */
- + paraslash