diff options
-rw-r--r-- | LICENSE | 4 | ||||
-rw-r--r-- | doc/Makefile | 8 | ||||
-rw-r--r-- | doc/rharchive.8 | 21 | ||||
-rw-r--r-- | doc/rharchive.8.txt | 22 | ||||
-rw-r--r-- | src/Makefile | 6 | ||||
-rwxr-xr-x | src/configure | 2 | ||||
-rw-r--r-- | src/daemon.h | 7 | ||||
-rw-r--r-- | src/datatypes.h | 6 | ||||
-rw-r--r-- | src/file_list.c | 6 | ||||
-rw-r--r-- | src/file_list.h | 6 | ||||
-rw-r--r-- | src/log.c | 6 | ||||
-rw-r--r-- | src/log.h | 6 | ||||
-rw-r--r-- | src/log_targets.h | 22 | ||||
-rw-r--r-- | src/options.c | 10 | ||||
-rw-r--r-- | src/options.h | 6 | ||||
-rw-r--r-- | src/rharchive.c | 4 | ||||
-rw-r--r-- | src/sig_handler.c | 20 | ||||
-rw-r--r-- | src/sig_handler.h | 6 | ||||
-rw-r--r-- | src/slist.c | 22 | ||||
-rw-r--r-- | src/slist.h | 6 | ||||
-rw-r--r-- | src/string_list.c | 10 | ||||
-rw-r--r-- | src/string_list.h | 6 | ||||
-rw-r--r-- | src/sysexec.c | 24 | ||||
-rw-r--r-- | src/sysexec.h | 6 | ||||
-rw-r--r-- | src/writer.c | 30 | ||||
-rw-r--r-- | src/writer.h | 8 |
26 files changed, 144 insertions, 136 deletions
@@ -4,8 +4,8 @@ * The Radio Helsinki Archive Daemon * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/doc/Makefile b/doc/Makefile index 3b8c361..afb48aa 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -2,10 +2,10 @@ ## rharchive ## ## The Radio Helsinki Archive Daemon -## ## -## Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> -## +## +## Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> +## ## This file is part of rharchive. ## ## rharchive is free software: you can redistribute it and/or modify @@ -24,7 +24,7 @@ VERSION=$(shell cat ../version) -.PHONY: clean +.PHONY: clean all: manpage diff --git a/doc/rharchive.8 b/doc/rharchive.8 index 74cc0ea..e54fc51 100644 --- a/doc/rharchive.8 +++ b/doc/rharchive.8 @@ -1,13 +1,22 @@ '\" t .\" Title: rharchive .\" Author: [see the "AUTHORS" section] -.\" Generator: DocBook XSL Stylesheets v1.75.1 <http://docbook.sf.net/> -.\" Date: 04/28/2011 -.\" Manual: rharchive user manual -.\" Source: rharchive trunk +.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/> +.\" Date: 12/27/2013 +.\" Manual: \ \& +.\" Source: \ \& .\" Language: English .\" -.TH "RHARCHIVE" "8" "04/28/2011" "rharchive trunk" "rharchive user manual" +.TH "RHARCHIVE" "8" "12/27/2013" "\ \&" "\ \&" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- @@ -171,4 +180,4 @@ Christian Pointner <equinox@helsinki\&.at> Radio Helsinki Website: http://www\&.helsinki\&.at .SH "COPYING" .sp -Copyright (C) 2011 Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. +Copyright (C) 2010\-2014 Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. diff --git a/doc/rharchive.8.txt b/doc/rharchive.8.txt index 60dc83a..ed63374 100644 --- a/doc/rharchive.8.txt +++ b/doc/rharchive.8.txt @@ -47,7 +47,7 @@ The following options can be passed to the *rharchive* daemon: instead of becoming a daemon which is the default. *-u, --username <username>*:: - run as this user. If no group is specified (*-g*) the default group of + run as this user. If no group is specified (*-g*) the default group of the user is used. The default is to not drop privileges. *-g, --groupname <groupname>*:: @@ -55,20 +55,20 @@ The following options can be passed to the *rharchive* daemon: The default is to not drop privileges. *-C, --chroot <path>*:: - Instruct *rharchive* to run in a chroot jail. The default is + Instruct *rharchive* to run in a chroot jail. The default is to not run in chroot. *-P, --write-pid <filename>*:: - Instruct *rharchive* to write it's pid to this file. The default is + Instruct *rharchive* to write it's pid to this file. The default is to not create a pid file. *-L, --log <target>:<level>[,<param1>[,<param2>[..]]]*:: add log target to logging system. This can be invoked several times - in order to log to different targets at the same time. Every target + in order to log to different targets at the same time. Every target has its own log level which is a number between 0 and 5. Where 0 means disabling log and 5 means debug messages are enabled. + The file target can be used more than once with different levels. - If no target is provided at the command line a single target with the + If no target is provided at the command line a single target with the config *syslog:3,rharchive,daemon* is added. + The following targets are supported: @@ -78,13 +78,13 @@ The following options can be passed to the *rharchive* daemon: *stderr*;; log to standard error, parameters <level> *-U, --debug*:: - This option instructs *rharchive* to run in debug mode. It implicits *-D* + This option instructs *rharchive* to run in debug mode. It implicits *-D* (don't daemonize) and adds a log target with the configuration *stdout:5* (logging with maximum level). In future releases there might be additional output when this option is supplied. *-s, --source <description>*:: - a gstreamer-style pipeline description which is used as a source. + a gstreamer-style pipeline description which is used as a source. i.e.: *'pulsesrc ! audioconvert ! vorbisenc ! oggmux'* this pipeline gets directly connected to the writer element (multifdsink). @@ -105,7 +105,7 @@ The following options can be passed to the *rharchive* daemon: *-o, --offset <value>*:: the offset in ms between the real boundary and the time the file actually starts/stops. A positive number means that the file starts too late. The default is no offset (0ms). - + *-x, --post-process <script>*:: this script gets called for every finished file. By default no script gets called. @@ -136,7 +136,7 @@ Radio Helsinki Website: http://www.helsinki.at COPYING ------- -Copyright \(C) 2011 Christian Pointner. This program is free -software: you can redistribute it and/or modify it under the terms -of the GNU General Public License as published by the Free Software +Copyright \(C) 2010-2014 Christian Pointner. This program is free +software: you can redistribute it and/or modify it under the terms +of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. diff --git a/src/Makefile b/src/Makefile index a2f101a..e55eb53 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2,10 +2,10 @@ ## rharchive ## ## The Radio Helsinki Archive Daemon -## ## -## Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> -## +## +## Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> +## ## This file is part of rharchive. ## ## rharchive is free software: you can redistribute it and/or modify diff --git a/src/configure b/src/configure index feb9123..c9fcbad 100755 --- a/src/configure +++ b/src/configure @@ -5,7 +5,7 @@ # The Radio Helsinki Archive Daemon # # -# Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> +# Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> # # This file is part of rharchive. # diff --git a/src/daemon.h b/src/daemon.h index 0657d75..291e837 100644 --- a/src/daemon.h +++ b/src/daemon.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -161,4 +161,3 @@ void daemonize() } #endif - diff --git a/src/datatypes.h b/src/datatypes.h index 9a9b04e..500cd00 100644 --- a/src/datatypes.h +++ b/src/datatypes.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/src/file_list.c b/src/file_list.c index c1e7263..44a4949 100644 --- a/src/file_list.c +++ b/src/file_list.c @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/src/file_list.h b/src/file_list.h index 1e84266..1132327 100644 --- a/src/file_list.h +++ b/src/file_list.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/src/log_targets.h b/src/log_targets.h index 7f4346c..5efd4c0 100644 --- a/src/log_targets.h +++ b/src/log_targets.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -31,7 +31,7 @@ static char* get_time_formatted() { char* time_string; time_t t = time(NULL); - if(t < 0) + if(t < 0) time_string = "<time read error>"; else { time_string = ctime(&t); @@ -69,7 +69,7 @@ int log_target_syslog_init(log_target_t* self, const char* conf) { if(!self || (conf && conf[0] == 0)) return -1; - + self->param_ = malloc(sizeof(log_target_syslog_param_t)); if(!self->param_) return -2; @@ -85,7 +85,7 @@ int log_target_syslog_init(log_target_t* self, const char* conf) if(!len) { free(self->param_); return -1; - } + } logname = malloc(len+1); if(logname) { strncpy(logname, conf, len); @@ -106,13 +106,13 @@ int log_target_syslog_init(log_target_t* self, const char* conf) ((log_target_syslog_param_t*)(self->param_))->facility_ = DAEMON; return 0; } - + if(end[1] == 0 || end[1] == ',') { free(logname); free(self->param_); return -1; } - + const char* start = end + 1; end = strchr(start, ','); int i; @@ -147,7 +147,7 @@ void log_target_syslog_log(log_target_t* self, log_prio_t prio, const char* msg) if(!self || !self->param_ || !self->opened_) return; - syslog((prio + 2) | ((log_target_syslog_param_t*)(self->param_))->facility_, "%s", msg); + syslog((prio + 2) | ((log_target_syslog_param_t*)(self->param_))->facility_, "%s", msg); } void log_target_syslog_close(log_target_t* self) @@ -199,7 +199,7 @@ int log_target_file_init(log_target_t* self, const char* conf) { if(!self || (conf && conf[0] == 0)) return -1; - + self->param_ = malloc(sizeof(log_target_file_param_t)); if(!self->param_) return -2; @@ -214,7 +214,7 @@ int log_target_file_init(log_target_t* self, const char* conf) if(!len) { free(self->param_); return -1; - } + } logfilename = malloc(len+1); if(logfilename) { strncpy(logfilename, conf, len); diff --git a/src/options.c b/src/options.c index 00e52bf..f8a42d8 100644 --- a/src/options.c +++ b/src/options.c @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -138,9 +138,9 @@ int options_parse_hex_string(const char* hex, buffer_t* buffer) if(hex_len%2) return 1; - if(buffer->buf_) + if(buffer->buf_) free(buffer->buf_); - + buffer->length_ = hex_len/2; buffer->buf_ = malloc(buffer->length_); if(!buffer->buf_) { diff --git a/src/options.h b/src/options.h index 7b08c55..a91cd86 100644 --- a/src/options.h +++ b/src/options.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/src/rharchive.c b/src/rharchive.c index 3401047..6d6bb7d 100644 --- a/src/rharchive.c +++ b/src/rharchive.c @@ -4,7 +4,7 @@ * The Radio Helsinki Archive Daemon * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> * * This file is part of rharchive. * @@ -246,5 +246,5 @@ int main(int argc, char* argv[]) gst_deinit(); log_close(); - return ret; + return ret; } diff --git a/src/sig_handler.c b/src/sig_handler.c index ce793b2..59fc461 100644 --- a/src/sig_handler.c +++ b/src/sig_handler.c @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -87,18 +87,18 @@ static gpointer signal_thread_func(gpointer data) } } } - - return NULL; + + return NULL; } int signal_start(GMainLoop *loop) { - g_assert(!signal_thread); + g_assert(!signal_thread); + + signal_thread = g_thread_create_full(signal_thread_func, loop, 8192, FALSE, TRUE, G_THREAD_PRIORITY_HIGH, NULL); + if(!signal_thread) + return -1; - signal_thread = g_thread_create_full(signal_thread_func, loop, 8192, FALSE, TRUE, G_THREAD_PRIORITY_HIGH, NULL); - if(!signal_thread) - return -1; - return 0; } diff --git a/src/sig_handler.h b/src/sig_handler.h index b8f7bd8..180369d 100644 --- a/src/sig_handler.h +++ b/src/sig_handler.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/src/slist.c b/src/slist.c index 262f243..bc9d7c3 100644 --- a/src/slist.c +++ b/src/slist.c @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -33,10 +33,10 @@ slist_element_t* slist_get_last(slist_element_t* first) { if(!first) return NULL; - + while(first->next_) first = first->next_; - + return first; } @@ -59,7 +59,7 @@ slist_element_t* slist_add(slist_t* lst, void* data) slist_element_t* new_element = malloc(sizeof(slist_element_t)); if(!new_element) return NULL; - + new_element->data_ = data; new_element->next_ = NULL; @@ -67,7 +67,7 @@ slist_element_t* slist_add(slist_t* lst, void* data) lst->first_ = new_element; else slist_get_last(lst->first_)->next_ = new_element; - + return new_element; } @@ -101,7 +101,7 @@ void slist_clear(slist_t* lst) { if(!lst || !lst->first_) return; - + do { slist_element_t* deletee = lst->first_; lst->first_ = lst->first_->next_; @@ -109,7 +109,7 @@ void slist_clear(slist_t* lst) free(deletee); } while(lst->first_); - + lst->first_ = NULL; } @@ -117,11 +117,11 @@ int slist_length(slist_t* lst) { if(!lst || !lst->first_) return 0; - + int len = 0; slist_element_t* tmp; for(tmp = lst->first_; tmp; tmp = tmp->next_) len++; - + return len; } diff --git a/src/slist.h b/src/slist.h index 077ae92..d25831a 100644 --- a/src/slist.h +++ b/src/slist.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/src/string_list.c b/src/string_list.c index ffea526..f5de488 100644 --- a/src/string_list.c +++ b/src/string_list.c @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -43,7 +43,7 @@ int string_list_add(string_list_t* list, const char* string) { if(!list) return -1; - + char* tmp = strdup(string); if(slist_add(list, tmp) == NULL) { free(tmp); @@ -57,7 +57,7 @@ void string_list_print(string_list_t* list, const char* head, const char* tail) { if(!list) return; - + slist_element_t* tmp = list->first_; while(tmp) { printf("%s%s%s", head, (char*)(tmp->data_), tail); diff --git a/src/string_list.h b/src/string_list.h index 7179b8d..54552b5 100644 --- a/src/string_list.h +++ b/src/string_list.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/src/sysexec.c b/src/sysexec.c index d4edc4b..490a3f9 100644 --- a/src/sysexec.c +++ b/src/sysexec.c @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -53,12 +53,12 @@ char** dup_ptrptr(char* const ptrptr[]) int i; for(i = 0; i < n; ++i) { - my_ptrptr[i] = strdup(ptrptr[i]); + my_ptrptr[i] = strdup(ptrptr[i]); if(!my_ptrptr[i]) { i--; for(; i >= 0; --i) free(my_ptrptr[i]); - + free(my_ptrptr); return NULL; } @@ -77,7 +77,7 @@ void free_ptrptr(char** ptrptr) int i; for(i = 0; ptrptr[i]; ++i) free(ptrptr[i]); - + free(ptrptr); } @@ -88,7 +88,7 @@ child_t* new_child(const char* script, char* const argv[], char* const evp[]) new_child = malloc(sizeof(child_t)); if(!new_child) return NULL; - + new_child->pid_ = -1; new_child->err_fd_ = -1; new_child->script_ = strdup(script); @@ -96,15 +96,15 @@ child_t* new_child(const char* script, char* const argv[], char* const evp[]) free(new_child); return NULL; } - + new_child->argv_ = dup_ptrptr(argv); if(!new_child->argv_) { free(new_child->script_); free(new_child); return NULL; - + } - + new_child->evp_ = dup_ptrptr(evp); if(!new_child->evp_) { free_ptrptr(new_child->argv_); @@ -169,7 +169,7 @@ child_t* rh_exec(const char* script, char* const argv[], char* const evp[]) log_printf(WARNING, "can't open stderr"); } execve(child->script_, child->argv_, child->evp_); - // if execve returns, an error occurred, but logging doesn't work + // if execve returns, an error occurred, but logging doesn't work // because we closed all file descriptors, so just write errno to // pipe and call exit int len = write(pipefd[1], (void*)(&errno), sizeof(errno)); @@ -194,7 +194,7 @@ int rh_waitpid(child_t* child, int* status_return) return 0; if(pid < 0) { log_printf(ERROR, "waitpid returned with error: %s", strerror(errno)); // TODO: thread safe strerror - return pid; + return pid; } fd_set rfds; diff --git a/src/sysexec.h b/src/sysexec.h index 0ec9829..3c8908d 100644 --- a/src/sysexec.h +++ b/src/sysexec.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify diff --git a/src/writer.c b/src/writer.c index 1355125..192dea9 100644 --- a/src/writer.c +++ b/src/writer.c @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -43,10 +43,10 @@ static int init_time_boundaries(writer_t* writer) struct timespec now; clock_gettime(CLOCK_REALTIME, &now); - + struct tm bd_time; localtime_r(&(now.tv_sec), &bd_time); - + writer->current_ = file_list_add(&(writer->files_), &bd_time, "current", writer->name_format_, writer->output_dir_, writer->mode_); if(writer->current_ == NULL) return -2; @@ -75,14 +75,14 @@ static void added_cb(GstElement* sink, gint fd, gpointer data) static void removed_cb(GstElement* sink, gint fd, gpointer data) { gint num_fds; - g_object_get(G_OBJECT(sink), "num_fds", &num_fds, NULL); + g_object_get(G_OBJECT(sink), "num_fds", &num_fds, NULL); log_printf(INFO, "fdsink: successfully removed client %d (sink has now %d fds)", fd, num_fds); } static void fdremoved_cb(GstElement* sink, gint fd, gpointer data) { gint num_fds; - g_object_get(G_OBJECT(sink), "num_fds", &num_fds, NULL); + g_object_get(G_OBJECT(sink), "num_fds", &num_fds, NULL); log_printf(INFO, "fdsink: successfully removed fd %d (sink has now %d fds)", fd, num_fds); writer_t *writer = (writer_t*)data; @@ -144,18 +144,18 @@ static int check_boundaries(writer_t* writer) { struct timespec now; clock_gettime(CLOCK_REALTIME, &now); - - GstClockTime tmp = GST_TIMESPEC_TO_TIME(now); + + GstClockTime tmp = GST_TIMESPEC_TO_TIME(now); GstClockTime boundary = GST_TIMESPEC_TO_TIME(writer->next_boundary_); tmp -= writer->offset_; if(tmp >= boundary) { struct tm now_bd; localtime_r(&(now.tv_sec), &now_bd); log_printf(INFO, "boundary reached! it's now: %02d:%02d:%02d.%06d on %d.%d.%d%s (%d ms offset)", now_bd.tm_hour, now_bd.tm_min, now_bd.tm_sec, now.tv_nsec/1000, now_bd.tm_mday, now_bd.tm_mon+1, now_bd.tm_year+1900, now_bd.tm_isdst > 0 ? " (DST)": "", GST_TIME_AS_MSECONDS(writer->offset_)); - + int ret = open_file(writer->next_); if(ret) return ret; // TODO: stop writer on open_file error ??? - + add_fd(writer, writer->next_->fd_); remove_fd(writer, writer->current_->fd_); writer->current_ = writer->next_; @@ -163,19 +163,19 @@ static int check_boundaries(writer_t* writer) writer->next_boundary_.tv_sec += 3600; struct tm bd_time; localtime_r(&(writer->next_boundary_.tv_sec), &bd_time); - + writer->next_ = file_list_add(&(writer->files_), &bd_time, "next", writer->name_format_, writer->output_dir_, writer->mode_); if(writer->next_ == NULL) return -2; } return 0; } - + static gpointer writer_thread_func(gpointer data) { writer_t *writer = (writer_t*)data; log_printf(NOTICE, "writer thread started"); - + for(;;) { GstClockReturn wret = gst_clock_id_wait(writer->clock_id_, NULL); if(GST_CLOCK_UNSCHEDULED == wret) @@ -189,7 +189,7 @@ static gpointer writer_thread_func(gpointer data) ret = file_list_waitpid(&(writer->files_)); if(ret) break; } - + log_printf(NOTICE, "writer thread stopped"); g_main_loop_quit(writer->loop_); return NULL; diff --git a/src/writer.h b/src/writer.h index 353e909..8e012a9 100644 --- a/src/writer.h +++ b/src/writer.h @@ -2,10 +2,10 @@ * rharchive * * The Radio Helsinki Archive Daemon - * * - * Copyright (C) 2010-2011 Christian Pointner <equinox@helsinki.at> - * + * + * Copyright (C) 2010-2014 Christian Pointner <equinox@helsinki.at> + * * This file is part of rharchive. * * rharchive is free software: you can redistribute it and/or modify @@ -47,7 +47,7 @@ struct writer_struct { file_list_t files_; file_t* current_; file_t* next_; - struct timespec next_boundary_; + struct timespec next_boundary_; }; typedef struct writer_struct writer_t; |