1
0
mirror of https://gitlab.xiph.org/xiph/ezstream.git synced 2024-11-03 04:17:18 -05:00
Commit Graph

244 Commits

Author SHA1 Message Date
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
Moritz Grimm
85c90a3c80 Add support for compiler attributes 2015-04-16 19:30:36 +02:00
Moritz Grimm
9bc65bf717 Factor out command line parsing 2015-04-16 19:30:08 +02:00
Moritz Grimm
4062cc190a Streamline -s option by always requiring an option argument 2015-04-16 19:25:40 +02:00
Moritz Grimm
e3b3ed4cf9 Remove active support for Windows and certain legacy UNIX systems 2015-04-15 23:16:12 +02:00
Moritz Grimm
dd1ab911c9 Two more indent fixes. 2015-04-15 13:20:32 +02:00
Moritz Grimm
26dd4d2a8e Indent closer to my favorite style(9)
Why yes, it /is/ KNF!
2015-04-13 23:28:21 +02:00
Moritz Grimm
400ef3c9cc Remove comments mentioning the FSF postal address
I do not plan to ever keep that up to date in case they move again.
If you need a copy of the GPL, use the Internet or read COPYING.
2015-03-24 22:42:06 +01:00
Moritz Grimm
c243ed5971 Fix cast 2015-02-27 23:02:55 +01:00
Moritz Grimm
739a08b5b9 Untangle compatibility code
* update to latest strlc*(3) and strtonum(3) functions
* isolate local_basename()
2015-02-27 22:42:51 +01:00
Moritz Grimm
00017d2165 Unconditionally include compat 2015-02-27 15:17:24 +01:00
Moritz Grimm
291ed50044 Drop RCS ID tag 2015-02-23 13:51:55 +01:00
Moritz Grimm
8819f0f9f9 Require automake 1.10 everywhere 2015-02-23 13:51:47 +01:00
Moritz Grimm
a7f3ae476d Always include time.h. 2015-01-17 23:50:11 +01:00
Moritz Grimm
7790164cc3 Consolidate INCLUDES into AM_CPPFLAGS 2015-01-17 23:34:32 +01:00
Moritz Grimm
dd4c241fef Update copyright and/or author email 2015-01-17 22:34:34 +01:00
Moritz Grimm
6211bc8506 Fix a shell command injection vulnerability in metadata
This has been reported by Alexandre Rebert in February 2013(!).
The time to fix is terrible; luckily, the affected user base is likely to be
very small.
2015-01-07 22:49:09 +01:00
Moritz Grimm
29ae1b351b Remove unneccessary assignment 2015-01-04 23:43:25 +01:00
Moritz Grimm
10f739f6f3 Add option -m to disable active metadata updates
Requested by cmodyssey via ticket #1620:
"Allow ezstream to stop it sending metadata information by configuration"
2015-01-03 23:19:28 +01:00
Moritz Grimm
f04c395106 Do not close stdin on EOS
From gquintard via ticket #2045:
"Not sending data to stdin can throw ezstream into an infinite loop"
2015-01-03 00:08:12 +01:00
moritz
549af56184 Add new <metadata_refreshinterval/> feature
Add new <metadata_refreshinterval/> feature and configuration option. Based on
a patch by Matthew Adams (thanks!), with minor changes and documentation
additions by me.

(cherry picked from commit 4176545211)
2015-01-01 23:41:31 +01:00
moritz
000320afa5 Teach ezstream a different mode of operation, as a one-shot line shuffling tool.
git-svn-id: https://svn.xiph.org/trunk/ezstream@16537 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-30 21:55:24 +00:00
moritz
c59c0c9847 Support reading playlists from standard input.
git-svn-id: https://svn.xiph.org/trunk/ezstream@16536 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-30 21:46:15 +00:00
moritz
c7f262ddf8 Move the verbose error check where it belongs.
git-svn-id: https://svn.xiph.org/trunk/ezstream@16534 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-30 19:41:59 +00:00
moritz
5121dd35de Do not quote $EZSTREAM, which breaks paths with whitespace but allows to
smuggle in default command line arguments.


git-svn-id: https://svn.xiph.org/trunk/ezstream@16531 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-30 18:23:12 +00:00
moritz
d3151cd65a Add new wrapper/convenience script ezstream-file.sh -- generates ezstreams on-
the-fly.


git-svn-id: https://svn.xiph.org/trunk/ezstream@16529 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-30 12:49:06 +00:00
moritz
f8c39fa992 Remove pointless and (at this point) irritating warning message.
git-svn-id: https://svn.xiph.org/trunk/ezstream@16528 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-29 09:37:39 +00:00
moritz
995c5d2b77 The original reason to abort ezstream when running into problems opening a media
file was to prevent a very verbose infinite loop (e.g. when accidentially
playing an outdated playlist.) Bring that back by aborting after 100 subsequent
errors.


git-svn-id: https://svn.xiph.org/trunk/ezstream@16527 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-29 09:36:18 +00:00
moritz
322b88412f ... also fix ezstream in this regard: No need to complain when receiving such
an empty line, and not receiving any output should not be a fatal error.
Consider the latter to be "end-of-playlist", too.


git-svn-id: https://svn.xiph.org/trunk/ezstream@16526 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-29 09:14:12 +00:00
moritz
cae7e0029a #1585: Continue when openResource() fails.
git-svn-id: https://svn.xiph.org/trunk/ezstream@16497 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-08-22 10:03:45 +00:00
moritz
c6a686560e Akos Veres suggested that ezstream should be able to set the login username,
and I concur.


git-svn-id: https://svn.xiph.org/trunk/ezstream@16319 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-07-22 20:19:38 +00:00
moritz
1951ddd827 Actually, we agreed on GPLv2 only ...
git-svn-id: https://svn.xiph.org/trunk/ezstream@16150 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-06-21 14:35:27 +00:00
moritz
5a0bfa143b Finish up the modifications to the Windows build. In case anything remains to be done, it'll be nits.
git-svn-id: https://svn.xiph.org/trunk/ezstream@15798 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-18 20:24:35 +00:00
moritz
9375b750e8 Mh... compiling before commit would've helped.
git-svn-id: https://svn.xiph.org/trunk/ezstream@15797 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-18 20:15:24 +00:00
moritz
363318fa41 Make metadata_get_name() return UTF8, which is what the rest of ezstream now
expects. From Roman Donchenko.


git-svn-id: https://svn.xiph.org/trunk/ezstream@15796 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-18 19:57:15 +00:00
moritz
7e8656313d Repair some fallout from previous commits, and work more on Win32 builds.
git-svn-id: https://svn.xiph.org/trunk/ezstream@15795 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-18 19:55:20 +00:00
moritz
c0b09af703 Work towards cleaner portability goo, and remove some ununsed code while there.
git-svn-id: https://svn.xiph.org/trunk/ezstream@15794 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-18 09:10:28 +00:00
moritz
842d72adc0 Bump copyright year where applicable.
git-svn-id: https://svn.xiph.org/trunk/ezstream@15789 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-17 18:29:15 +00:00
moritz
dc547dcbbf Native EOL-style, and Id tags in a couple of places.
git-svn-id: https://svn.xiph.org/trunk/ezstream@15788 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-17 18:20:58 +00:00
moritz
df2b05bb61 #1398: Make optional components optional. (For real.)
git-svn-id: https://svn.xiph.org/trunk/ezstream@15782 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-16 22:59:28 +00:00
moritz
90d4a1a6a3 It's stupid to put my own copyright on a file where I didn't really write the
code. Luckily, I had the proper copyright statement in there already, so moving
it fixes things.


git-svn-id: https://svn.xiph.org/trunk/ezstream@15781 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-16 20:39:22 +00:00
moritz
b11e6acb36 Squelch another bunch of warnings after checking that what's happening is what's
wanted.


git-svn-id: https://svn.xiph.org/trunk/ezstream@15780 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-16 20:22:56 +00:00
moritz
f193a9d5ad Use a wrapper around getopt() for portability. This uses the system getopt()
whenever possible, and otherwise uses a stripped down, single options only,
BSD getopt() (which is smaller and doesn't come with ifdef-stuff-in-features.h.)


git-svn-id: https://svn.xiph.org/trunk/ezstream@15779 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-16 20:12:29 +00:00
moritz
2e33855113 Guarantee that iconvert() never returns NULL. This is a clumsy, but effective
way to prevent NULL dereferences after the recent character conversion changes
in other parts of ezstream.


git-svn-id: https://svn.xiph.org/trunk/ezstream@15778 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-16 19:51:26 +00:00
moritz
9acbffc2dd Overhaul the ezstream build system, using my own library of autoconf macros.
There are a few benefits to this, but the main reason is consistency and me
completely understanding what's going on. Regressions are not expected, but
wouldn't surprise either ... this needs lots of testing.


git-svn-id: https://svn.xiph.org/trunk/ezstream@15776 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-16 00:08:31 +00:00
moritz
4eab64df5d Assorted type fixes, unshadowing of variables, etc.
git-svn-id: https://svn.xiph.org/trunk/ezstream@15775 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-15 17:18:56 +00:00
moritz
ae3dd91581 Perform more charset conversions where necessary. This should fix the handling
of files with non-ASCII filenames, as well as some more cases related to
metadata.
From Roman Donchenko <DXDragon at yandex dot ru>, with some minor fixes by
myself.


git-svn-id: https://svn.xiph.org/trunk/ezstream@15770 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-15 11:05:44 +00:00
moritz
057bc88dad Fixes for MinGW.
From Roman Donchenko <DXDragon at yandex dot ru>.


git-svn-id: https://svn.xiph.org/trunk/ezstream@15769 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-15 11:00:43 +00:00
moritz
97bfd5b1de Add missing include for shout_t.
From Roman Donchenko <DXDragon at yandex dot ru>.


git-svn-id: https://svn.xiph.org/trunk/ezstream@15768 0101bb08-14d6-0310-b084-bc0e0c8e3800
2009-03-15 10:59:55 +00:00
moritz
ddb6c4091f Ignore SIGPIPE, which turned out to be the cause for silent deaths of long-
running ezstream processes.


git-svn-id: https://svn.xiph.org/trunk/ezstream@14255 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-12-01 16:02:55 +00:00
moritz
259e3c1a62 Improve output messages some more when dealing with standard input.
git-svn-id: https://svn.xiph.org/trunk/ezstream@14009 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-10-18 07:39:18 +00:00
moritz
ee75e2a315 Wow, now how did that one creep in an remain undetected for so long?
git-svn-id: https://svn.xiph.org/trunk/ezstream@14008 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-10-18 06:38:51 +00:00
moritz
e81b8b9f6e This needs changin' as well.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13999 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-10-16 14:51:21 +00:00
moritz
fa310e948b Fix use of yet another uninitialized-if-streaming-from-stdin variable. This
prevents bogus output in the "real-time" status line.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13998 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-10-16 14:46:37 +00:00
moritz
1f614e6486 Return a proper error message when there's no more data to read from standard
input.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13997 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-10-16 14:44:42 +00:00
moritz
8460e4bf81 Ticket #1247: Don't dereference uninitialized junk pointers; this fixes a
crash when streaming standard input without also using a metadata program
(d'oh.)


git-svn-id: https://svn.xiph.org/trunk/ezstream@13996 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-10-16 14:28:23 +00:00
moritz
87c01b03ad Warn, in verbose mode, when dealing with empty playlists.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13802 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-09-14 07:01:18 +00:00
moritz
1086dc4f15 In this case, the pl->num check is superfluous.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13801 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-09-14 07:00:41 +00:00
moritz
b3f845a60d If there are no playlist entries, dereferencing pl->list causes a segfault.
Fix this by checking pl->num early.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13800 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-09-14 06:59:28 +00:00
moritz
957f1d94c5 gettimeofday() everywhere; now ezstream behaves almost the same on Windows
compared to Unix. Also mention TagLib support on Windows in NEWS.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13668 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-31 11:47:54 +00:00
moritz
509dc8511e Fake the location of my basename() source to be more clear.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13667 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-31 11:46:05 +00:00
moritz
df482694c0 * Back out conversions to ISO8859-1.
* Add 'charset=UTF-8' to the metadata update query arguments. The current
  release of Icecast will ignore it, and the next one will know how to handle
  it (karl@ is still working on it at this point, but previous diffs worked
  as advertised.)
* If no metadata format string is available and we have both an artist and
  a title, use the artist/title way of updating instead of the generic "song"
  interface.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13658 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-30 11:31:33 +00:00
moritz
cf6761f437 Need to consider converting from an unknown/unsupported codeset as well.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13626 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-25 14:37:42 +00:00
moritz
35c07b9516 Whoops. Fix error message ...
git-svn-id: https://svn.xiph.org/trunk/ezstream@13624 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-25 14:16:07 +00:00
moritz
15064493bc Get closer to what Icecast does (or will) expect wrt used codesets. I still
disagree with the new ISO-8859-1 assumption for non-Ogg streams, because
(for example) with ID3 tags, a codeset is simply not part of the specification
and a better assumption would be that they are in the user's locale.
Therefore, it would make more sense, IMO, to clearly specify that ANY metadata
sent to Icecast should be UTF-8 and let the source client figure out the rest.
This would also answer the question what codeset an /admin user should use if
the content type of a mountpoint isn't known (although that can be figured out
with an unclean read of the mountpoint's stats beforehand.)


git-svn-id: https://svn.xiph.org/trunk/ezstream@13622 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-25 12:24:51 +00:00