Author: draenog Date: Mon Feb 7 21:21:48 2011 GMT Module: packages Tag: HEAD ---- Log message: - make Makefiles more verbose - fix libdir in ladspa plugin - fixes for AUD-289, AUDPLUG-320, AUDPLUG-323
---- Files affected: packages/audacious-plugins: audacious-plugins.spec (1.65 -> 1.66) , audacious-plugins-AUD-289.patch (NONE -> 1.1) (NEW), audacious-plugins-AUDPLUG-320.patch (NONE -> 1.1) (NEW), audacious-plugins-AUDPLUG-323.patch (NONE -> 1.1) (NEW), audacious-plugins-libdir.patch (NONE -> 1.1) (NEW), audacious-plugins-verbose_make.patch (NONE -> 1.1) (NEW) ---- Diffs: ================================================================ Index: packages/audacious-plugins/audacious-plugins.spec diff -u packages/audacious-plugins/audacious-plugins.spec:1.65 packages/audacious-plugins/audacious-plugins.spec:1.66 --- packages/audacious-plugins/audacious-plugins.spec:1.65 Sat Feb 5 02:16:48 2011 +++ packages/audacious-plugins/audacious-plugins.spec Mon Feb 7 22:21:43 2011 @@ -15,6 +15,11 @@ Source0: http://distfiles.atheme.org/%{name}-%{version}.tgz # Source0-md5: d2c76253e7a5d83dbd87319790f3c7a5 Patch1: %{name}-mkdir.patch +Patch2: %{name}-verbose_make.patch +Patch3: %{name}-libdir.patch +Patch4: %{name}-AUD-289.patch +Patch5: %{name}-AUD-320.patch +Patch6: %{name}-AUD-323.patch URL: http://audacious-media-player.org/ # BR by visualization-projectM BuildRequires: OpenGL-GLU-devel @@ -894,6 +899,11 @@ %prep %setup -q %patch1 -p1 +%patch2 -p0 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 %build %{__aclocal} -I m4 @@ -1180,6 +1190,11 @@ All persons listed below can be reached at <cvs_login>@pld-linux.org $Log$ +Revision 1.66 2011/02/07 21:21:43 draenog +- make Makefiles more verbose +- fix libdir in ladspa plugin +- fixes for AUD-289, AUDPLUG-320, AUDPLUG-323 + Revision 1.65 2011/02/05 01:16:48 sparky - marked pl description as UTF-8 ================================================================ Index: packages/audacious-plugins/audacious-plugins-AUD-289.patch diff -u /dev/null packages/audacious-plugins/audacious-plugins-AUD-289.patch:1.1 --- /dev/null Mon Feb 7 22:21:48 2011 +++ packages/audacious-plugins/audacious-plugins-AUD-289.patch Mon Feb 7 22:21:43 2011 @@ -0,0 +1,56 @@ +diff -Nur audacious-plugins-2.4.3-orig/src/psf/plugin.c audacious-plugins-2.4.3/src/psf/plugin.c +--- audacious-plugins-2.4.3-orig/src/psf/plugin.c 2011-01-12 12:13:26.000000000 +0100 ++++ audacious-plugins-2.4.3/src/psf/plugin.c 2011-01-28 23:47:46.829315597 +0100 +@@ -96,6 +96,7 @@ + return AO_SUCCESS; + } + ++static GStaticMutex mutex = G_STATIC_MUTEX_INIT; + static gint seek = 0; + gboolean stop_flag = FALSE; + +@@ -182,7 +183,6 @@ + } + else + { +- data->output->close_audio(); + break; + } + } +@@ -192,15 +192,17 @@ + while (!stop_flag && data->output->buffer_playing()) + g_usleep(10000); + +- data->output->close_audio(); +- + break; + } + ++ g_static_mutex_lock (& mutex); ++ stop_flag = TRUE; ++ data->output->close_audio (); ++ g_static_mutex_unlock (& mutex); ++ + g_free(buffer); + g_free(path); + +- stop_flag = TRUE; + return ! error; + } + +@@ -232,8 +234,13 @@ + + void psf2_Stop(InputPlayback *playback) + { +- stop_flag = TRUE; +- playback->output->abort_write(); ++ g_static_mutex_lock (& mutex); ++ if (! stop_flag) ++ { ++ stop_flag = TRUE; ++ playback->output->abort_write (); ++ } ++ g_static_mutex_unlock (& mutex); + } + + void psf2_pause(InputPlayback *playback, gshort pause) ================================================================ Index: packages/audacious-plugins/audacious-plugins-AUDPLUG-320.patch diff -u /dev/null packages/audacious-plugins/audacious-plugins-AUDPLUG-320.patch:1.1 --- /dev/null Mon Feb 7 22:21:48 2011 +++ packages/audacious-plugins/audacious-plugins-AUDPLUG-320.patch Mon Feb 7 22:21:43 2011 @@ -0,0 +1,93 @@ +changeset: 5320:d7f11bf8b7c8 +user: Tony Vroon <[email protected]> +date: Sun Jan 23 00:28:36 2011 +0000 +summary: adplug: Two fixes (to protrack & rol) from Michael Schwendt, closes AUDPLUG-320. + +diff -r 9f9d51fa2975 -r d7f11bf8b7c8 src/adplug/core/protrack.cxx +--- a/src/adplug/core/protrack.cxx Fri Jan 21 23:28:39 2011 -0500 ++++ b/src/adplug/core/protrack.cxx Sun Jan 23 00:28:36 2011 +0000 +@@ -266,6 +266,10 @@ + else + track--; + ++ if (track >= npats*nchans) { // prevent overflow ++ songend = 1; ++ return !songend; ++ } + AdPlug_LogWrite ("%3d%3d%2X%2X%2X|", tracks[track][row].note, + tracks[track][row].inst, tracks[track][row].command, + tracks[track][row].param1, tracks[track][row].param2); +diff -r 9f9d51fa2975 -r d7f11bf8b7c8 src/adplug/core/rol.cxx +--- a/src/adplug/core/rol.cxx Fri Jan 21 23:28:39 2011 -0500 ++++ b/src/adplug/core/rol.cxx Sun Jan 23 00:28:36 2011 +0000 +@@ -257,6 +257,9 @@ + TVolumeEvents &vEvents = voiceData.volume_events; + TPitchEvents &pEvents = voiceData.pitch_events; + ++ if (iEvents.empty()) { ++ return; // prevent out-of-bounds access ++ } + if( !(voiceData.mEventStatus & CVoiceData::kES_InstrEnd ) && + iEvents[voiceData.next_instrument_event].time == mCurrTick ) + { +@@ -271,6 +274,9 @@ + } + } + ++ if (vEvents.empty()) { ++ return; // prevent out-of-bounds access ++ } + if( !(voiceData.mEventStatus & CVoiceData::kES_VolumeEnd ) && + vEvents[voiceData.next_volume_event].time == mCurrTick ) + { +@@ -314,6 +320,9 @@ + } + } + ++ if (pEvents.empty()) { ++ return; // prevent out-of-bounds access ++ } + if( !(voiceData.mEventStatus & CVoiceData::kES_PitchEnd ) && + pEvents[voiceData.next_pitch_event].time == mCurrTick ) + { +@@ -454,6 +463,9 @@ + { + int16 const num_tempo_events = f->readInt( 2 ); + ++ if (num_tempo_events<0) { ++ return; ++ } + mTempoEvents.reserve( num_tempo_events ); + + for(int i=0; i<num_tempo_events; ++i) +@@ -538,6 +550,9 @@ + binistream *bnk_file, SBnkHeader const &bnk_header ) + { + int16 const number_of_instrument_events = f->readInt( 2 ); ++ if (number_of_instrument_events<0) { ++ return; ++ } + + TInstrumentEvents &instrument_events = voice.instrument_events; + +@@ -563,6 +578,9 @@ + void CrolPlayer::load_volume_events( binistream *f, CVoiceData &voice ) + { + int16 const number_of_volume_events = f->readInt( 2 ); ++ if (number_of_volume_events<0) { ++ return; ++ } + + TVolumeEvents &volume_events = voice.volume_events; + +@@ -583,6 +601,9 @@ + void CrolPlayer::load_pitch_events( binistream *f, CVoiceData &voice ) + { + int16 const number_of_pitch_events = f->readInt( 2 ); ++ if (number_of_pitch_events<0) { ++ return; ++ } + + TPitchEvents &pitch_events = voice.pitch_events; + + ================================================================ Index: packages/audacious-plugins/audacious-plugins-AUDPLUG-323.patch diff -u /dev/null packages/audacious-plugins/audacious-plugins-AUDPLUG-323.patch:1.1 --- /dev/null Mon Feb 7 22:21:48 2011 +++ packages/audacious-plugins/audacious-plugins-AUDPLUG-323.patch Mon Feb 7 22:21:43 2011 @@ -0,0 +1,164 @@ + +# HG changeset patch +# User John Lindgren <[email protected]> +# Date 1295406442 18000 +# Node ID b2c94059fb28375515c0ca9b54a5b2f09c333375 +# Parent 3f1ab558c6cf557d226151e941b5113ccd154d73 +mtp_up: Use strrchr instead of rindex; fix potential 0x1 pointer dereference (patch from Carlo Bramini, AUDPLUG-323). + +diff -r 3f1ab558c6cf -r b2c94059fb28 src/mtp_up/filetype.c +--- a/src/mtp_up/filetype.c Tue Jan 18 01:19:25 2011 -0500 ++++ b/src/mtp_up/filetype.c Tue Jan 18 22:07:22 2011 -0500 +@@ -2,84 +2,76 @@ + #include "string.h" + #include "filetype.h" + ++typedef struct { ++ const char *ptype; ++ const LIBMTP_filetype_t filetype; ++} file_entry_t; ++ ++/* This need to be kept constantly updated as new file types arrive. */ ++static const file_entry_t file_entries[] = { ++ { "wav", LIBMTP_FILETYPE_WAV }, ++ { "mp3", LIBMTP_FILETYPE_MP3 }, ++ { "wma", LIBMTP_FILETYPE_WMA }, ++ { "ogg", LIBMTP_FILETYPE_OGG }, ++ { "mp4", LIBMTP_FILETYPE_MP4 }, ++ { "wmv", LIBMTP_FILETYPE_WMV }, ++ { "avi", LIBMTP_FILETYPE_AVI }, ++ { "mpeg", LIBMTP_FILETYPE_MPEG }, ++ { "mpg", LIBMTP_FILETYPE_MPEG }, ++ { "asf", LIBMTP_FILETYPE_ASF }, ++ { "qt", LIBMTP_FILETYPE_QT }, ++ { "mov", LIBMTP_FILETYPE_QT }, ++ { "wma", LIBMTP_FILETYPE_WMA }, ++ { "jpg", LIBMTP_FILETYPE_JPEG }, ++ { "jpeg", LIBMTP_FILETYPE_JPEG }, ++ { "jfif", LIBMTP_FILETYPE_JFIF }, ++ { "tif", LIBMTP_FILETYPE_TIFF }, ++ { "tiff", LIBMTP_FILETYPE_TIFF }, ++ { "bmp", LIBMTP_FILETYPE_BMP }, ++ { "gif", LIBMTP_FILETYPE_GIF }, ++ { "pic", LIBMTP_FILETYPE_PICT }, ++ { "pict", LIBMTP_FILETYPE_PICT }, ++ { "png", LIBMTP_FILETYPE_PNG }, ++ { "wmf", LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT }, ++ { "ics", LIBMTP_FILETYPE_VCALENDAR2 }, ++ { "exe", LIBMTP_FILETYPE_WINEXEC }, ++ { "com", LIBMTP_FILETYPE_WINEXEC }, ++ { "bat", LIBMTP_FILETYPE_WINEXEC }, ++ { "dll", LIBMTP_FILETYPE_WINEXEC }, ++ { "sys", LIBMTP_FILETYPE_WINEXEC }, ++ { "aac", LIBMTP_FILETYPE_AAC }, ++ { "mp2", LIBMTP_FILETYPE_MP2 }, ++ { "flac", LIBMTP_FILETYPE_FLAC }, ++ { "m4a", LIBMTP_FILETYPE_M4A }, ++ { "doc", LIBMTP_FILETYPE_DOC }, ++ { "xml", LIBMTP_FILETYPE_XML }, ++ { "xls", LIBMTP_FILETYPE_XLS }, ++ { "ppt", LIBMTP_FILETYPE_PPT }, ++ { "mht", LIBMTP_FILETYPE_MHT }, ++ { "jp2", LIBMTP_FILETYPE_JP2 }, ++ { "jpx", LIBMTP_FILETYPE_JPX } ++}; ++ + /* Find the file type based on extension */ + LIBMTP_filetype_t + find_filetype (const char * filename) + { +- char *ptype; +- ptype = rindex(filename,'.')+1; +- LIBMTP_filetype_t filetype; +- /* This need to be kept constantly updated as new file types arrive. */ +- if (!strcasecmp (ptype, "wav")) { +- filetype = LIBMTP_FILETYPE_WAV; +- } else if (!strcasecmp (ptype, "mp3")) { +- filetype = LIBMTP_FILETYPE_MP3; +- } else if (!strcasecmp (ptype, "wma")) { +- filetype = LIBMTP_FILETYPE_WMA; +- } else if (!strcasecmp (ptype, "ogg")) { +- filetype = LIBMTP_FILETYPE_OGG; +- } else if (!strcasecmp (ptype, "mp4")) { +- filetype = LIBMTP_FILETYPE_MP4; +- } else if (!strcasecmp (ptype, "wmv")) { +- filetype = LIBMTP_FILETYPE_WMV; +- } else if (!strcasecmp (ptype, "avi")) { +- filetype = LIBMTP_FILETYPE_AVI; +- } else if (!strcasecmp (ptype, "mpeg") || !strcasecmp (ptype, "mpg")) { +- filetype = LIBMTP_FILETYPE_MPEG; +- } else if (!strcasecmp (ptype, "asf")) { +- filetype = LIBMTP_FILETYPE_ASF; +- } else if (!strcasecmp (ptype, "qt") || !strcasecmp (ptype, "mov")) { +- filetype = LIBMTP_FILETYPE_QT; +- } else if (!strcasecmp (ptype, "wma")) { +- filetype = LIBMTP_FILETYPE_WMA; +- } else if (!strcasecmp (ptype, "jpg") || !strcasecmp (ptype, "jpeg")) { +- filetype = LIBMTP_FILETYPE_JPEG; +- } else if (!strcasecmp (ptype, "jfif")) { +- filetype = LIBMTP_FILETYPE_JFIF; +- } else if (!strcasecmp (ptype, "tif") || !strcasecmp (ptype, "tiff")) { +- filetype = LIBMTP_FILETYPE_TIFF; +- } else if (!strcasecmp (ptype, "bmp")) { +- filetype = LIBMTP_FILETYPE_BMP; +- } else if (!strcasecmp (ptype, "gif")) { +- filetype = LIBMTP_FILETYPE_GIF; +- } else if (!strcasecmp (ptype, "pic") || !strcasecmp (ptype, "pict")) { +- filetype = LIBMTP_FILETYPE_PICT; +- } else if (!strcasecmp (ptype, "png")) { +- filetype = LIBMTP_FILETYPE_PNG; +- } else if (!strcasecmp (ptype, "wmf")) { +- filetype = LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT; +- } else if (!strcasecmp (ptype, "ics")) { +- filetype = LIBMTP_FILETYPE_VCALENDAR2; +- } else if (!strcasecmp (ptype, "exe") || !strcasecmp (ptype, "com") || +- !strcasecmp (ptype, "bat") || !strcasecmp (ptype, "dll") || +- !strcasecmp (ptype, "sys")) { +- filetype = LIBMTP_FILETYPE_WINEXEC; +- } else if (!strcasecmp (ptype, "aac")) { +- filetype = LIBMTP_FILETYPE_AAC; +- } else if (!strcasecmp (ptype, "mp2")) { +- filetype = LIBMTP_FILETYPE_MP2; +- } else if (!strcasecmp (ptype, "flac")) { +- filetype = LIBMTP_FILETYPE_FLAC; +- } else if (!strcasecmp (ptype, "m4a")) { +- filetype = LIBMTP_FILETYPE_M4A; +- } else if (!strcasecmp (ptype, "doc")) { +- filetype = LIBMTP_FILETYPE_DOC; +- } else if (!strcasecmp (ptype, "xml")) { +- filetype = LIBMTP_FILETYPE_XML; +- } else if (!strcasecmp (ptype, "xls")) { +- filetype = LIBMTP_FILETYPE_XLS; +- } else if (!strcasecmp (ptype, "ppt")) { +- filetype = LIBMTP_FILETYPE_PPT; +- } else if (!strcasecmp (ptype, "mht")) { +- filetype = LIBMTP_FILETYPE_MHT; +- } else if (!strcasecmp (ptype, "jp2")) { +- filetype = LIBMTP_FILETYPE_JP2; +- } else if (!strcasecmp (ptype, "jpx")) { +- filetype = LIBMTP_FILETYPE_JPX; +- } else { +- /* Tagging as unknown file type */ +- filetype = LIBMTP_FILETYPE_UNKNOWN; +- } +- return filetype; ++ char *ptype = strrchr(filename,'.'); ++ unsigned int n; ++ ++ if (ptype != NULL) ++ { ++ /* Skip '.' char */ ++ ptype++; ++ ++ /* Seach entry in the table */ ++ for (n=0; n<sizeof(file_entries)/sizeof(file_entries[0]); n++) ++ { ++ if (!strcasecmp (ptype, file_entries[n].ptype)) ++ return file_entries[n].filetype; ++ } ++ } ++ ++ return LIBMTP_FILETYPE_UNKNOWN; + } + + ================================================================ Index: packages/audacious-plugins/audacious-plugins-libdir.patch diff -u /dev/null packages/audacious-plugins/audacious-plugins-libdir.patch:1.1 --- /dev/null Mon Feb 7 22:21:48 2011 +++ packages/audacious-plugins/audacious-plugins-libdir.patch Mon Feb 7 22:21:43 2011 @@ -0,0 +1,24 @@ +diff -ur audacious-plugins-2.4.3.orig/src/ladspa/ladspa.c audacious-plugins-2.4.3/src/ladspa/ladspa.c +--- audacious-plugins-2.4.3.orig/src/ladspa/ladspa.c 2011-02-07 20:25:36.222352306 +0000 ++++ audacious-plugins-2.4.3/src/ladspa/ladspa.c 2011-01-12 11:13:26.000000000 +0000 +@@ -210,7 +210,7 @@ + if (ladspa_path == NULL) + { + /* Fallback, look in obvious places */ +- find_plugins("/usr/lib/ladspa"); ++ find_plugins("LIBDIR/ladspa"); + find_plugins("/usr/local/lib/ladspa"); + } + else +Only in audacious-plugins-2.4.3.orig/src/ladspa: .ladspa.c.swp +diff -ur audacious-plugins-2.4.3.orig/src/ladspa/Makefile audacious-plugins-2.4.3/src/ladspa/Makefile +--- audacious-plugins-2.4.3.orig/src/ladspa/Makefile 2011-02-07 20:32:52.790556339 +0000 ++++ audacious-plugins-2.4.3/src/ladspa/Makefile 2011-01-12 11:13:26.000000000 +0000 +@@ -8,5 +8,5 @@ + plugindir := ${plugindir}/${EFFECT_PLUGIN_DIR} + + CFLAGS += ${PLUGIN_CFLAGS} +-CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. ++CPPFLAGS += ${PLUGIN_CPPFLAGS} ${MOWGLI_CFLAGS} ${GTK_CFLAGS} ${GLIB_CFLAGS} -I../.. -DLIBDIR=${libdir} + LIBS += ${GTK_LIBS} ${GLIB_LIBS} -ldl +Only in audacious-plugins-2.4.3.orig/src/ladspa: .Makefile.swp ================================================================ Index: packages/audacious-plugins/audacious-plugins-verbose_make.patch diff -u /dev/null packages/audacious-plugins/audacious-plugins-verbose_make.patch:1.1 --- /dev/null Mon Feb 7 22:21:48 2011 +++ packages/audacious-plugins/audacious-plugins-verbose_make.patch Mon Feb 7 22:21:43 2011 @@ -0,0 +1,48 @@ +--- buildsys.mk.in.orig 2011-02-07 19:20:48.661369541 +0000 ++++ buildsys.mk.in 2011-02-07 19:21:59.930520847 +0000 +@@ -92,7 +92,6 @@ + + MO_FILES = ${LOCALES:.po=.mo} + +-.SILENT: + .SUFFIXES: + .SUFFIXES: .beam .c .cc .cxx .d .dep .erl .mo .m .mm .o .po .py .pyc .xpm .S + .PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean +@@ -502,21 +501,21 @@ + # ./configure creates .deps files even in folders not listed in SUBDIRS. + rm -f `find . -name .deps ! -path ./.hg\*` + +-DIR_ENTER = printf "\033[K\033[0;36mEntering directory \033[1;36m$$i\033[0;36m.\033[0m\n"; cd $$i || exit 1 +-DIR_LEAVE = printf "\033[K\033[0;36mLeaving directory \033[1;36m$$i\033[0;36m.\033[0m\n"; cd .. || exit 1 +-DEPEND_STATUS = printf "\033[K\033[0;33mGenerating dependencies...\033[0m\r" +-DEPEND_OK = printf "\033[K\033[0;32mSuccessfully generated dependencies.\033[0m\n" +-DEPEND_FAILED = printf "\033[K\033[0;31mFailed to generate dependencies!\033[0m\n"; exit 1 +-COMPILE_STATUS = printf "\033[K\033[0;33mCompiling \033[1;33m$<\033[0;33m...\033[0m\r" +-COMPILE_OK = printf "\033[K\033[0;32mSuccessfully compiled \033[1;32m$<\033[0;32m.\033[0m\n" +-COMPILE_FAILED = printf "\033[K\033[0;31mFailed to compile \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1 +-LINK_STATUS = printf "\033[K\033[0;33mLinking \033[1;33m$@\033[0;33m...\033[0m\r" +-LINK_OK = printf "\033[K\033[0;32mSuccessfully linked \033[1;32m$@\033[0;32m.\033[0m\n" +-LINK_FAILED = printf "\033[K\033[0;31mFailed to link \033[1;31m$@\033[0;31m!\033[0m\n"; exit 1 +-INSTALL_STATUS = printf "\033[K\033[0;33mInstalling \033[1;33m$$i\033[0;33m...\033[0m\r" +-INSTALL_OK = printf "\033[K\033[0;32mSuccessfully installed \033[1;32m$$i\033[0;32m.\033[0m\n" +-INSTALL_FAILED = printf "\033[K\033[0;31mFailed to install \033[1;31m$$i\033[0;31m!\033[0m\n"; exit 1 +-DELETE_OK = printf "\033[K\033[0;34mDeleted \033[1;34m$$i\033[0;34m.\033[0m\n" +-DELETE_FAILED = printf "\033[K\033[0;31mFailed to delete \033[1;31m$$i\033[0;31m!\033[0m\n"; exit 1 ++DIR_ENTER = printf "Entering directory $$i.\n"; cd $$i || exit 1 ++DIR_LEAVE = printf "Leaving directory $$i.\n"; cd .. || exit 1 ++DEPEND_STATUS = printf "Generating dependencies...\n" ++DEPEND_OK = printf "Successfully generated dependencies.\n" ++DEPEND_FAILED = printf "Failed to generate dependencies!\n"; exit 1 ++COMPILE_STATUS = printf "Compiling $<...\n" ++COMPILE_OK = printf "Successfully compiled $<.\n" ++COMPILE_FAILED = printf "Failed to compile $<!\n"; exit 1 ++LINK_STATUS = printf "Linking $@...\n" ++LINK_OK = printf "Successfully linked $@.\n" ++LINK_FAILED = printf "Failed to link $@!\n"; exit 1 ++INSTALL_STATUS = printf "Installing $$i...\n" ++INSTALL_OK = printf "Successfully installed $$i.\n" ++INSTALL_FAILED = printf "Failed to install $$i!\n"; exit 1 ++DELETE_OK = printf "Deleted $$i.\n" ++DELETE_FAILED = printf "Failed to delete $$i!\n"; exit 1 + + include .deps ================================================================ ---- CVS-web: http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/audacious-plugins/audacious-plugins.spec?r1=1.65&r2=1.66&f=u _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
