Cooked for two months.
* t/audiod_exit_cleanup:
audiod: Clean up by notifying tasks.
For details see the user manual:
+ http://people.tuebingen.mpg.de/maan/paraslash/manual.html
+or
http://paraslash.systemlinux.org/manual.html
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"
---------------------------------------------
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 <maan@systemlinux.org>
+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 <maan@tuebingen.mpg.de>
Comments and bug reports are welcome.
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2008-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2008-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2008-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2008-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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.
*
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
---
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:
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.
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
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:
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
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.
---
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
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:
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@
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@
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:
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@
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.
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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.
*
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2009-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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();
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);
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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);
-# Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+# Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
#
# Licensed under the GPL v2. For licencing details see COPYING.
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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) \
/*
- * Copyright (C) 2009-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2009-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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);
}
usleep(100 * 1000);
continue;
}
- memcpy(&mmd->sender_cmd_data, &scd, sizeof(scd));
+ mmd->sender_cmd_data = scd;
mutex_unlock(mmd_mutex);
break;
}
/* 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,
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);
}
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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])
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
])
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/**
* 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);
*
* \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;
}
/**
- * 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.
*
*
* \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;
/**
* 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);
}
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);
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include <sys/socket.h>
#include <regex.h>
#include <sys/types.h>
-#include <osl.h>
#include <arpa/inet.h>
#include <sys/un.h>
#include <netdb.h>
#include "error.h"
#include "string.h"
#include "afh.h"
-#include "afs.h"
#include "server.h"
#include "net.h"
#include "list.h"
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;
}
/**
{
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;
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2013-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2013-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2003-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2003-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1998-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1998-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2009-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2008-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2008-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2008-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2008-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1998-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1998-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include <sys/socket.h>
#include <regex.h>
#include <sys/types.h>
-#include <osl.h>
#include <arpa/inet.h>
#include <sys/un.h>
#include <netdb.h>
#include "string.h"
#include "server.cmdline.h"
#include "afh.h"
-#include "afs.h"
#include "server.h"
#include "http.h"
#include "list.h"
return 1;
}
-static char *http_info(void)
+static char *http_status(void)
{
- return get_sender_info(hss, "http");
+ return generic_sender_status(hss, "http");
}
/**
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;
/*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2011-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2011-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
optional
details="
If this option is not given, </qu>CURRENT_PROGRAM<qu> writes the log
- messages to to stderr
+ messages to stderr.
"
</qu>
/*
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2003-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2003-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2004-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2004-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2004-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2004-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2010-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2010-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2013-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2013-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
* Copyright (c) 2002-2007 Jean-Marc Valin
* Copyright (c) 2008 CSIRO
* Copyright (c) 2007-2012 Xiph.Org Foundation
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1998-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1998-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2009-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2009-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \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.
*
* The result must be dynamically allocated and is freed by the caller.
*/
- char* (*info)(void);
+ char* (*status)(void);
/**
* The send-hook.
*
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);
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
*
* \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;
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,
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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)
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;
---
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.
---
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
---
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.
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2012-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2012-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2004-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2004-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2007-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2010-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2010-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2010-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2010-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
* Copyright (C) 2002-2006 Jean-Marc Valin
- * Copyright (C) 2010-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2010-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
* Copyright (C) 2002-2006 Jean-Marc Valin
- * Copyright (C) 2010-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2010-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2004-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2004-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2013 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2013 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include <net/if.h>
#include <arpa/inet.h>
#include <sys/un.h>
-#include <osl.h>
#include <netdb.h>
#include "server.cmdline.h"
#include "error.h"
#include "string.h"
#include "afh.h"
-#include "afs.h"
#include "server.h"
#include "list.h"
#include "send.h"
return ret;
}
-static char *udp_info(void)
+static char *udp_status(void)
{
struct sender_client *sc;
char *ret, *tgts = NULL;
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)"
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;
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2013-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2013-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
"Copyright (C) 2014 Andre Noll\n"
"This is free software with ABSOLUTELY NO WARRANTY."
" See COPYING for details.\n"
- "Report bugs to <maan@systemlinux.org>.\n"
+ "Report bugs to <maan@tuebingen.mpg.de>.\n"
"build date: " BUILD_DATE ",\n"
"build system: " UNAME_RS ",\n"
"compiler: " CC_VERSION ".\n",
/*
- * Copyright (C) 1997-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
--- /dev/null
+<ifmodule mod_autoindex.c>
+ 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
+</ifmodule>
<hr>
<p> André Noll, <a
-href="mailto:maan@systemlinux.org">maan@systemlinux.org</a> </p>
+href="mailto:maan@tuebingen.mpg.de">maan@tuebingen.mpg.de</a> </p>
Comments and bug reports are welcome (english, german, or spanish
language). Please provide enough info such as the version of paraslash
Clone the git repository by executing
- <p> <pre> <kbd> git clone git://paraslash.systemlinux.org/git paraslash </kbd> </pre> </p>
+ <p> <pre> <kbd>
+ git clone git://git.tuebingen.mpg.de/paraslash.git
+ </kbd> </pre> </p>
<p> The repository contains the full history of the
project since 2006, all work in progress and the source
The
- <a href="/gitweb/gitweb.cgi?p=.git;a=summary">gitweb</a>
+ <a href="http://git.tuebingen.mpg.de/paraslash.git">gitweb</a>
page contains a snapshot link for each revision. This
allows to get a specific revision without downloading
+++ /dev/null
-</td>
-</tr>
-</table>
+++ /dev/null
-<table>
- <tr>
- <td>
- <a title="paraslash homepage" href="/">
- <img src="@web_root@/paraslash.png" alt="paraslash"/>
- </a>
- </td>
- <td>
- <h3>Paraslash network audio streaming tools</h3>
- </td>
- </tr>
-<tr>
- <td>
- <br />
- <a href="@web_root@/index.html">Home</a><br />
- <a href="@web_root@/FEATURES.html">Features</a><br />
- <a href="@web_root@/screenshots.html">Screenshots</a><br />
- <a href="@web_root@/download.html">Download</a><br />
- <a href="@web_root@/documentation.html">Documentation</a><br />
- <a href="/gitweb/gitweb.cgi?p=.git;a=summary">Changes</a><br />
- <a href="@web_root@/devel.html">Development</a><br />
- <a href="@web_root@/license.html">License</a><br />
- <a href="@web_root@/contact.html">Contact</a><br />
- <a href="@web_root@/CREDITS.html">Credits</a><br />
- </td>
- <td>
- <h1>Changes</h1>
- <hr />
<table>
<tr>
<td>
- <a title="paraslash homepage" href="/">
+ <a title="paraslash homepage" href=".">
<img src="paraslash.png" alt="paraslash">
</a>
</td>
<a href="screenshots.html">Screenshots</a><br>
<a href="download.html">Download</a><br>
<a href="documentation.html">Documentation</a><br>
- <a href="/gitweb/gitweb.cgi?p=.git;a=summary">Changes</a><br>
<a href="devel.html">Development</a><br>
<a href="license.html">License</a><br>
<a href="contact.html">Contact</a><br>
<a href="../../screenshots.html">Screenshots</a><br>
<a href="../../download.html">Download</a><br>
<a href="../../documentation.html">Documentation</a><br>
- <a href="/gitweb/gitweb.cgi?p=.git;a=summary">Changes</a><br>
<a href="../../devel.html">Development</a><br>
<a href="../../license.html">License</a><br>
<a href="../../contact.html">Contact</a><br>
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
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
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
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.
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)
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;
-}
/*
- * Copyright (C) 2009-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2009-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2014 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/