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

308 Commits

Author SHA1 Message Date
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
moritz
256394e811 Less code is always better.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13616 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-24 17:23:09 +00:00
moritz
f1028b0356 UTF-8 support is now ready to be used.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13609 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-24 11:57:09 +00:00
moritz
0b3652810e Work in progress: Proper UTF-8 support that doesn't affect console output.
No new code is actually used, yet, as there's still more work to be done.
This adds the whole iconv-related build stuff and moves most auto* files
into build-aux/.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13607 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-24 00:52:13 +00:00
moritz
c71530c0e2 Fix native ID3v1 reading (no-op, since affected fields were not used.)
git-svn-id: https://svn.xiph.org/trunk/ezstream@13606 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-24 00:46:21 +00:00
moritz
f481b60418 Change the MP3 special case, so working with metadata is more flexible. Turns
out that there is still a problem with MP3 streams that are being reencoded.
This allows me to try out more solutions.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13592 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-23 13:48:42 +00:00
moritz
4a4a0dc700 The -c parameter is not optional.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13587 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-22 15:19:17 +00:00
moritz
8acd8622d0 Make main() smaller by moving the libshout setup into a separate function.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13586 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-22 15:15:49 +00:00
moritz
78f58cbd27 Ticket #1225, reported by matpoc at lenta dot ru: Looks like there's demand
for normalizing metadata strings, which -- I assume -- is due to strange
(MP3) encoders that do weird things. Well, why not. It's not too intrusive,
and disabled by default. Enable string normalization with the new -n command
line parameter.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13544 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-14 03:43:35 +00:00
moritz
a4b1f2b7f6 Ticket #1225, reported by matpoc at lenta dot ru: Bring back special case
for streaming MP3 files without reencoding, which was lost during the many
changes in 0.3.0 and subsequently forgotten. Sorry for the inconvenience,
and thanks for the report.


git-svn-id: https://svn.xiph.org/trunk/ezstream@13542 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-14 03:32:13 +00:00
moritz
cd26639a15 Since playlist_t is using size_t, change two unsigned longs to size_t as well.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13467 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-08 21:52:50 +00:00
moritz
3531b646cf WIN32 #ifdef reduction.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13463 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-08 14:20:41 +00:00
moritz
709ae55108 Sync.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13460 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-08 13:24:29 +00:00
moritz
71a41f876c Rename shutdown() to ez_shutdown() to prevent a function name clash on Windows.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13458 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-08 13:15:04 +00:00
moritz
086b61a190 Use a better \n and \r trimming idiom after fgets().
git-svn-id: https://svn.xiph.org/trunk/ezstream@13457 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-08 13:04:49 +00:00
moritz
539100e6fc It's good to know how to spell the own email address.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13443 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-04 17:24:18 +00:00
moritz
9dbe97bf47 Merge.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13441 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-04 17:10:37 +00:00
moritz
c8a98a5b72 Sprinkle in some consistency ...
git-svn-id: https://svn.xiph.org/trunk/ezstream@13440 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-04 17:10:29 +00:00
moritz
3dd13ec7aa Do a clean shutdown on SIGINT and SIGTERM.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13438 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-04 17:04:50 +00:00
moritz
c444af6814 Merge xalloc changes.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13437 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-04 16:46:17 +00:00
moritz
53fa75fdba Now that xalloc is pretty much an external entity, explicitly set freed
pointers to NULL if we lateron expect them to be NULL (no longer rely on
xalloc to do this for us.)


git-svn-id: https://svn.xiph.org/trunk/ezstream@13436 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-04 16:39:09 +00:00
moritz
f282e3d474 Do not xfree() something that wasn't x*alloc()'ed.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13433 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-04 16:09:50 +00:00
moritz
62661080dc Switch to using the (integrated) libxalloc.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13431 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-08-02 18:48:26 +00:00
moritz
c1ca736734 Cosmetic changes; no functional change. Use the calloc()-style API correctly.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13304 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-07-24 15:29:16 +00:00
moritz
452a8e83cb Cosmetic changes. No functional change.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13303 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-07-24 15:13:45 +00:00
moritz
ef221fcc38 Fix the dang file descriptor leak of < 0.4.1 for good; the old fix only
took care of it partially. Diagnosed with the help from someone, who wishes
to stay anonymous. Thanks!


git-svn-id: https://svn.xiph.org/trunk/ezstream@13296 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-07-24 13:04:01 +00:00
moritz
af6479c0d9 D'oh! Make <stream_once/> work with playlists as well. Problem description
found in the Icecast mailing list archive, in a mail by Geoff Shang, via
Google. Let's hope that the bug tracker prevents this kind of bug hunting
in the future ...


git-svn-id: https://svn.xiph.org/trunk/ezstream@13272 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-07-16 00:32:17 +00:00
moritz
24568a7ec8 Change my email address to the new one.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13259 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-07-14 01:32:28 +00:00
moritz
ec14d3b017 Plug an fd leak, triggered by using -q.
git-svn-id: https://svn.xiph.org/trunk/ezstream@13257 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-07-14 01:20:45 +00:00
moritz
cd37dd2e26 Make this build on Windows and not segfault the MIPSpro C compiler version <7.2.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12717 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-11 00:28:33 +00:00
moritz
6a40d2f7a5 taglib_file_audioproperties returns const
git-svn-id: https://svn.xiph.org/trunk/ezstream@12714 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-10 23:28:13 +00:00
moritz
a25656392e Remove unreachable statement.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12713 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-10 22:44:02 +00:00
moritz
1d4426e834 Do not execute group-/world-writeable playlist and metadata scripts.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12712 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-10 21:23:15 +00:00
moritz
6eb5d8f557 Include the total playing time of a song in the "real-time" output, if TagLib
supplies it.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12711 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-10 21:18:21 +00:00
moritz
c5aaa28594 More metadata featuritis, add <metadata_format/> and implement support for
'@a@', '@t@' and '@s@'.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12707 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-10 19:03:07 +00:00
moritz
6f779c21f3 Commit work-in-progress towards more fine-grained control over metadata. This
has not been checked for changes to previous behavior and isn't complete, yet.
More to come.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12701 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-10 02:27:48 +00:00
moritz
bc6ae77abd Various tweakings, and sync Win32 README with new reality.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12698 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-09 13:43:26 +00:00
moritz
304908bff4 Add new <metadata_progname> configuration option, which specifies an external
program/script to get metadata from. Also include SIGUSR2 handling that triggers
metadata updates from the external program mid-stream.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12693 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-09 02:30:29 +00:00
moritz
163b7ca187 Squash a bug that I introduced a few hours ago ...
git-svn-id: https://svn.xiph.org/trunk/ezstream@12692 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-09 02:24:04 +00:00
moritz
40566705ae Shrink buffers to PATH_MAX.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12686 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-08 21:38:12 +00:00
moritz
84bf642a1e Fix playlist_free() as well ...
git-svn-id: https://svn.xiph.org/trunk/ezstream@12685 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-08 20:59:29 +00:00
moritz
3cd7528b07 Working TagLib support (optional.)
git-svn-id: https://svn.xiph.org/trunk/ezstream@12684 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-08 20:24:09 +00:00
moritz
46cdb29f16 Define SIZE_T_MAX to the real maximum of size_t.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12683 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-08 19:46:23 +00:00
moritz
832c21def2 Hmph. I've been stepping into the copy-of-pointer trap twice now. Fix it again.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12681 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-08 15:25:33 +00:00
moritz
900886ab3f Iterate towards optional TagLib support, as well as scripted metadata support.
This is just the first step and equivalent to current functionality.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12680 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-08 14:39:00 +00:00
moritz
a26710f497 Replace the very broken xfree() function with an xfree() macro - the main point
was to set ptr to NULL, but the function only set the copy of ptr to NULL.
Spotted by Karl Heyes, thanks a lot!


git-svn-id: https://svn.xiph.org/trunk/ezstream@12677 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-08 01:12:13 +00:00
moritz
e656688fbe Remove redundant code since the switch to xfree().
git-svn-id: https://svn.xiph.org/trunk/ezstream@12676 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-07 23:39:53 +00:00
moritz
ca41d8cac8 More code reorganization, move compatibility and utility functions out of
ezstream.c. Use a basename() function for Windows that behaves identical to
a modern Unix' basename().


git-svn-id: https://svn.xiph.org/trunk/ezstream@12673 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-07 21:01:16 +00:00
moritz
928719013e cosmetics
git-svn-id: https://svn.xiph.org/trunk/ezstream@12672 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-07 12:53:47 +00:00
moritz
697e4bc3c7 Fix logic error and prevent an endless loop on error(s) in the config file.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12630 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-04 15:59:06 +00:00
moritz
78c5cc3115 While rand() being crappy is true for most/all *nix systems, on Windows, this
is different. The shifting severely screwed up its randomness. Just leave it
away and systems that only have a bad version of rand() will have to just deal
with it.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12629 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-04 15:50:40 +00:00
moritz
79f9d809d5 More pre-release maintenance.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12628 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-04 15:16:36 +00:00
moritz
e025a58235 Add -V command line parameter to print the version number and exit.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12626 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-04 14:27:37 +00:00
moritz
2c8e1beef3 Some more cosmetic tweaks.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12620 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-03 20:17:33 +00:00
moritz
9a5b5ed973 Forgot one PATH_SEPARATOR instance ...
git-svn-id: https://svn.xiph.org/trunk/ezstream@12617 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-03 17:50:02 +00:00
moritz
6187391e2c Use size_t in strrcmp().
git-svn-id: https://svn.xiph.org/trunk/ezstream@12616 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-03 17:48:11 +00:00
moritz
c205414d70 Iterate back towards working Windows support.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12615 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-03 16:13:08 +00:00
moritz
1be748b206 STDERR_FILENO -> fileno(stderr), and fix a brain'o: Systems with limited or
no signals support obviously don't have SIG_HUP/SIG_USR1 defined.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12614 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-03 12:42:50 +00:00
moritz
539bb39322 Improve string to integer conversion stuff, and have another stab at the config
file parsing. Ezstream now prints each error it can find and then bails out,
instead of bailing out on the first error. Tweak URL parsing as well, and do
some cosmetic changes to the error messages.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12603 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-02 12:52:10 +00:00
moritz
956f674a44 Allow users to restrict the number of reconnection attempts. This also changes
how reconnections are handled in general: A recovered connection always skips
to the next tune as well, as it seems that at least for Ogg Vorbis, libshout
wants to see an Ogg header after a shout_open(). The new code makes this
behavior consistent among all formats.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12599 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-02 00:57:11 +00:00
moritz
2a511a64fc Enable more warnings on gcc, and do some miscellaneous cleanups.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12597 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-01 14:50:14 +00:00
moritz
ca6161358d Redirect only de-/encoder screen output to /dev/null with -q, and restore
standard error outside that popen() call.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12596 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-03-01 01:22:06 +00:00
moritz
ad46ff44c6 Add new <stream_once> configuration option for disabling continuous streaming.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12592 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-28 21:48:01 +00:00
moritz
7d51c20fb8 Add new playlist scripting feature (works similar to Ices 2.x.)
git-svn-id: https://svn.xiph.org/trunk/ezstream@12591 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-28 21:26:16 +00:00
moritz
1712f4f88f Replace geteuid() check with stat(), and make it an error if the configuration
file is group or world writeable. This is actually what the warning about root
was all about.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12590 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-28 15:35:07 +00:00
moritz
159ebfdd91 Back out hardly used ezsignals.h.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12589 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-28 13:53:58 +00:00
moritz
52f1750a70 Sync usageHelp() with new reality.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12585 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-28 11:03:06 +00:00
moritz
382c811b97 getopt() returns int, not char.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12575 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-27 14:42:14 +00:00
moritz
270c56c8bf Make Ezstream work properly and do the right thing, even when bombarded with
a flurry of simultaneous SIGHUP and SIGUSR1 signals. From what I can tell,
signal handling is now quite solid now. Achieve this by moving most of
streamFile() into a new sendStream() function, which is called within a new
do-while loop inside streamFile(). There, proper behavior is ensured and
a race condition resolved in favor of SIGHUP.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12564 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-25 18:28:05 +00:00
moritz
ea8d29f742 Switch from using signal() to sigaction() and friends, so that SA_RESTART can
be used. This is required for Solaris and possibly others, where signal handlers
have to be reinstalled after having caught one signal via signal(). Also prevent
Ezstream from being killed by a handled signal in streamFile(), where they
can interrupt fread()'s system calls. This improves matters, but isn't perfect,
yet. A SIGHUP signal can still cause skipping to the next track, which should
be triggered only by SIGUSR1.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12563 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-25 16:00:41 +00:00
moritz
733c989d1b Various cleanups and auto-fu tweaks.
* Make Makefile.am files look alike as much as possible.
 * Remove debug: target and don't mess with the users DEBUG environment
   variable: Autoconf checks for -g and automatically adds it to CFLAGS, which
   is overridden by the user's $DEBUG. If the user didn't specify one, "make
   install" will strip the resulting binaries and leave the debugging symbols
   intact otherwise.
 * Remove profile: target, as it is quite pointless in Ezstream. Also, the user
   can add profiling flags via the $DEBUG variable as well.
 * Remove -ffast-math and -fsigned-char from gcc, and enable two additional
   warnings instead.
 * Unconfuse Solaris compiler flags (unfortunately, the configure script still
   fails in the libshout check with some obscure linker error): Do not force
   -x04 and -fast optimizations, let the user decide (it doesn't matter for
   Ezstream anyways.) Remove -xgc92, which is deprecated and actually makes
   the resulting binary run slower on SPARC. Also remove -fsimple, which does
   not help and has the potential of causing trouble, and don't enable verbose
   warnings just to disable them afterwards with -w. Leave only -v for verbose
   warnings.
 * Const'ify getFormat*() functions and blankString, and squelch a few const-
   related warnings.
 * Squelch a signedness warning and fix two ;; syntax errors.
 * Add a snapshot target to Makefile.am that creates a tarball of the form
   ezstream-snapshot-YYYYMMDD.tar.gz.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12562 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-25 14:00:15 +00:00
moritz
04e087fc11 Merge changes to the remaining two functions, openResource() and streamFile(),
after which the merge is complete. Changes in openResource():
 * Let the caller know whether we're streaming from standard input, and give
   it a copy of the metadata information.
 * Make filename extension matching case insensitive. Ezstream can now stream
   foo.Ogg out of playlist.tXt. (On that note, another item from the
   parseConfig() commit log message was missing: <format/> and <match/> are
   also case insensitive now.)
Changes in streamFile():
 * New feature: Skip currently playing track when receiving SIGUSR1.
 * New feature: When using both the new -q and -v command line parameters,
   Ezstream now displays some "real-time" information: playlist position,
   elapsed time streaming the current track, and approximate bitrate in kbps.
 * Fix the fread() loop by moving the "if read bytes > 0" condition into the
   while statement, and check with ferror() afterwards whether an error occured.
 * Remove redundant shout_delay() call. Ezstream puts itself to sleep with
   shout_sync().
 * Return a value that makes sense in main()'s do-while loop, instead of
   whatever shout_send() returned last.
 * Remove or prettify a few messages.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12557 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-25 03:49:30 +00:00
moritz
31b8880bd4 Merge processMetadata() changes:
* Fix how the metadata string is generated. Don't include the " - " in the
   output if either artist or title are missing from ID3v1/Vorbis tags.
 * Print the correct error message when ov_open() fails.
 * Improve filename-based generation of metadata. Use a copy of fileName for
   basename(), which may modify its argument in some places where the old, weird
   POSIX implementation is used. Also, basename() is not infallible, but when
   it fails, it is annoying for us. Assert that it cannot fail since we feed
   it with path names < PATH_MAX (handled in playlist.c and configfile.c.) In
   short, make processMetadata() always return something more or less useful
   as long as the file in question can be opened.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12554 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-25 03:10:13 +00:00
moritz
d657af0b8a Merge changes to replaceString() and buildCommandString(), and do the formatting
nitpickery to setMetadata(). Changes in replaceString():
 * Fix a heap overflow. replaceString() would happily replace multiple '@T@'
   and '@M@' placeholders and write into *dest until things blow up. Fix this
   by using safe string functions. Then completely prevent it by ensuring that
   it replaces only one placeholder per call (adjusting buildCommandString()
   accordingly) and already complaining to the user in parseConfig() about
   illegal, multiple placeholders in their command lines. (That parseConfig()
   change was missing from the commit log earlier.)
In buildCommandString():
 * Use xcalloc() instead of malloc() and get rid of the now redundant memset()
   calls.
 * Allow decoder command lines to contain the '@M@' metadata placeholder.
   Useful for combined de-/encoders like ffmpeg2theora.
 * Tweak message about "unsupported" format, which used to be false in the case
   of Ogg Theora streams.
 * Plug several memory leaks.
 * Don't print the "Executing command 'foo'" message in this function.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12553 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-25 02:36:40 +00:00
moritz
710570627d Merge changes to main(), urlParse() and streamPlaylist(). In main():
* Install the signal handler as late as possible.
 * Add new command line options: -v (verbose, use twice for even more verbose
   output) and -q (quiet, redirect standard error output from external de-/
   encoders to /dev/null.)
 * It is now an error to supply more than one -c parameter. This prevents
   unexpected results.
 * Add a stern warning when ezstream is running as root. Just Don't Do It.
   Leaving the configfile writeable to others by accident could mean instant
   root compromise.
 * Before handing the config file over to libxml, try to open it ourselves
   first. The error message from strerror() is a lot more helpful than the
   cryption I/O error printed by libxml.
 * Don't preallocate memory for urlParse().
 * Fix command line error messages, they seem to be for a different program
   than Ezstream.
 * More terse libshout error messages, just print which function failed.
   I consider these errors of questionable value for an end user, but at least
   a knowledgeable one will know instantly what went wrong.
 * Case insensitive matching of playlist file extensions.
 * Print the address, port and mountpoint that Ezstream is actually trying to
   connect to, instead of what the user supplied. That should make it easier
   to spot reasons for connect failures (e.g. typos.)
Changes in urlParse():
 * Let urlParse() allocate memory for hostname and mountpoint, as it knows
   how much memory is actually required.
 * Fix a buffer overflow of the tmpPort buffer by adding checks and using safe
   string functions.
 * Let the caller print an error message, instead of having the same printf()
   twice in urlParse().
The streamPlaylist() function has been rewritten to use the new playlist_*()
routines. Apart from the added playlist shuffle feature no functional change.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12552 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-25 01:14:36 +00:00
moritz
5a233a4e03 Begin merging ezstream.c changes. This first batch includes:
* License reference and various #include cleanups and additions that are
   required later.
 * Add new usage() and usageHelp() functions (which already contain what's
   to come.) Move them close to main() where getopt() is called.
 * New signal handler, which now no longer uses printf(). printf() is not safe
   to use in signal handlers. Use volatile sig_atomic_t types instead of ints
   as flags to set in the handler.
 * Formatting and const'ifying of WIN32-basename() and strrcmp(). Rearrange
   them so that the actual "worker functions" are grouped together.
 * Add function prototypes for those that are already up-to-date.
 * Rename ReplaceString() to replaceString() for consistency with other
   function names in Ezstream.
 * Prepare for portable *__progname usage.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12550 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-25 00:25:07 +00:00
moritz
52e249f73f Merge new parseConfig() function. There were many changes, but those are too
cumbersome to merge separately. They are:
 * The usual formatting nitpickings.
 * Don't leak memory in case of duplicate entries. Instead make it an error
   and print a helpful error message, with config file line number, to the
   user.
 * Replace the manual cast to (const xmlChar *) with libxml2's BAD_CAST.
   There probably won't be any UTF8 support in Ezstream any time soon ...
 * Remove redundant strlen() check - xmlNodeListGetString() never returns
   an empty string if (cur->xmlChildrenNode != NULL).
 * Use xstrdup() instead of malloc() + memset() + strcpy().
 * Ensure that boolean configration options are always either 1 or 0.
 * Ensure that path names given via <filename /> do not exceed PATH_MAX.
 * Add <shuffle /> configuration option for playlist shuffling.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12549 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 23:26:16 +00:00
moritz
99e0d7b8bf Add function to free a configuration in case of an error.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12548 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 23:05:51 +00:00
moritz
9d2434c46c Replace three if-conditionals with one, both in getFormatEncoder() and
getFormatDecoder(), with prettier formatting.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12546 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 22:56:18 +00:00
moritz
94ed7d1672 Const'ify configfile functions.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12545 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 22:50:14 +00:00
moritz
d912dfe302 Add license reference to configfile.c, sync #includes with what will be required
later, getEZConfig() formatting and remove unused printConfig() function.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12544 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 22:25:28 +00:00
moritz
4cd0959aa8 Begin merging configfile.* changes by cleaning up the .h file: Add license
reference, remove prototype of nonexistent getMetadataGrabber() function, and
do some formatting.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12543 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 22:16:39 +00:00
moritz
5d3fc1ddda Commit header with three macros that help with signal handling. Will be actually
used later. Now, all new files are in.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12541 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 22:01:35 +00:00
moritz
d21d0873f8 Add files with safe strlc*() string functions, and hook all new files into
Makefile.am. Also let "make clean" clean up coredumps and editor backup files.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12527 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 20:57:02 +00:00
moritz
2b0c3e6149 Add new playlist handling functions.
git-svn-id: https://svn.xiph.org/trunk/ezstream@12525 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 20:50:33 +00:00
moritz
5d932e4191 Add new utility functions, for memory management. These do The Right Thing and
never return NULL.


git-svn-id: https://svn.xiph.org/trunk/ezstream@12524 0101bb08-14d6-0310-b084-bc0e0c8e3800
2007-02-24 20:49:25 +00:00
oddsock
480000c33a added some reconnect logic
fixed a buffer overflow on large id3tags
use pclose for popen'd file handles


git-svn-id: https://svn.xiph.org/trunk/ezstream@10589 0101bb08-14d6-0310-b084-bc0e0c8e3800
2005-12-14 21:13:25 +00:00
oddsock
e48b3b61aa cleanup of config files
fixed reencoding bug on win32
bump to version 0.2.0

git-svn-id: https://svn.xiph.org/trunk/ezstream@8612 0101bb08-14d6-0310-b084-bc0e0c8e3800
2005-01-05 00:38:09 +00:00
oddsock
d23ebe69e8 add passthorough support for unknown types
git-svn-id: https://svn.xiph.org/trunk/ezstream@8519 0101bb08-14d6-0310-b084-bc0e0c8e3800
2004-12-22 01:49:56 +00:00
oddsock
07688873e2 some win32 compilation fixes
git-svn-id: https://svn.xiph.org/trunk/ezstream@7171 0101bb08-14d6-0310-b084-bc0e0c8e3800
2004-07-19 03:48:12 +00:00
oddsock
0968f1773c Added reencoding capabilities to ezstream.
git-svn-id: https://svn.xiph.org/trunk/ezstream@7170 0101bb08-14d6-0310-b084-bc0e0c8e3800
2004-07-19 03:12:31 +00:00
oddsock
7dcb27fcf4 support for theora streams
git-svn-id: https://svn.xiph.org/trunk/ezstream@7103 0101bb08-14d6-0310-b084-bc0e0c8e3800
2004-07-12 19:13:14 +00:00
oddsock
b85a6a2ca3 added ability to send a signal (SIGHUP) which will re-read the current playlist (m3u) that is being processed. When this happens, ezstream will pick up from the last track that was played.
git-svn-id: https://svn.xiph.org/trunk/ezstream@6563 0101bb08-14d6-0310-b084-bc0e0c8e3800
2004-04-21 13:48:22 +00:00
oddsock
4315ddd571 * set read mode to binary for stdin on win32
* add libXML to project file
* bump version number


git-svn-id: https://svn.xiph.org/trunk/ezstream@5804 0101bb08-14d6-0310-b084-bc0e0c8e3800
2004-02-02 04:37:42 +00:00
oddsock
35f54caeba Initial revision
git-svn-id: https://svn.xiph.org/trunk/ezstream@5800 0101bb08-14d6-0310-b084-bc0e0c8e3800
2004-01-30 17:19:45 +00:00