Commit d94eaf58 authored by Led's avatar Led

0.8.2

parent 24721bba
ver 0.8.1 (2003/7/15)
ver 0.8.2 (2003/7/22)
1) Increased the connection que for listen() from 0 to 5
2) Cleanup configure makefiles so that mpd uses MPD_LIBS and MPD_CFLAGS
rather than LIBS and CFLAGS
3) Put a cap on the number of commands per command list
4) Put a cap on the maximum number of buffered output lines
5) Get rid of TIME_WAIT/EADDRINUSE socket problem
6) Use asynchronious IO (i.e. trigger SIGIO instead so we can sleep in
select() calls longer)
ver 0.8.1 (2003/7/11)
1) FreeBSD fixes
2) Fix for rare segfault when updating
3) Fix bug where client was being hungup on when done playing current song
......
......@@ -10,7 +10,7 @@ For Red Hat 8.0, the neccessary packages are: libao and libao-devel)
zlib - http://www.gzip.org/zlib
(This comes with all distributions. Make sure you have bot the zlib libs
and delevelopment packages for your distribution installed. For Red hat,
and development packages for your distribution installed. For Red hat,
the neccessary packages are: zlib and zlib-devel)
Optional
......
bin_PROGRAMS = mpd
SUBDIRS = $(ID3_SUBDIR) $(MAD_SUBDIR)
man_MANS = mpd.1
pkgdata_DATA = mpdconf.example README INSTALL
EXTRA_DIST = COMMANDS UPGRADING $(pkgdata_DATA)
EXTRA_DIST = COMMANDS UPGRADING $(pkgdata_DATA) $(man_MANS)
mpd_headers = buffer2array.h interface.h command.h playlist.h ls.h \
song.h list.h directory.h tables.h utils.h path.h flac_decode.h \
tag.h player.h listen.h conf.h ogg_decode.h volume.h mp3_decode.h \
audio.h buffer.h stats.h myfprintf.h
audio.h buffer.h stats.h myfprintf.h sig_handlers.h
mpd_SOURCES = main.c buffer2array.c interface.c command.c playlist.c ls.c \
song.c list.c directory.c tables.c utils.c path.c flac_decode.c\
tag.c player.c listen.c conf.c ogg_decode.c volume.c mp3_decode.c \
audio.c buffer.c stats.c myfprintf.c $(mpd_headers)
audio.c buffer.c stats.c myfprintf.c sig_handlers.c $(mpd_headers)
mpd_LDADD = $(ID3_LIB) $(MAD_LIB)
CFLAGS = @CFLAGS@ $(MPD_CFLAGS)
mpd_LDADD = $(MPD_LIBS) $(ID3_LIB) $(MAD_LIB)
......@@ -2,7 +2,7 @@
Music Player Daemon (MPD)
http://musicpd.sourceforge.net
A daemon for playing music (currently mp3 and ogg vorbis). Music is played
A daemon for playing music (mp3, ogg vorbis, and flac). Music is played
through the server's audio device. The daemon stores info about all available
music, and this info can be easily searched and retrieved. Player control, info
retrieval, and playlist management can all be managed remotely.
......
......@@ -113,7 +113,7 @@ int processCommand(FILE * fp, int argArrayLength, char ** argArray) {
}
if(0==strcmp(argArray[0],COMMAND_PLAY)) {
int song;
int song = 0;
char * test;
if(argArrayLength>2) {
myfprintf(fp,"%s too many arguments for \"%s\"\n",COMMAND_RESPOND_ERROR,argArray[0]);
......@@ -126,7 +126,6 @@ int processCommand(FILE * fp, int argArrayLength, char ** argArray) {
return -1;
}
}
else song = 0;
return playPlaylist(fp,song);
}
else if(0==strcmp(argArray[0],COMMAND_STOP)) {
......
......@@ -28,7 +28,7 @@
#define MAX_STRING_SIZE MAXPATHLEN+80
#define CONF_NUMBER_OF_PARAMS 11
#define CONF_NUMBER_OF_PARAMS 13
#define CONF_NUMBER_OF_PATHS 4
#define CONF_NUMBER_OF_REQUIRED 5
......@@ -38,6 +38,8 @@
#define CONF_MAX_PLAYLIST_LENGTH_DEFAULT "4096"
#define CONF_BUFFER_BEFORE_PLAY_DEFAULT "25%"
#define CONF_STOP_ON_ERROR_DEFAULT "yes"
#define CONF_MAX_COMMAND_LIST_SIZE_DEFAULT "2048"
#define CONF_MAX_OUTPUT_BUFFER_SIZE_DEFAULT "2048"
char conf_strings[CONF_NUMBER_OF_PARAMS][24] = {
"port",
......@@ -50,7 +52,9 @@ char conf_strings[CONF_NUMBER_OF_PARAMS][24] = {
"max_connections",
"max_playlist_length",
"buffer_before_play",
"stop_on_error"
"stop_on_error",
"max_command_list_size",
"max_output_buffer_size"
};
int conf_absolutePaths[CONF_NUMBER_OF_PATHS] = {
......@@ -82,6 +86,8 @@ void initConf() {
conf_params[CONF_MAX_PLAYLIST_LENGTH] = strdup(CONF_MAX_PLAYLIST_LENGTH_DEFAULT);
conf_params[CONF_BUFFER_BEFORE_PLAY] = strdup(CONF_BUFFER_BEFORE_PLAY_DEFAULT);
conf_params[CONF_STOP_ON_ERROR] = strdup(CONF_STOP_ON_ERROR_DEFAULT);
conf_params[CONF_MAX_COMMAND_LIST_SIZE] = strdup(CONF_MAX_COMMAND_LIST_SIZE_DEFAULT);
conf_params[CONF_MAX_OUTPUT_BUFFER_SIZE] = strdup(CONF_MAX_OUTPUT_BUFFER_SIZE_DEFAULT);
}
char ** readConf(char * file) {
......
......@@ -30,6 +30,8 @@
#define CONF_MAX_PLAYLIST_LENGTH 8
#define CONF_BUFFER_BEFORE_PLAY 9
#define CONF_STOP_ON_ERROR 10
#define CONF_MAX_COMMAND_LIST_SIZE 11
#define CONF_MAX_OUTPUT_BUFFER_SIZE 12
/* do not free the return value, it is a static variable */
char ** readConf(char * file);
......
AC_INIT(main.c)
AM_INIT_AUTOMAKE(mpd, 0.8.1)
AM_INIT_AUTOMAKE(mpd, 0.8.2)
AC_PROG_CC
AC_PROG_INSTALL
......@@ -8,13 +8,16 @@ AC_PROG_LIBTOOL
dnl MAD wants this stuff
AC_SUBST(CCAS)
AC_SUBST(CCASFLAGS)
AC_SUBST(MAD_SUBDIR)
AC_SUBST(MAD_LIB)
AC_SUBST(ID3_SUBDIR)
AC_SUBST(ID3_LIB)
AC_SUBST(MPD_LIBS)
AC_SUBST(MPD_CFLAGS)
set -- $CFLAGS
CFLAGS="-Wall $CFLAGS"
MPD_CFLAGS="-Wall"
MPD_LIBS=""
AC_ARG_ENABLE(ogg,[ --disable-ogg disable ogg support],,enable_ogg=yes)
AC_ARG_ENABLE(flac,[ --disable-flac disable flac support],,enable_flac=yes)
......@@ -23,8 +26,8 @@ AC_ARG_ENABLE(mpd_mad,[ --enable-mpd-mad use mpd libmad],use_mpd_mad=yes,)
AC_ARG_ENABLE(id3,[ --disable-id3 disable id3 support],,enable_id3=yes)
AC_ARG_ENABLE(mpd_id3tag,[ --enable-mpd-id3tag use mpd libid3tag],use_mpd_id3tag=yes,)
XIPH_PATH_AO(LIBS="$LIBS $AO_LIBS" CFLAGS="$CFLAGS $AO_CFLAGS",AC_MSG_ERROR(Must have libao installed!!!))
AC_CHECK_HEADER(sys/soundcard.h,CFLAGS="$CFLAGS",[CFLAGS="$CFLAGS -DNO_OSS_MIXER";AC_MSG_WARN(Soundcard headers not found -- disabling mixer)])
XIPH_PATH_AO(MPD_LIBS="$MPD_LIBS $AO_LIBS" MPD_CFLAGS="$MPD_CFLAGS $AO_CFLAGS",AC_MSG_ERROR(Must have libao installed!!!))
AC_CHECK_HEADER(sys/soundcard.h,,[MPD_CFLAGS="$MPD_CFLAGS -DNO_OSS_MIXER";AC_MSG_WARN(Soundcard headers not found -- disabling mixer)])
ID3_SUBDIR=""
......@@ -40,12 +43,12 @@ if test x$enable_id3 = xyes; then
CFLAGS=$oldcflags
fi
if test x$use_mpd_id3tag = xyes; then
CFLAGS="$CFLAGS -DUSE_MPD_ID3TAG"
MPD_CFLAGS="$MPD_CFLAGS -DUSE_MPD_ID3TAG"
ID3_LIB="libid3tag/libid3tag.la"
ID3_SUBDIR="libid3tag"
AC_CONFIG_SUBDIRS(libid3tag)
fi
CFLAGS="$CFLAGS -DHAVE_ID3TAG"
MPD_CFLAGS="$MPD_CFLAGS -DHAVE_ID3TAG"
fi
MAD_SUBDIR=""
......@@ -58,44 +61,50 @@ if test x$enable_mp3 = xyes; then
[use_libmad=no;use_mpd_mad=yes])
fi
if test x$use_mpd_mad = xyes; then
CFLAGS="$CFLAGS -DUSE_MPD_MAD"
MPD_CFLAGS="$MPD_CFLAGS -DUSE_MPD_MAD"
MAD_LIB="libmad/libmad.la"
MAD_SUBDIR="libmad"
AC_CONFIG_SUBDIRS(libmad)
fi
CFLAGS="$CFLAGS -DHAVE_MAD"
MPD_CFLAGS="$MPD_CFLAGS -DHAVE_MAD"
fi
if test x$enable_ogg = xyes; then
XIPH_PATH_OGG(LIBS="$LIBS $OGG_LIBS" CFLAGS="$CFLAGS $OGG_CFLAGS" enable_vorbistest=no,enable_ogg=no)
XIPH_PATH_OGG(MPD_LIBS="$MPD_LIBS $OGG_LIBS" MPD_CFLAGS="$MPD_CFLAGS $OGG_CFLAGS" enable_vorbistest=no,enable_ogg=no)
fi
if test x$enable_ogg = xyes; then
XIPH_PATH_VORBIS(LIBS="$LIBS $VORBIS_LIBS $VORBISFILE_LIBS" CFLAGS="$CFLAGS $VORBIS_CFLAGS $VORBISFILE_CFLAGS",enable_ogg=no)
XIPH_PATH_VORBIS(MPD_LIBS="$MPD_LIBS $VORBIS_LIBS $VORBISFILE_LIBS" MPD_CFLAGS="$MPD_CFLAGS $VORBIS_CFLAGS $VORBISFILE_CFLAGS",enable_ogg=no)
fi
if test x$enable_ogg = xyes; then
CFLAGS="$CFLAGS -DHAVE_OGG"
MPD_CFLAGS="$MPD_CFLAGS -DHAVE_OGG"
fi
if test x$enable_flac = xyes; then
oldcflags="$CFLAGS"
oldlibs="$LIBS"
AM_PATH_LIBFLAC(LIBS="$LIBS $LIBFLAC_LIBS" CFLAGS="$CFLAGS $LIBFLAC_CFLAGS",enable_flac=no)
oldmpdcflags="$MPD_CFLAGS"
oldmpdlibs="$MPD_LIBS"
AM_PATH_LIBFLAC(MPD_LIBS="$MPD_LIBS $LIBFLAC_LIBS" MPD_CFLAGS="$MPD_CFLAGS $LIBFLAC_CFLAGS",enable_flac=no)
fi
if test x$enable_flac = xyes; then
oldcflags="$CFLAGS"
oldlibs="$LIBS"
CFLAGS="$CFLAGS $MPD_CFLAGS"
LIBS="$LIBS $MPD_LIBS"
AC_CHECK_LIB(FLAC, FLAC__metadata_object_vorbiscomment_find_entry_from,
,[enable_flac=no;AC_MSG_WARN(You need FLAC 1.1 -- disabling flac support)])
if test x$enable_flac = xno; then
CFLAGS="$oldcflags"
LIBS="$oldlibs"
MPD_CFLAGS="$oldmpdcflags"
MPD_LIBS="$oldmpdlibs"
fi
CFLAGS="$oldcflags"
LIBS="$oldlibs"
fi
if test x$enable_flac = xyes; then
CFLAGS="$CFLAGS -DHAVE_FLAC"
MPD_CFLAGS="$MPD_CFLAGS -DHAVE_FLAC"
fi
AC_OUTPUT(Makefile)
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. M.I.T. makes no representations about the
# suitability of this software for any purpose. It is provided "as is"
# without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
......@@ -74,7 +56,7 @@ dir_arg=""
while [ x"$1" != x ]; do
case $1 in
-c) instcmd="$cpprog"
-c) instcmd=$cpprog
shift
continue;;
......@@ -97,7 +79,7 @@ while [ x"$1" != x ]; do
shift
continue;;
-s) stripcmd="$stripprog"
-s) stripcmd=$stripprog
shift
continue;;
......@@ -124,7 +106,7 @@ done
if [ x"$src" = x ]
then
echo "install: no input file specified"
echo "$0: no input file specified" >&2
exit 1
else
:
......@@ -133,8 +115,8 @@ fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
if [ -d $dst ]; then
if [ -d "$dst" ]; then
instcmd=:
chmodcmd=""
else
......@@ -143,20 +125,20 @@ if [ x"$dir_arg" != x ]; then
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if [ -f "$src" ] || [ -d "$src" ]
then
:
else
echo "install: $src does not exist"
echo "$0: $src does not exist" >&2
exit 1
fi
if [ x"$dst" = x ]
then
echo "install: no destination specified"
echo "$0: no destination specified" >&2
exit 1
else
:
......@@ -165,16 +147,16 @@ else
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if [ -d $dst ]
if [ -d "$dst" ]
then
dst="$dst"/`basename $src`
dst=$dst/`basename "$src"`
else
:
fi
fi
## this sed command emulates the dirname command
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
......@@ -183,69 +165,73 @@ dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
if [ ! -d "$dstdir" ]; then
defaultIFS='
'
IFS="${IFS-${defaultIFS}}"
IFS="${IFS-$defaultIFS}"
oIFS="${IFS}"
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS="${oIFS}"
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS=$oIFS
pathcomp=''
while [ $# -ne 0 ] ; do
pathcomp="${pathcomp}${1}"
pathcomp=$pathcomp$1
shift
if [ ! -d "${pathcomp}" ] ;
if [ ! -d "$pathcomp" ] ;
then
$mkdirprog "${pathcomp}"
$mkdirprog "$pathcomp"
else
:
fi
pathcomp="${pathcomp}/"
pathcomp=$pathcomp/
done
fi
if [ x"$dir_arg" != x ]
then
$doit $instcmd $dst &&
$doit $instcmd "$dst" &&
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
else
# If we're going to rename the final executable, determine the name now.
if [ x"$transformarg" = x ]
if [ x"$transformarg" = x ]
then
dstfile=`basename $dst`
dstfile=`basename "$dst"`
else
dstfile=`basename $dst $transformbasename |
dstfile=`basename "$dst" $transformbasename |
sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
if [ x"$dstfile" = x ]
if [ x"$dstfile" = x ]
then
dstfile=`basename $dst`
dstfile=`basename "$dst"`
else
:
fi
# Make a temp file name in the proper directory.
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/#inst.$$#
rmtmp=$dstdir/#rm.$$#
# Move or copy the file name to the temp name
# Trap to clean up temp files at exit.
$doit $instcmd $src $dsttmp &&
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
trap '(exit $?); exit' 1 2 13 15
trap "rm -f ${dsttmp}" 0 &&
# Move or copy the file name to the temp name
$doit $instcmd "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits
......@@ -253,17 +239,38 @@ else
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
# Now remove or move aside any old file at destination location. We try this
# two ways since rm can't unlink itself on some systems and the destination
# file might be busy for other reasons. In this case, the final cleanup
# might fail but the new file should still install successfully.
{
if [ -f "$dstdir/$dstfile" ]
then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
{
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $rmcmd -f $dstdir/$dstfile &&
$doit $mvcmd $dsttmp $dstdir/$dstfile
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
fi &&
# The final little trick to "correctly" pass the exit status to the exit trap.
exit 0
{
(exit 0); exit
}
......@@ -22,6 +22,7 @@
#include "conf.h"
#include "list.h"
#include "myfprintf.h"
#include "listen.h"
#include <unistd.h>
#include <stdio.h>
......@@ -30,9 +31,11 @@
#include <sys/time.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/select.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <signal.h>
#define GREETING "MPD"
......@@ -42,6 +45,8 @@
int interface_max_connections;
int interface_timeout;
unsigned long long interface_max_command_list_size;
unsigned long long interface_max_output_buffer_size;
typedef struct _Interface {
char buffer[INTERFACE_MAX_BUFFER_LENGTH+2];
......@@ -51,24 +56,35 @@ typedef struct _Interface {
int open; /* open/used */
time_t lastTime;
List * commandList; /* for when in list mode */
unsigned long long commandListSize; /* mem commandList consumes */
List * bufferList; /* for output if client is slow */
unsigned long long outputBufferSize; /* mem bufferList consumes */
int expired; /* set wether this interface should be closed on next
check of old interfaces */
} Interface;
Interface * interfaces = NULL;
void flushInterfaceBuffer(Interface * interface);
void openInterface(Interface * interface, int fd) {
int flags;
assert(interface->open==0);
fcntl(fd,F_SETFD,FD_CLOEXEC);
interface->bufferLength = 0;
interface->fd = fd;
fcntl(interface->fd,F_SETFL,O_NONBLOCK);
fcntl(interface->fd,F_SETOWN,(int)getpid());
flags = fcntl(fd,F_GETFL);
flags|=O_NONBLOCK | O_ASYNC;
fcntl(interface->fd,F_SETFL,flags);
interface->fp = fdopen(fd,"rw");
interface->open = 1;
interface->lastTime = time(NULL);
interface->commandList = NULL;
interface->bufferList = NULL;
interface->expired = 0;
interface->outputBufferSize = 0;
myfprintf(interface->fp,"%s %s %s\n",COMMAND_RESPOND_OK,GREETING,VERSION);
}
......@@ -145,12 +161,23 @@ int interfaceReadInput(Interface * interface) {
interface->commandList = NULL;
}
else {
insertInListWithoutKey(interface->commandList,strdup(interface->buffer));
interface->commandListSize+=sizeof(ListNode);
interface->commandListSize+=strlen(interface->buffer)+1;
if(interface->commandListSize>interface_max_command_list_size) {
fprintf(stderr,"command list size (%lli) is larger than the max (%lli)\n",interface->commandListSize,interface_max_command_list_size);
closeInterface(interface);
}
else {
insertInListWithoutKey(interface->commandList,strdup(interface->buffer));
}
}
}
else {
if(strcmp(argArray[0],INTERFACE_LIST_MODE_BEGIN)==0) {
interface->commandList = makeList(free);
interface->commandListSize =
sizeof(List);
ret = 1;
}
else {
......@@ -177,13 +204,27 @@ int interfaceReadInput(Interface * interface) {
return 1;
}
void addInterfacesToFdSet(fd_set * fds) {
void addInterfacesReadyToReadAndListenSocketToFdSet(fd_set * fds) {
int i;
FD_ZERO(fds);
FD_SET(listenSocket,fds);
for(i=0;i<interface_max_connections;i++) {
if(interfaces[i].open && !interfaces[i].bufferList) {
if(interfaces[i].open && !interfaces[i].expired && !interfaces[i].bufferList) {
FD_SET(interfaces[i].fd,fds);
}
}
}
void addInterfacesForBufferFlushToFdSet(fd_set * fds) {
int i;
FD_ZERO(fds);
FD_SET(listenSocket,fds);
for(i=0;i<interface_max_connections;i++) {
if(interfaces[i].open && !interfaces[i].expired && interfaces[i].bufferList) {
FD_SET(interfaces[i].fd,fds);
}
}
......@@ -195,7 +236,7 @@ void closeNextErroredInterface() {
int i;
tv.tv_sec = 0;
tv.tv_usec = 1000;
tv.tv_usec = 0;
for(i=0;i<interface_max_connections;i++) {
if(interfaces[i].open) {
......@@ -209,31 +250,41 @@ void closeNextErroredInterface() {
}
}
int readInputFromInterfaces() {
fd_set fds;
int doIOForInterfaces() {
fd_set rfds;
fd_set wfds;
struct timeval tv;
int i;
int selret;
tv.tv_sec = 0;
tv.tv_usec = 1000;
tv.tv_sec = 1;
tv.tv_usec = 0;
addInterfacesToFdSet(&fds);
addInterfacesReadyToReadAndListenSocketToFdSet(&rfds);
addInterfacesForBufferFlushToFdSet(&wfds);
while((selret = select(FD_SETSIZE,&fds,NULL,NULL,&tv))) {
while((selret = select(FD_SETSIZE,&rfds,&wfds,NULL,&tv))) {
if(FD_ISSET(listenSocket,&rfds)) getConnections(listenSocket);
if(selret<0) {
closeNextErroredInterface();
continue;
}
for(i=0;i<interface_max_connections;i++) {
if(interfaces[i].open && FD_ISSET(interfaces[i].fd,&fds)) {
if(interfaces[i].open && FD_ISSET(interfaces[i].fd,&rfds)) {
if(COMMAND_RETURN_KILL==interfaceReadInput(&(interfaces[i]))) {
return COMMAND_RETURN_KILL;
}
interfaces[i].lastTime = time(NULL);
}
if(interfaces[i].open && FD_ISSET(interfaces[i].fd,&wfds)) {
flushInterfaceBuffer(&interfaces[i]);
interfaces[i].lastTime = time(NULL);
}
}
addInterfacesToFdSet(&fds);
tv.tv_sec = 0;
tv.tv_usec = 0;
addInterfacesReadyToReadAndListenSocketToFdSet(&rfds);
addInterfacesForBufferFlushToFdSet(&wfds);
}
return 1;
......@@ -244,17 +295,32 @@ void initInterfaces() {
char * test;
interface_timeout = strtol((getConf())[CONF_CONNECTION_TIMEOUT],&test,10);
if(*test!='\0') {
fprintf(stderr,"connection timeout \"%s\" is not an integer\n",(getConf())[CONF_CONNECTION_TIMEOUT]);
if(*test!='\0' || interface_timeout<=0) {
fprintf(stderr,"connection timeout \"%s\" is not a positive integer\n",(getConf())[CONF_CONNECTION_TIMEOUT]);
exit(-1);
}
interface_max_connections = strtol((getConf())[CONF_MAX_CONNECTIONS],&test,10);
if(*test!='\0') {
fprintf(stderr,"max connections \"%s\" is not an integer\n",(getConf())[CONF_MAX_CONNECTIONS]);
if(*test!='\0' || interface_max_connections<=0) {
fprintf(stderr,"max connections \"%s\" is not a positive integer\n",(getConf())[CONF_MAX_CONNECTIONS]);
exit(-1);
}
interface_max_command_list_size = strtoll((getConf())[CONF_MAX_COMMAND_LIST_SIZE],&test,10);
if(*test!='\0' || interface_max_command_list_size<=0) {
fprintf(stderr,"max command list size \"%s\" is not a positive integer\n",(getConf())[CONF_MAX_COMMAND_LIST_SIZE]);
exit(-1);
}
interface_max_output_buffer_size = strtoll((getConf())[CONF_MAX_OUTPUT_BUFFER_SIZE],&test,10);
if(*test!='\0' || interface_max_output_buffer_size<=0) {
fprintf(stderr,"max output buffer size \"%s\" is not a positive integer\n",(getConf())[CONF_MAX_OUTPUT_BUFFER_SIZE]);
exit(-1);
}
interface_max_command_list_size*=1024;
interface_max_output_buffer_size*=1024;
interfaces = malloc(sizeof(Interface)*interface_max_connections);
for(i=0;i<interface_max_connections;i++) {
......@@ -284,7 +350,7 @@ void closeOldInterfaces() {
int i;
for(i=0;i<interface_max_connections;i++) {
if(interfaces[i].open && (time(NULL)-interfaces[i].lastTime>interface_timeout)) {
if(interfaces[i].open && (interfaces[i].expired || (time(NULL)-interfaces[i].lastTime>interface_timeout))) {
closeInterface(&(interfaces[i]));
}
}
......@@ -309,27 +375,36 @@ void flushInterfaceBuffer(Interface * interface) {
str = (char *)node->data;
if((ret = write(interface->fd,str,strlen(str)))<0) break;
else if(ret<strlen(str)) {
interface->outputBufferSize-=ret;
str = strdup(&str[ret]);
free(node->data);
node->data = str;
}
else {
interface->outputBufferSize-= strlen(str)+1;
interface->outputBufferSize-= sizeof(ListNode);
deleteNodeFromList(interface->bufferList,node);
}
interface->lastTime = time(NULL);
}
if(!interface->bufferList->firstNode) {
freeList(interface->bufferList);
interface->bufferList = NULL;
}
else if(errno!=EAGAIN) closeInterface(interface);
else if(errno!=EAGAIN && errno!=EINTR) {
/* cause interface to close */
free(interface->bufferList);
interface->bufferList = NULL;
interface->expired = 1;
}
}
void flushAllInterfaceBuffers() {
int i;
for(i=0;i<interface_max_connections;i++) {
if(interfaces[i].open && interfaces[i].bufferList) {
if(interfaces[i].open && !interfaces[i].expired && interfaces[i].bufferList) {
flushInterfaceBuffer(&interfaces[i]);
}
}
......@@ -345,23 +420,45 @@ void interfacePrintWithFD(int fd,char * buffer) {
if(interfaces[i].fd==fd) break;
}
if(i==interface_max_connections) return;
/* if fd isn't found or interfaces is going to be closed, do nothing */
if(i==interface_max_connections || interfaces[i].expired) return;
if(interfaces[i].bufferList) {
insertInListWithoutKey(interfaces[i].bufferList,(void *)strdup(buffer));
flushInterfaceBuffer(&interfaces[i]);
interfaces[i].outputBufferSize+=sizeof(ListNode);
interfaces[i].outputBufferSize+=strlen(buffer)+1;
if(interfaces[i].outputBufferSize>interface_max_output_buffer_size) {
fprintf(stderr,"output buffer size (%lli) is larger than the max (%lli)\n",interfaces[i].outputBufferSize,interface_max_output_buffer_size);
/* cause interface to close */
free(interfaces[i].bufferList);
interfaces[i].bufferList = NULL;
interfaces[i].expired = 1;
return;
}
else {
insertInListWithoutKey(interfaces[i].bufferList,(void *)strdup(buffer));
flushInterfaceBuffer(&interfaces[i]);
}
}
else {
if((ret = write(fd,buffer,strlen(buffer)))<0) {
if(errno==EAGAIN) {
if(errno==EAGAIN || errno==EINTR) {
interfaces[i].bufferList = makeList(free);
insertInListWithoutKey(interfaces[i].bufferList,(void *)strdup(buffer));
}
else closeInterface(&interfaces[i]);
else {
interfaces[i].expired = 1;
return;
}
}
else if(ret<strlen(buffer)) {
interfaces[i].bufferList = makeList(free);
insertInListWithoutKey(interfaces[i].bufferList,(void *)strdup(&buffer[ret]));
}
/* if we needed to create buffer, initizliaze bufferSize info */
if(interfaces[i].bufferList) {
interfaces[i].outputBufferSize = sizeof(List);
interfaces[i].outputBufferSize+=sizeof(ListNode);
interfaces[i].outputBufferSize+=strlen((char *)interfaces[i].bufferList->firstNode->data)+1;
}
}
}
......@@ -31,6 +31,6 @@ void closeInterfaceWithFD(int fd);
void flushAllInterfaceBuffers();
void interfacePrintWithFD(int fd, char * buffer);
int readInputFromInterfaces();
int doIOForInterfaces();
#endif
......@@ -2,7 +2,7 @@
libid3tag - ID3 tag manipulation library
Copyright (C) 2000-2003 Underbit Technologies, Inc.
$Id: CHANGES,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
$Id: CHANGES,v 1.2 2003/07/05 05:18:51 shank Exp $
===============================================================================
......
......@@ -2,7 +2,7 @@
libid3tag - ID3 tag manipulation library
Copyright (C) 2000-2003 Underbit Technologies, Inc.
$Id: CREDITS,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
$Id: CREDITS,v 1.2 2003/07/05 05:18:51 shank Exp $
===============================================================================
......
......@@ -16,7 +16,7 @@
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##
## $Id: Makefile.am,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
## $Id: Makefile.am,v 1.3 2003/07/05 06:12:40 shank Exp $
##
## Process this file with automake to produce Makefile.in
......
......@@ -2,7 +2,7 @@
libid3tag - ID3 tag manipulation library
Copyright (C) 2000-2003 Underbit Technologies, Inc.
$Id: README,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
$Id: README,v 1.2 2003/07/05 05:18:51 shank Exp $
===============================================================================
......
......@@ -2,7 +2,7 @@
libid3tag - ID3 tag manipulation library
Copyright (C) 2000-2003 Underbit Technologies, Inc.
$Id: TODO,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
$Id: TODO,v 1.2 2003/07/05 05:18:51 shank Exp $
===============================================================================
......
......@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: compat.gperf,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: compat.gperf,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: compat.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: compat.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_COMPAT_H
......
......@@ -17,7 +17,7 @@ dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
dnl
AC_REVISION([$Id: configure.ac,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $])dnl
AC_REVISION([$Id: configure.ac,v 1.3 2003/07/05 05:39:48 shank Exp $])dnl
dnl Process this file with autoconf to produce a configure script.
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: crc.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: crc.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: crc.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: crc.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_CRC_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: debug.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: debug.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: debug.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: debug.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_DEBUG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: field.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: field.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: field.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: field.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_FIELD_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: file.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: file.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: file.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: file.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_FILE_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: frame.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: frame.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: frame.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: frame.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_FRAME_H
......
......@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: frametype.gperf,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: frametype.gperf,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: frametype.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: frametype.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_FRAMETYPE_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: genre.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: genre.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Id: genre.dat.in,v 1.1.1.1 2003/07/15 15:51:33 shank Exp
* Id: genre.dat.in,v 1.2 2003/07/05 05:18:51 shank Exp
*/
/*
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: genre.dat.in,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: genre.dat.in,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
/*
......
......@@ -16,7 +16,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id: genre.dat.sed,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
# $Id: genre.dat.sed,v 1.2 2003/07/05 05:18:51 shank Exp $
#
1i\
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: genre.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: genre.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_GENRE_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: global.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: global.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_GLOBAL_H
......
......@@ -19,7 +19,7 @@
* If you would like to negotiate alternate licensing terms, you may do
* so by contacting: Underbit Technologies, Inc. <info@underbit.com>
*
* $Id: id3tag.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: id3tag.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_ID3TAG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: latin1.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: latin1.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: latin1.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: latin1.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_LATIN1_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: parse.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: parse.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: parse.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: parse.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_PARSE_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: render.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: render.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: render.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: render.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_RENDER_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: tag.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: tag.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: tag.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: tag.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_TAG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: ucs4.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: ucs4.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: ucs4.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: ucs4.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_UCS4_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: utf16.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: utf16.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: utf16.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: utf16.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_UTF16_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: utf8.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: utf8.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: utf8.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: utf8.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_UTF8_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: util.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: util.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: util.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: util.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_UTIL_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: version.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: version.c,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: version.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: version.h,v 1.2 2003/07/05 05:18:51 shank Exp $
*/
# ifndef LIBID3TAG_VERSION_H
......
......@@ -2,7 +2,7 @@
libmad - MPEG audio decoder library
Copyright (C) 2000-2003 Underbit Technologies, Inc.
$Id: CHANGES,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
$Id: CHANGES,v 1.1 2003/07/05 06:20:49 shank Exp $
===============================================================================
......
......@@ -2,7 +2,7 @@
libmad - MPEG audio decoder library
Copyright (C) 2000-2003 Underbit Technologies, Inc.
$Id: CREDITS,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
$Id: CREDITS,v 1.1 2003/07/05 06:20:50 shank Exp $
===============================================================================
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: D.dat,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: D.dat,v 1.2 2003/07/05 06:20:50 shank Exp $
*/
/*
......
......@@ -16,7 +16,7 @@
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##
## $Id: Makefile.am,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
## $Id: Makefile.am,v 1.3 2003/07/05 06:20:50 shank Exp $
##
## Process this file with automake to produce Makefile.in
......
......@@ -2,7 +2,7 @@
libmad - MPEG audio decoder library
Copyright (C) 2000-2003 Underbit Technologies, Inc.
$Id: README,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
$Id: README,v 1.1 2003/07/05 06:20:50 shank Exp $
===============================================================================
......
......@@ -2,7 +2,7 @@
libmad - MPEG audio decoder library
Copyright (C) 2000-2003 Underbit Technologies, Inc.
$Id: TODO,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
$Id: TODO,v 1.1 2003/07/05 06:20:50 shank Exp $
===============================================================================
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: bit.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: bit.c,v 1.2 2003/07/05 06:20:50 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: bit.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: bit.h,v 1.2 2003/07/05 06:20:50 shank Exp $
*/
# ifndef LIBMAD_BIT_H
......
......@@ -17,7 +17,7 @@ dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
dnl
AC_REVISION([$Id: configure.ac,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $])dnl
AC_REVISION([$Id: configure.ac,v 1.1 2003/07/05 06:20:51 shank Exp $])dnl
dnl Process this file with autoconf to produce a configure script.
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: decoder.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: decoder.c,v 1.2 2003/07/05 06:20:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: decoder.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: decoder.h,v 1.2 2003/07/05 06:20:51 shank Exp $
*/
# ifndef LIBMAD_DECODER_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: fixed.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: fixed.c,v 1.2 2003/07/05 06:20:51 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: fixed.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: fixed.h,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifndef LIBMAD_FIXED_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: frame.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: frame.c,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: frame.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: frame.h,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifndef LIBMAD_FRAME_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: global.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: global.h,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifndef LIBMAD_GLOBAL_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: huffman.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: huffman.c,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: huffman.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: huffman.h,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifndef LIBMAD_HUFFMAN_H
......
......@@ -22,7 +22,7 @@
*
*****************************************************************************
*
* $Id: imdct_l_arm.S,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: imdct_l_arm.S,v 1.2 2003/07/05 06:20:52 shank Exp $
*
* 2001/03/24: Andre McCurdy <armccurdy@yahoo.co.uk>
* - Corrected PIC unsafe loading of address of 'imdct36_long_karray'
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: imdct_s.dat,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: imdct_s.dat,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
/* 0 */ { MAD_F(0x09bd7ca0) /* 0.608761429 */,
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: layer12.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: layer12.c,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: layer12.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: layer12.h,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifndef LIBMAD_LAYER12_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: layer3.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: layer3.c,v 1.2 2003/07/05 06:20:52 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: layer3.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: layer3.h,v 1.2 2003/07/05 06:20:53 shank Exp $
*/
# ifndef LIBMAD_LAYER3_H
......
......@@ -33,7 +33,7 @@ extern "C" {
# define SIZEOF_LONG_LONG 8
/* Id: version.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp */
/* Id: version.h,v 1.2 2003/07/05 06:20:55 shank Exp */
# ifndef LIBMAD_VERSION_H
# define LIBMAD_VERSION_H
......@@ -62,7 +62,7 @@ extern char const mad_build[];
# endif
/* Id: fixed.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp */
/* Id: fixed.h,v 1.2 2003/07/05 06:20:52 shank Exp */
# ifndef LIBMAD_FIXED_H
# define LIBMAD_FIXED_H
......@@ -528,7 +528,7 @@ mad_fixed_t mad_f_div(mad_fixed_t, mad_fixed_t);
# endif
/* Id: bit.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp */
/* Id: bit.h,v 1.2 2003/07/05 06:20:50 shank Exp */
# ifndef LIBMAD_BIT_H
# define LIBMAD_BIT_H
......@@ -557,7 +557,7 @@ unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short);
# endif
/* Id: timer.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp */
/* Id: timer.h,v 1.2 2003/07/05 06:20:55 shank Exp */
# ifndef LIBMAD_TIMER_H
# define LIBMAD_TIMER_H
......@@ -639,7 +639,7 @@ void mad_timer_string(mad_timer_t, char *, char const *,
# endif
/* Id: stream.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp */
/* Id: stream.h,v 1.2 2003/07/05 06:20:55 shank Exp */
# ifndef LIBMAD_STREAM_H
# define LIBMAD_STREAM_H
......@@ -727,7 +727,7 @@ char const *mad_stream_errorstr(struct mad_stream const *);
# endif
/* Id: frame.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp */
/* Id: frame.h,v 1.2 2003/07/05 06:20:52 shank Exp */
# ifndef LIBMAD_FRAME_H
# define LIBMAD_FRAME_H
......@@ -824,7 +824,7 @@ void mad_frame_mute(struct mad_frame *);
# endif
/* Id: synth.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp */
/* Id: synth.h,v 1.2 2003/07/05 06:20:55 shank Exp */
# ifndef LIBMAD_SYNTH_H
# define LIBMAD_SYNTH_H
......@@ -873,7 +873,7 @@ void mad_synth_frame(struct mad_synth *, struct mad_frame const *);
# endif
/* Id: decoder.h,v 1.1.1.1 2003/07/15 15:51:33 shank Exp */
/* Id: decoder.h,v 1.2 2003/07/05 06:20:51 shank Exp */
# ifndef LIBMAD_DECODER_H
# define LIBMAD_DECODER_H
......
......@@ -16,7 +16,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id: mad.h.sed,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
# $Id: mad.h.sed,v 1.2 2003/07/05 06:20:53 shank Exp $
#
/^\/\*$/{
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: minimad.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: minimad.c,v 1.1 2003/07/05 06:20:53 shank Exp $
*/
# include <stdio.h>
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: qc_table.dat,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: qc_table.dat,v 1.2 2003/07/05 06:20:53 shank Exp $
*/
/*
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: rq_table.dat,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: rq_table.dat,v 1.2 2003/07/05 06:20:53 shank Exp $
*/
/*
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: sf_table.dat,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: sf_table.dat,v 1.2 2003/07/05 06:20:55 shank Exp $
*/
/*
......
......@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: stream.c,v 1.1.1.1 2003/07/15 15:51:33 shank Exp $
* $Id: stream.c,v 1.2 2003/07/05 06:20:55 shank Exp $
*/
# ifdef HAVE_CONFIG_H
......
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment