ca6161358dRedirect only de-/encoder screen output to /dev/null with -q, and restore standard error outside that popen() call.
moritz
2007-03-01 01:22:06 +0000
6cdaac888dTweak XXX comment.
moritz
2007-03-01 00:34:57 +0000
9e0c427433Make the example configuration files directory configurable.
moritz
2007-03-01 00:10:12 +0000
ad46ff44c6Add new <stream_once> configuration option for disabling continuous streaming.
moritz
2007-02-28 21:48:01 +0000
7d51c20fb8Add new playlist scripting feature (works similar to Ices 2.x.)
moritz
2007-02-28 21:26:16 +0000
1712f4f88fReplace 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.
moritz
2007-02-28 15:35:07 +0000
159ebfdd91Back out hardly used ezsignals.h.
moritz
2007-02-28 13:53:58 +0000
8e56ed5c07Remove redundant paragraph.
moritz
2007-02-28 12:47:26 +0000
18f395b6ffMake a more standard distribution: Rename CHANGELOG to NEWS, bring back the complete ChangeLog and add mkcl.sh that contains the options to generate ChangeLog.
moritz
2007-02-28 12:44:56 +0000
631c6aa5feSwitch from a generated ChangeLog to a manually maintained and more compact CHANGELOG.
moritz
2007-02-28 11:06:46 +0000
52f1750a70Sync usageHelp() with new reality.
moritz
2007-02-28 11:03:06 +0000
6b01b59811Let MIPS[pro] C be chatty with warnings and check for basename() in libgen. Ezstream now builds on IRIX.
moritz
2007-02-27 14:44:46 +0000
382c811b97getopt() returns int, not char.
moritz
2007-02-27 14:42:14 +0000
3418a75a66Use backticks to execute xml2-config/xslt-config, which is more portable.
moritz
2007-02-27 14:41:51 +0000
43d8282bb3Document a caveat when building ezstream on Solaris with a different compiler than the one used to build libshout.
moritz
2007-02-27 12:46:56 +0000
5cd0b1aba9Make this work on static archs, and get one step closer to SunCC support on Solaris. Also, don't complain if libshout isn't thread-safe, as Ezstream isn't multithreaded.
moritz
2007-02-26 20:29:48 +0000
fddb4090c7Add m4/ to the distribution tarball.
moritz
2007-02-26 19:59:19 +0000
678e161e54Unbreak "make distcheck": $prefix is not a good default, use /usr/local instead. This makes it more likely that installed libogg and libvorbis are found, when the user (or autoconf) specifies a different --prefix. Users who installed their libraries in their homedir now have to set $OGG_PREFIX and $VORBIS_PREFIX, or set their respective --with arguments. Let the snapshot target use distcheck now that it works.
moritz
2007-02-26 15:28:50 +0000
e05ccb9f05Remove unused .m4 files and sync the used ones with Icecast.
moritz
2007-02-26 02:56:12 +0000
270c56c8bfMake 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.
moritz
2007-02-25 18:28:05 +0000
ea8d29f742Switch 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.
moritz
2007-02-25 16:00:41 +0000
733c989d1bVarious 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.
moritz
2007-02-25 14:00:15 +0000
04e087fc11Merge 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.
moritz
2007-02-25 03:49:30 +0000
31b8880bd4Merge 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.
moritz
2007-02-25 03:10:13 +0000
d657af0b8aMerge 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.
moritz
2007-02-25 02:36:40 +0000
710570627dMerge 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.
moritz
2007-02-25 01:14:36 +0000
b59da7de0cAdd check for geteuid(), which is better than checking for WIN32.
moritz
2007-02-25 00:35:48 +0000
5a233a4e03Begin 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.
moritz
2007-02-25 00:25:07 +0000
52e249f73fMerge 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.
moritz
2007-02-24 23:26:16 +0000
99e0d7b8bfAdd function to free a configuration in case of an error.
moritz
2007-02-24 23:05:51 +0000
2874fca043Fix typo in comment.
moritz
2007-02-24 23:03:51 +0000
9d2434c46cReplace three if-conditionals with one, both in getFormatEncoder() and getFormatDecoder(), with prettier formatting.
moritz
2007-02-24 22:56:18 +0000
94ed7d1672Const'ify configfile functions.
moritz
2007-02-24 22:50:14 +0000
d912dfe302Add license reference to configfile.c, sync #includes with what will be required later, getEZConfig() formatting and remove unused printConfig() function.
moritz
2007-02-24 22:25:28 +0000
4cd0959aa8Begin merging configfile.* changes by cleaning up the .h file: Add license reference, remove prototype of nonexistent getMetadataGrabber() function, and do some formatting.
moritz
2007-02-24 22:16:39 +0000
68acca112fClean core and backup files in this directory as well. Only ~2500 lines of diffs left to merge.
moritz
2007-02-24 22:03:36 +0000
5d3fc1dddaCommit header with three macros that help with signal handling. Will be actually used later. Now, all new files are in.
moritz
2007-02-24 22:01:35 +0000
1fca228230Let the configure script set a (hard-coded, for now) examples installation directory. This will be made configurable later.
moritz
2007-02-24 21:59:07 +0000
e74272332eAdd several checks that we need now, i.e. very soon.
moritz
2007-02-24 21:50:54 +0000
e811f2578bAM_CONFIG_HEADER -> AC_CONFIG_HEADERS, and move config.h into src/.
moritz
2007-02-24 21:46:05 +0000
d196074741Autoconf 2.61 has a nice macro AC_USE_SYSTEM_EXTENSIONS. Use it, depend on autoconf-2.61 for it and remove the annoying _GNU_SOURCE and _XOPEN_SOURCE ... dung. Autoconf takes care of this, and even checks for more useful stuff for us.
moritz
2007-02-24 21:44:35 +0000
aab6c56ae2Generate a Makefile in doc/, and switch to AC_CONFIG_FILES.
moritz
2007-02-24 21:37:06 +0000
c7a3eda868Ezstream does not need libtool, so remove it. Remove other redundant configure checks as well: AC_PROG_CC and AC_HEADER_STDC are automatically checked in packages written in C, no need to do it twice. This shaves a lot off configure runtime.
moritz
2007-02-24 21:34:05 +0000
dbf12f4c16Start to incrementally merge configure.in changes by simply shuffling code around a bit. No functional change, yet.
moritz
2007-02-24 21:29:27 +0000
a4bac0230fHook up doc/ with the build, depend on automake 1.9 and remove dist-zip for now. The latter will come back after testing on Windows has been done.
moritz
2007-02-24 21:19:20 +0000
7671474055Replace the autogen behemoth with something much simpler. AC_PREREQ and AUTOMAKE_OPTIONS already take care of version checks.
moritz
2007-02-24 21:16:26 +0000
e89737c651Clean up and install example configuration files.
moritz
2007-02-24 21:12:54 +0000
4b5c770f29Commit rewritten README file.
moritz
2007-02-24 21:11:49 +0000
25494f8fdbRemove AUTHORS. Credits are in the man page.
moritz
2007-02-24 20:59:16 +0000
db113a36dbAdd INSTALL file for those not familiar with the configure+make dance. From autoconf-2.61.
moritz
2007-02-24 20:58:18 +0000
d21d0873f8Add 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.
moritz
2007-02-24 20:57:02 +0000
1c22223dcbAdd ezstream man page.
moritz
2007-02-24 20:52:57 +0000
2b0c3e6149Add new playlist handling functions.
moritz
2007-02-24 20:50:33 +0000
5d932e4191Add new utility functions, for memory management. These do The Right Thing and never return NULL.
moritz
2007-02-24 20:49:25 +0000
a90b52665dBegin to incrementally merge my changes to Ezstream by bumping the version number and shifting blame to me. This should keep most of the history in my local CVS repository. There may be temporary breakages where it doesn't build or package until I'm done.
moritz
2007-02-24 18:55:55 +0000
f42b4a4f35forgot to add the inno setup installer to the dist
oddsock
2005-12-14 21:40:12 +0000
7dcb27fcf4support for theora streams
oddsock
2004-07-12 19:13:14 +0000
b85a6a2ca3added 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.
oddsock
2004-04-21 13:48:22 +0000
214c97a30bstdin now working :)
oddsock
2004-02-02 04:56:34 +0000