Moritz Grimm
6566705361
Fix includes
2017-11-18 02:12:12 +01:00
Moritz Grimm
ed9e84f387
Change config format to (eventually) support concurrent streams to many servers
...
Everything ties together in stream configurations, of which there can be many
now.
For the time being, every stream configuration but the "default" is ignored.
Every stream/server/encoder/decoder configuration now has the name "default"
by default, so that configuring names is only needed to resolve ambiguities.
Decoder configurations are now also constrained in this manner for consistency,
meaning they are no longer uniquely identified by a number of file extensions
but also a name.
2017-11-18 01:54:14 +01:00
Moritz Grimm
f82cf2b458
Add ezstream-file support for -p pidfile
2017-11-18 01:20:55 +01:00
Moritz Grimm
0e414f6142
Remove unused variable and change out_len to unsigned
2017-09-28 12:40:52 +02:00
Moritz Grimm
6466b6ea19
Prefer crashing over no coredump
2017-09-25 19:47:24 +02:00
Moritz Grimm
b19b746e5f
Revert introduction of !0 pattern for "true"
2017-09-25 18:19:07 +02:00
Moritz Grimm
ddc30688e6
Remove unused function
2017-09-25 17:47:12 +02:00
Moritz Grimm
cb997e549c
Fix multiple issues in util_shellquote
2017-09-25 17:09:38 +02:00
Moritz Grimm
1d0b9d4801
Simplify util_strrcmp to return a strictly boolean value
2017-09-25 17:07:40 +02:00
Moritz Grimm
f5f130e036
Do not block when trying to lock a PID file; fail immediately
2017-09-25 17:06:38 +02:00
Moritz Grimm
8cc45a3a3d
Do not assign save_errno for no reason
2017-09-25 17:05:44 +02:00
Moritz Grimm
aaa32bf812
Retire rand() in favor of the upcoming getrandom() on Linux
...
Only the non-getrandom() code paths have been tested at this point.
2017-09-20 18:12:52 +02:00
Moritz Grimm
2cdda45c16
Unconditionally close allocated stderr FDs
2017-09-20 14:42:19 +02:00
Moritz Grimm
ae85c26cae
Fix weird program logic by removing getMetadata()
2017-09-20 13:23:32 +02:00
Moritz Grimm
d40576cd80
Remove superfluous continue; (part 2)
2017-09-20 12:58:09 +02:00
Moritz Grimm
85abb3958c
Revert bogus change that introduced a memory leak
2017-09-20 12:55:16 +02:00
Moritz Grimm
6616831590
Switch to a new (unit-tested) metadata handling API
2017-09-20 12:40:33 +02:00
Moritz Grimm
399e66df2b
Remove superfluous continue; (CID 171999 et al)
2017-09-20 11:32:34 +02:00
Moritz Grimm
89b4260c83
Ensure that dup() succeeds (CID 172001)
2017-09-20 11:26:35 +02:00
Moritz Grimm
0fe7a81b8c
Reorder defines for consistency
2017-09-19 16:06:09 +02:00
Moritz Grimm
fef9b4625e
Fix memory leak (CID 171996)
2017-09-15 20:21:45 +02:00
Moritz Grimm
8ea0197235
Fix memory leak (CID 172413)
2017-09-15 20:13:05 +02:00
Moritz Grimm
77f794a41e
Rework quoting around metadata
...
* Do not shell-quote strings in the metadata token expansion function
* This fixes https://github.com/xiph/ezstream/issues/6
* Expand all tokens at the same time in a way that ensures metadata
is not additional input to expansion
* Simplify several functions and remove unused functionality
2017-09-15 19:30:52 +02:00
Moritz Grimm
c21d47b8a9
Squelch conversion warnings around tolower()
2017-09-15 19:24:40 +02:00
Moritz Grimm
7729fa9773
Make configuration handling around streaming from stdin more robust
2017-09-15 19:23:16 +02:00
Moritz Grimm
59099c6ddf
Update util function naming scheme
2017-09-13 23:35:30 +02:00
Moritz Grimm
6d9ab1d581
Reorder code to match header
2017-07-10 11:44:20 +02:00
Moritz Grimm
43e26549f9
Add support for writing PID files
2017-07-10 11:39:00 +02:00
Moritz Grimm
e3aefe825e
Assume POSIX locale support
2017-07-07 18:50:24 +02:00
Moritz Grimm
75b6962a33
Variable scope reduction
2017-07-07 16:45:10 +02:00
Moritz Grimm
f5998edcfd
Remove dead ID3Tag structures
2017-07-07 16:44:58 +02:00
Moritz Grimm
cfbbc94751
Assume the availability of POSIX signals
2017-07-07 16:44:58 +02:00
Moritz Grimm
71e5820df1
Make cmdline_parse() restartable
2017-07-07 16:44:58 +02:00
redswitchio
582c0b67ad
Fixed the copypasta mistake of using the PLACEHOLDER_ARTIST value in the PLACEHOLDER_ALBUM conditional.
2017-07-05 05:09:26 -04:00
redswitchio
cd98caa5fb
Added additional code needed to support the album field when constructing the metadata string.
2017-07-04 21:34:58 -04:00
Moritz Grimm
cec131e83a
Fix misleading function name
2016-10-14 16:23:32 +02:00
Moritz Grimm
cce2455bc6
Rename config file (re)load function for clarity
2016-10-14 16:19:39 +02:00
Moritz Grimm
2124bf7486
Merge branch 'develop' of ssh://git.xiph.org/ezstream into develop
2016-05-19 14:59:23 +02:00
Moritz Grimm
b1aecc835a
Put "get_metadata_str()" where it belongs
2016-05-19 14:37:21 +02:00
Moritz Grimm
3135c9e517
ezstream.c/libshout untangle 2/2
2016-05-19 14:19:31 +02:00
Moritz Grimm
4d787b10a3
Streamline set_metadata() behavior on error/success
2016-05-19 14:12:34 +02:00
Moritz Grimm
3ba4b06478
Move urlParse() to util.c
2016-05-19 14:06:31 +02:00
Moritz Grimm
79ab90ef34
Fix typo in log message
2016-05-03 15:42:15 +02:00
Moritz Grimm
0f6de67977
Depend on TagLib unconditionally
...
- Removes effectively untested code paths
- Removes libvorbisfile dependency
2016-04-22 15:56:30 +02:00
Moritz Grimm
9eff442169
Squelch conversion warnings with explicit casts
2016-04-22 15:44:01 +02:00
Moritz Grimm
9738668129
Fix SET_INTNUM copypasta type error
2016-04-22 15:43:20 +02:00
Moritz Grimm
7491b868c5
Add explicit casts to squelch pointer signedness warnings
2016-04-22 15:31:20 +02:00
Moritz Grimm
a9728c54be
ezstream.c/libshout untangle 1/2
2016-03-24 18:16:00 +01:00
Moritz Grimm
1fe0ab595c
Improve fgets() error handling
2016-03-24 17:50:31 +01:00
Moritz Grimm
f05462c7ea
Merge remote-tracking branch 'origin/feature/stream_refactor' into feature/https_support
2016-03-07 11:12:22 +01:00
Moritz Grimm
a337c74ea4
Update TLS configuration to match libshout requirements
2016-03-04 18:20:17 +01:00
Moritz Grimm
4b087df3ab
Add plumbing for future encapsulation of libshout usage
2015-06-15 08:04:57 +02:00
Moritz Grimm
77fe651bff
Move config plausibility check to CFG and test it
2015-06-11 23:50:31 +02:00
Moritz Grimm
744511ffe2
Expose "configuration stashing" API
2015-06-09 23:02:45 +02:00
Moritz Grimm
f367140d82
Rework stream_setup()
2015-06-02 23:45:55 +02:00
Moritz Grimm
b0eda7b48c
Add cfg_get_stream_format_str()
2015-06-02 23:45:10 +02:00
Moritz Grimm
fb7d3b4e38
Check args prior to allocating resources
2015-06-01 14:57:20 +02:00
Moritz Grimm
8d9f475e38
Simplify playlist_program()
2015-05-30 21:48:46 +02:00
Moritz Grimm
cf141edd52
Fix crash in error path
2015-05-28 16:12:38 +02:00
Moritz Grimm
8b42aff63d
Fix metadata.c includes (esp. for stat())
2015-05-28 14:09:13 +02:00
Moritz Grimm
d929bd65a7
Fix whitespace
2015-05-28 14:02:17 +02:00
Moritz Grimm
2b004da593
Relax "group writeable!" error for compatibility w/ recent Linux
2015-05-28 08:38:51 +02:00
Moritz Grimm
6422607b1f
Expect stat() availability
2015-05-28 08:37:49 +02:00
Moritz Grimm
715be8094b
Switch to clock_gettime(CLOCK_MONOTONIC)
2015-05-28 00:10:52 +02:00
Moritz Grimm
aab0afaa82
Fix media type handing wrt playlists
...
This was a regression introduced by the cfg refactor
2015-05-27 00:27:08 +02:00
Moritz Grimm
74dce6af5b
Remove unneeded functionality
2015-05-27 00:26:59 +02:00
Moritz Grimm
bf4150dcce
Make playlist_t a truly opaque type
...
... and don't initialize global values twice while here
2015-05-26 23:40:48 +02:00
Moritz Grimm
7a4c7291da
Fix log level
2015-05-26 14:22:56 +02:00
Moritz Grimm
b4fe40532a
Simplify log_syserr() (no need to be thread-safe)
...
Using strerror_r() w/ proper error checking is impossible, if the
system uses GNUisms (and losing _GNU_SOURCE's extensions is equally
painful)
Also, this change probably fixes a "abort() instead of error" bug.
2015-05-24 11:26:04 +02:00
Moritz Grimm
4c6a879303
Make log testable: return true value when something was logged
2015-05-24 09:05:40 +02:00
Moritz Grimm
b920aadd70
Error string argument is no longer used
2015-05-22 22:34:48 +02:00
Moritz Grimm
c304dfe48a
Support passthrough "encoders" again
2015-05-22 00:20:54 +02:00
Moritz Grimm
b8ea620f7a
Default to port 8000
2015-05-22 00:19:57 +02:00
Moritz Grimm
34bdab6a36
Fix cfg_get_metadata_program() and add tests when NULL is expected from getters
2015-05-21 23:25:05 +02:00
Moritz Grimm
dcb5303b4b
Consistently set errstrp
2015-05-21 01:24:09 +02:00
Moritz Grimm
d1ae8fa17d
Properly traverse list
2015-05-21 01:23:47 +02:00
Moritz Grimm
8eef9842b1
cfg_init() returns int
2015-05-18 23:49:52 +02:00
Moritz Grimm
02b42c8446
Plug memory leak
2015-05-18 23:36:43 +02:00
Moritz Grimm
876660fc17
Test and fix cfg_*_get()
2015-05-16 00:39:36 +02:00
Moritz Grimm
1d02b841f0
Update ezstream-file(1) for new command line arguments
2015-05-15 22:47:19 +02:00
Moritz Grimm
0d66baf9f7
Merge branch 'feature/unit_tests' into feature/config_refactor
2015-05-14 23:37:22 +02:00
Moritz Grimm
4cffc5102d
Initialize cfg for refresh_interval
2015-05-14 23:28:08 +02:00
Moritz Grimm
b62d4b4317
Fix regression in handling of refresh_interval
2015-05-14 23:23:48 +02:00
Moritz Grimm
bd04a66c79
Add -r command line option: explicitly enable real-time status line
2015-05-12 17:35:04 +02:00
Moritz Grimm
1115ab16db
Return NULL in case of unset program_config_file
2015-05-12 17:33:08 +02:00
Moritz Grimm
36511d9408
Add script to generate coverage reports using lcov.
2015-05-12 12:06:49 +02:00
Moritz Grimm
9c842281fa
Make LIBOBJS available to libtool libs
2015-05-12 11:32:21 +02:00
Moritz Grimm
8355fde68a
Merge branch 'feature/config_refactor' into feature/unit_tests
2015-05-11 23:48:50 +02:00
Moritz Grimm
f7bc34e8f2
Use a macro to set UINT values
2015-05-11 23:48:07 +02:00
Moritz Grimm
9f975551ee
Merge branch 'feature/config_refactor' into feature/unit_tests
2015-05-11 22:47:27 +02:00
Moritz Grimm
d2468432db
Make behaviour of setters consistent
2015-05-11 22:45:22 +02:00
Moritz Grimm
f6ec4e1aeb
Add check unit testing framework w/ 2 dummy tests
2015-05-06 23:45:52 +02:00
Moritz Grimm
33eb55ae34
Relocate config file check
...
* Stop supporting systems without stat(2) while here
* Remove some additional configure checks for ubiquitous functions (>=C99)
2015-05-06 17:00:23 +00:00
Moritz Grimm
05c7e32997
Fix command line parsing regression
2015-05-06 16:59:05 +00:00
Moritz Grimm
43e48648fa
Refactor configuration (work in progress)
...
* Move -m and -n command line options into the config file
* Restructure configuration file:
- Group into "server", "stream", "media", "metadata", "decoders", and
"encoders"
- Untangle decoder and encoder:
o Decoders match on file extensions and convert to a canonical "internal"
format
o Encoders create one of the supported stream formats, potentially using
different parameters (like bitrate)
- Consistently specify stream format
- Enable reencoding by selecting an encoder
* Architecturally separate configuration file storage from parsing
- Allows for different configuration back-ends in the future, like
YAML, SQL, REST API, ...
* Support roll-back in case of error on (re)load
* Anticipate HTTPS support
2015-05-06 00:38:00 +02:00
Moritz Grimm
ffa2a01c96
Add missing change to xreallocarray() in previous
2015-04-23 00:02:51 +02:00
Moritz Grimm
ab268e9616
Strip xalloc to something much simpler
...
The libxalloc was reincarnated long ago in a separate utility library.
It did a good job help make ezstream have robust memory management years ago,
but now it's time to move on and get back to basics.
The replacement introduces reallocarray(), which is an overflow-checking
alternative to both malloc (NULL ptr) and realloc().
2015-04-22 23:38:19 +02:00
Moritz Grimm
c6747ef998
Prefer SIGSEGV over SIGABRT in case of explicit internal API abuse
...
While here, declare some module-internal functions static.
2015-04-22 19:50:00 +02:00
Moritz Grimm
41058dac79
Use log API for all regular output messages
...
This makes ezstream log via syslog and stderr. The "real-time status
line" remains unaffected.
While here, make the output more concise and consistent.
2015-04-22 19:29:20 +02:00
Moritz Grimm
19af508eae
Add a simple logging API
...
Uses syslog
2015-04-16 19:30:41 +02:00