Index: Makefile
===================================================================
RCS file: /cvs/ports/www/seamonkey/Makefile,v
retrieving revision 1.31
diff -N -u Makefile
--- Makefile	9 Jan 2009 15:54:31 -0000	1.31
+++ Makefile	16 May 2009 02:54:21 -0000
@@ -1,11 +1,11 @@
-# $OpenBSD: Makefile,v 1.31 2009/01/09 15:54:31 martynas Exp $
+# $OpenBSD: Makefile,v 1.35 2009/05/03 15:47:27 martynas Exp $
 
 SHARED_ONLY=	Yes
 ONLY_FOR_ARCHS=	alpha amd64 i386 powerpc sparc sparc64
 
 COMMENT=	integrated mozilla application suite
 
-VER=		1.1.14
+VER=		1.1.16
 DISTNAME=	seamonkey-${VER}.source
 PKGNAME=	seamonkey-${VER}p0
 
@@ -41,40 +41,31 @@
 PERMIT_DISTFILES_FTP=	Yes
 
 MASTER_SITES=	http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/${VER}/
-.for id version in \
-	0 1.1.2 \
-	1 1.1.8 \
-	2 1.1.9 \
-	4 1.1.11 \
-	5 1.1.12 \
-	6 1.1.13 \
-	7 1.1.14
-MASTER_SITES${id}+=	http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/${version}/contrib-localized/
-.endfor
+MASTER_SITES0=	http://mirrors.protection.cx/~martynas/mozilla/seamonkey/langpacks/
 
-LANGUAGES=	be-BY 2 1.1.9 \
-		ca-AD 1 1.1.8 \
-		cs-CZ 7 1.1.14 \
-		de-AT 7 1.1.14 \
-		el-GR 0 1.1.2 \
-		es-ES 6 1.1.13 \
-		fr-FR 6 1.1.13 \
-		he-IL 0 1.1.2 \
-		hu-HU 4 1.1.11 \
-		it-IT 4 1.1.11 \
-		lt-LT 5 1.1.12 \
-		nl-NL 6 1.1.13 \
-		pl-PL 7 1.1.14 \
-		pt-BR 7 1.1.14 \
-		ru-RU 6 1.1.13 \
-		ur-PK 2 1.1.9 \
-		sv-SE 5 1.1.12
+LANGUAGES=	be-BY 1.1.9 \
+		ca-AD 1.1.15 \
+		cs-CZ 1.1.16 \
+		de-AT 1.1.16 \
+		el-GR 1.1.2 \
+		es-ES 1.1.13 \
+		fr-FR 1.1.15 \
+		he-IL 1.1.2 \
+		hu-HU 1.1.11 \
+		it-IT 1.1.15 \
+		lt-LT 1.1.12 \
+		nl-NL 1.1.15 \
+		pl-PL 1.1.15 \
+		pt-BR 1.1.16 \
+		ru-RU 1.1.16 \
+		ur-PK 1.1.9 \
+		sv-SE 1.1.12
 BINLANGS=	be-BY el-GR fr-FR pl-PL pt-BR
 
 DISTFILES=	${DISTNAME}${EXTRACT_SUFX}
 
-.for language id version in ${LANGUAGES}
-DISTFILES+=	seamonkey-${version}.${language}.langpack.xpi:${id}
+.for language version in ${LANGUAGES}
+DISTFILES+=	seamonkey-${version}.${language}.langpack.xpi:0
 .endfor
 
 EXTRACT_CASES += *.xpi) \
@@ -90,14 +81,13 @@
 		nspr4.>=17,plc4.>=17,plds4.>=17:nspr->=4.6.4p1:devel/nspr \
 		nss3.>=19,smime3.>=19,softokn3.>=19,ssl3.>=19:nss->=3.11.4p1:security/nss
 
-RUN_DEPENDS=	:esound-*:audio/esound \
-		:desktop-file-utils-*:devel/desktop-file-utils
+RUN_DEPENDS=	:desktop-file-utils-*:devel/desktop-file-utils
 WANTLIB=	c glib-2.0 m pthread stdc++ \
 		X11 Xau Xcomposite Xcursor Xdamage Xdmcp \
 		Xext Xfixes Xft Xi Xinerama Xrandr Xrender Xt atk-1.0 \
 		cairo expat fontconfig freetype glitz gmodule-2.0 \
 		gobject-2.0 gthread-2.0 jpeg pango-1.0 pangocairo-1.0 \
-		pangoft2-1.0 pangox-1.0 pixman-1 png z
+		pangoft2-1.0 pangox-1.0 pixman-1 png z gio-2.0
 
 VMEM_WARNING=	Yes
 
@@ -155,11 +145,12 @@
 		init.d plugins res searchplugins
 
 post-extract:
+	@cp -f ${FILESDIR}/nsSound.cpp ${WRKSRC}/widget/src/gtk2/
 .for i in ${BINLANGS}	# normalize
 	@mv -f ${WRKDIR}/$i/bin/* ${WRKDIR}/$i/
 	@rmdir ${WRKDIR}/$i/bin
 .endfor
-.for language id version in ${LANGUAGES}
+.for language version in ${LANGUAGES}
 	@rm -f ${WRKDIR}/${language}/chrome/*-{mac,win}.jar
 .endfor
 
@@ -188,7 +179,7 @@
 	@sed -e 's,!!PREFIX!!,${TRUEPREFIX},g' \
 		< ${FILESDIR}/README.OpenBSD > ${MOZ}/README.OpenBSD
 	${INSTALL_MAN} ${WRKSRC}/dist/man/man1/seamonkey.1 ${PREFIX}/man/man1/
-.for language id version in ${LANGUAGES}
+.for language version in ${LANGUAGES}
 	${INSTALL_DATA} ${WRKDIR}/${language}/chrome/*.jar ${MOZ}/chrome/
 	sh ${FILESDIR}/genchrome ${WRKDIR}/${language}/install.js \
 		${language} >> ${MOZ}/chrome/installed-chrome.txt
Index: distinfo
===================================================================
RCS file: /cvs/ports/www/seamonkey/distinfo,v
retrieving revision 1.18
diff -N -u distinfo
--- distinfo	18 Dec 2008 21:05:59 -0000	1.18
+++ distinfo	16 May 2009 02:54:21 -0000
@@ -1,90 +1,90 @@
-MD5 (seamonkey-1.1.14/seamonkey-1.1.11.hu-HU.langpack.xpi) = Ea/2rT805kQ1mrhzt4hJnw==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.11.it-IT.langpack.xpi) = nz5DrId16Odn8KpHK4xCJQ==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.12.lt-LT.langpack.xpi) = J29469ODQj22UXl1gPXjJQ==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.12.sv-SE.langpack.xpi) = sqhqQDvlcaAxArokg7cWXw==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.13.es-ES.langpack.xpi) = qniaar8hIHF+nejMzmtmzQ==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.13.fr-FR.langpack.xpi) = qVZxUClOWsYeXWfOSVMk8A==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.13.nl-NL.langpack.xpi) = 9AW/AWeAD82w1T8ncsJmFg==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.13.ru-RU.langpack.xpi) = 79oJAGwy676DXVukQlnXiw==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.14.cs-CZ.langpack.xpi) = b+D/gxaMCGnzESuAAv0VzQ==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.14.de-AT.langpack.xpi) = urCJYqTxPD6gL2L5zC/dRQ==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.14.pl-PL.langpack.xpi) = c6Hnb/G22MWXELtpyif3sA==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.14.pt-BR.langpack.xpi) = Oy0dm/NE3d9T9Wr5yYLLIg==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.14.source.tar.gz) = oWmrFSIJIAp7rSmidcsDMw==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.2.el-GR.langpack.xpi) = kMAu0FZl10OCQSy3RWyFSw==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.2.he-IL.langpack.xpi) = 17obSKgm06QlznoM4xZR/Q==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.8.ca-AD.langpack.xpi) = dLygZW8jyZLyBV5X6ZYFOg==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.9.be-BY.langpack.xpi) = IXjdZrNN147447or3b2doA==
-MD5 (seamonkey-1.1.14/seamonkey-1.1.9.ur-PK.langpack.xpi) = tNccyhldW5oEe1hSu6HSag==
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.11.hu-HU.langpack.xpi) = NClFwTYi6gCzSnimM1vkvBLdHbo=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.11.it-IT.langpack.xpi) = vw5OqYksj/RcImK3/WJhQZIH5gI=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.12.lt-LT.langpack.xpi) = B9P0N1brQjxZ5c31x7u8lDlLkz8=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.12.sv-SE.langpack.xpi) = YcPa0E1rIWVBxN4gML1R01B3ZtA=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.13.es-ES.langpack.xpi) = jqlT4O8yMtnKcdQ25IxHGPu7cBQ=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.13.fr-FR.langpack.xpi) = NH3HCj3bZDAhOjvI9/Ya8PIx+aE=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.13.nl-NL.langpack.xpi) = Zzd7AqZvFUpXWivkRG0zS/Wrc/U=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.13.ru-RU.langpack.xpi) = J57KFlFaRYUyns34GB6P6fUMCyg=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.14.cs-CZ.langpack.xpi) = xp+77OFMu1IMGclCysQPXj5RCWU=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.14.de-AT.langpack.xpi) = tIWOw2wyEwEj3ov5zUdMd/uEopU=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.14.pl-PL.langpack.xpi) = 8VpGssJy5dwoMHy7WEZ2nsJTwDA=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.14.pt-BR.langpack.xpi) = OXdZvx2VfWKSn3uazE8l8xDD4VA=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.14.source.tar.gz) = ocE9wEIve7+ChVS8niR+MPlyTmY=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.2.el-GR.langpack.xpi) = /8iVH+2SmOBVH0utOUQPiLXLSXI=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.2.he-IL.langpack.xpi) = HRPVXnog7c7+w5eYuogCwY5rtNU=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.8.ca-AD.langpack.xpi) = S0lZp9pbVINwpnpM51FIefsiNp0=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.9.be-BY.langpack.xpi) = MaGUqJl9OSQsLWm8y73CAPPWlL0=
-RMD160 (seamonkey-1.1.14/seamonkey-1.1.9.ur-PK.langpack.xpi) = lVIIich8n81v98J9qmrSS5SCgIM=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.11.hu-HU.langpack.xpi) = sCDi+d1GhL4Py4g2/QodNuMnqhw=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.11.it-IT.langpack.xpi) = dkBBR4y07jMJCjwJ7pkS/TZ6lWU=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.12.lt-LT.langpack.xpi) = JUjZeQ2+Bj/c+9dvRP2VZ94GkZ0=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.12.sv-SE.langpack.xpi) = LaPm3EUV1HqdVOv/za8Cz7kRVdM=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.13.es-ES.langpack.xpi) = 3Ptd9oP5IjItdPQJm64snJ3RDUg=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.13.fr-FR.langpack.xpi) = 0oK5mAbBrNoN0UjybRMq4uPlGk4=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.13.nl-NL.langpack.xpi) = cPCTg95p2Ri4ZUNgSaLJaS8BURM=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.13.ru-RU.langpack.xpi) = 9sXTSXrPOs95wSc42nq7p287pJQ=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.14.cs-CZ.langpack.xpi) = Ak2otViAhaxZkEEihDmF4x1SVHw=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.14.de-AT.langpack.xpi) = mXs5FAcOXO8XutOKmW4GL2IuLd8=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.14.pl-PL.langpack.xpi) = KqWWGUWWs90rVkZdJehoOz/Kju0=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.14.pt-BR.langpack.xpi) = Na+BDeo3a67XwixASuk1m3MrJjQ=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.14.source.tar.gz) = fawyG6RsWRrcvAV05i6qsKNMD5E=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.2.el-GR.langpack.xpi) = Blj2rXZ0U/lfN3OrdSORQp5PqVQ=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.2.he-IL.langpack.xpi) = HaJrFxVar46VzohOoja50q26oyY=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.8.ca-AD.langpack.xpi) = Zz+zZdpHh86qlqh2hEWtj47x/X4=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.9.be-BY.langpack.xpi) = oYEKmByHQdrOtes8voiMqa3SaOM=
-SHA1 (seamonkey-1.1.14/seamonkey-1.1.9.ur-PK.langpack.xpi) = 6A47tcOHbmz7FvOu/3FwQUGMcJc=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.11.hu-HU.langpack.xpi) = 9cARtkU9WnGkEdQFciWsKZMiFBfn+to0SAoAq4YegLA=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.11.it-IT.langpack.xpi) = 1FmvxOPHGljwuBdT0JMA1Gj6lJc4QG59fOVC50A8udY=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.12.lt-LT.langpack.xpi) = AADXJ0HvH2EEUq0nZeQnDRAVDZMqe/hXUFvMBS46kfc=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.12.sv-SE.langpack.xpi) = S0S7t9KcGU3uRynMbqSsWLbxikavYSNkE3jKRE/aGxk=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.13.es-ES.langpack.xpi) = tiLGgG4BbjLlFRI77Ozz4EbZy3PNQ5vhnSqdtg6TY0A=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.13.fr-FR.langpack.xpi) = eWkIiwYn/IQm1UO2YEFu+Z+s9YcBOH+EbACxZ/RArI8=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.13.nl-NL.langpack.xpi) = WAgAlwA55HWYfO8v5Jz1J5mdw5I598GkAkhyVJC3J20=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.13.ru-RU.langpack.xpi) = A7EgG7W+5KSiEsara1Jxqlx/znyFQRLQipKqTEh+SsY=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.14.cs-CZ.langpack.xpi) = dTPrZv3i5Nj3DURO3PHWSUkIZ3mkolLxjnL4jJLz61w=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.14.de-AT.langpack.xpi) = DYrJrFvi1HiWasfnwBta+PBh0AsN9NcH6b1dieF8g0g=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.14.pl-PL.langpack.xpi) = AynZkSdUw6hLXF9JByLC4KY8J24i+i5GZ+04rsRj93M=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.14.pt-BR.langpack.xpi) = tcospVmRWo6yUrBUrYkRSNP19aNyZbNLbO8NUasCQNI=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.14.source.tar.gz) = GSbb0Q7ppWQZ2kSnhDmfIxqoDOSoFyWLwQMVxMW+YDk=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.2.el-GR.langpack.xpi) = NLWdnFMzvaAgxpbNvWMrVfU+O1tFmN7Vmgc7My9H6fw=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.2.he-IL.langpack.xpi) = eTwxq+Vu+gVDUeieOKUCsk8KFuHe/1ZpgAUpP2Z4YXI=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.8.ca-AD.langpack.xpi) = qcCveyT65b+I8tWggotpqq3U60Fog+z6PoGsKzS53oA=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.9.be-BY.langpack.xpi) = K2Ulu6dJJ+w+okA83JLbTNI451QC5p/1i2jPTtt9e3w=
-SHA256 (seamonkey-1.1.14/seamonkey-1.1.9.ur-PK.langpack.xpi) = IP92ka/XTu1YjGY1/WXTAdSaGlWFGVOkUvkNY1D/nSE=
-SIZE (seamonkey-1.1.14/seamonkey-1.1.11.hu-HU.langpack.xpi) = 1790904
-SIZE (seamonkey-1.1.14/seamonkey-1.1.11.it-IT.langpack.xpi) = 744513
-SIZE (seamonkey-1.1.14/seamonkey-1.1.12.lt-LT.langpack.xpi) = 720875
-SIZE (seamonkey-1.1.14/seamonkey-1.1.12.sv-SE.langpack.xpi) = 917287
-SIZE (seamonkey-1.1.14/seamonkey-1.1.13.es-ES.langpack.xpi) = 745935
-SIZE (seamonkey-1.1.14/seamonkey-1.1.13.fr-FR.langpack.xpi) = 1071910
-SIZE (seamonkey-1.1.14/seamonkey-1.1.13.nl-NL.langpack.xpi) = 714106
-SIZE (seamonkey-1.1.14/seamonkey-1.1.13.ru-RU.langpack.xpi) = 1187071
-SIZE (seamonkey-1.1.14/seamonkey-1.1.14.cs-CZ.langpack.xpi) = 739597
-SIZE (seamonkey-1.1.14/seamonkey-1.1.14.de-AT.langpack.xpi) = 1656534
-SIZE (seamonkey-1.1.14/seamonkey-1.1.14.pl-PL.langpack.xpi) = 1818437
-SIZE (seamonkey-1.1.14/seamonkey-1.1.14.pt-BR.langpack.xpi) = 512359
-SIZE (seamonkey-1.1.14/seamonkey-1.1.14.source.tar.gz) = 49233648
-SIZE (seamonkey-1.1.14/seamonkey-1.1.2.el-GR.langpack.xpi) = 490441
-SIZE (seamonkey-1.1.14/seamonkey-1.1.2.he-IL.langpack.xpi) = 744243
-SIZE (seamonkey-1.1.14/seamonkey-1.1.8.ca-AD.langpack.xpi) = 1088729
-SIZE (seamonkey-1.1.14/seamonkey-1.1.9.be-BY.langpack.xpi) = 592258
-SIZE (seamonkey-1.1.14/seamonkey-1.1.9.ur-PK.langpack.xpi) = 683014
+MD5 (seamonkey-1.1.16/seamonkey-1.1.11.hu-HU.langpack.xpi) = Ea/2rT805kQ1mrhzt4hJnw==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.12.lt-LT.langpack.xpi) = J29469ODQj22UXl1gPXjJQ==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.12.sv-SE.langpack.xpi) = sqhqQDvlcaAxArokg7cWXw==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.13.es-ES.langpack.xpi) = qniaar8hIHF+nejMzmtmzQ==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.15.ca-AD.langpack.xpi) = RubQjK/i6FL+DY93RE/YSA==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.15.fr-FR.langpack.xpi) = hHWFqiAKsrHNVcauSXNXtg==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.15.it-IT.langpack.xpi) = 6crUMh3JxQkkVHyhyyxNIw==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.15.nl-NL.langpack.xpi) = ykFL3xzeEMIlhpC7tBeG7g==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.15.pl-PL.langpack.xpi) = mLkSJegniCpx2VWYuaJuNQ==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.16.cs-CZ.langpack.xpi) = CeNQhAFnodhB3NGbP9Zk/w==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.16.de-AT.langpack.xpi) = R8YBzrKHoZ/TASkja1N8dA==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.16.pt-BR.langpack.xpi) = rukL2wI1ZdFLtRxEYFBztg==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.16.ru-RU.langpack.xpi) = +UFbyxUR1n3/uFEtGQaLNQ==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.16.source.tar.gz) = MJEb+UFA91VXpSKb5T8ALg==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.2.el-GR.langpack.xpi) = kMAu0FZl10OCQSy3RWyFSw==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.2.he-IL.langpack.xpi) = 17obSKgm06QlznoM4xZR/Q==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.9.be-BY.langpack.xpi) = IXjdZrNN147447or3b2doA==
+MD5 (seamonkey-1.1.16/seamonkey-1.1.9.ur-PK.langpack.xpi) = tNccyhldW5oEe1hSu6HSag==
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.11.hu-HU.langpack.xpi) = NClFwTYi6gCzSnimM1vkvBLdHbo=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.12.lt-LT.langpack.xpi) = B9P0N1brQjxZ5c31x7u8lDlLkz8=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.12.sv-SE.langpack.xpi) = YcPa0E1rIWVBxN4gML1R01B3ZtA=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.13.es-ES.langpack.xpi) = jqlT4O8yMtnKcdQ25IxHGPu7cBQ=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.15.ca-AD.langpack.xpi) = 39syRcj0twhthAVILYv0Ek5MmBk=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.15.fr-FR.langpack.xpi) = +xErCDwmsp10rtYIQ8m4QfY7nN8=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.15.it-IT.langpack.xpi) = T9nXgdpmPiUigKfPrqJy16pGdXE=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.15.nl-NL.langpack.xpi) = p6w5L4uwceVwTZ4NuoZlzDvy9cs=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.15.pl-PL.langpack.xpi) = uHlwSOKzm6rED6bn0DurkAlnVk0=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.16.cs-CZ.langpack.xpi) = JTghYNMMI69Kz/A4twdZDhk2PUs=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.16.de-AT.langpack.xpi) = Ndns3HxWQyrlV2CykoEqt7JQXJU=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.16.pt-BR.langpack.xpi) = yG/JsVQ5AK28/33yNB85v1bj76I=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.16.ru-RU.langpack.xpi) = nkiZ/Lp0LpHtkCOYV7mk2Fe2vBs=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.16.source.tar.gz) = /v+GfgGCO5xuk4NjEuExxjiaulQ=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.2.el-GR.langpack.xpi) = /8iVH+2SmOBVH0utOUQPiLXLSXI=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.2.he-IL.langpack.xpi) = HRPVXnog7c7+w5eYuogCwY5rtNU=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.9.be-BY.langpack.xpi) = MaGUqJl9OSQsLWm8y73CAPPWlL0=
+RMD160 (seamonkey-1.1.16/seamonkey-1.1.9.ur-PK.langpack.xpi) = lVIIich8n81v98J9qmrSS5SCgIM=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.11.hu-HU.langpack.xpi) = sCDi+d1GhL4Py4g2/QodNuMnqhw=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.12.lt-LT.langpack.xpi) = JUjZeQ2+Bj/c+9dvRP2VZ94GkZ0=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.12.sv-SE.langpack.xpi) = LaPm3EUV1HqdVOv/za8Cz7kRVdM=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.13.es-ES.langpack.xpi) = 3Ptd9oP5IjItdPQJm64snJ3RDUg=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.15.ca-AD.langpack.xpi) = g4YSvnhyWea1Rkt3rC5UmMH8rfE=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.15.fr-FR.langpack.xpi) = ti24GCR2oFdFTPH/eMJERXqB4gQ=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.15.it-IT.langpack.xpi) = Ogm47wVWC0TA6twA00Y+1siNt24=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.15.nl-NL.langpack.xpi) = +SBTu571PtAfnPRTox4pvfRDwig=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.15.pl-PL.langpack.xpi) = /JnV8zJyGSyUELzUi/6RGVPvOZo=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.16.cs-CZ.langpack.xpi) = 1whY7szTrz8qtvQfMLBMDsJl860=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.16.de-AT.langpack.xpi) = MaJp22N0kmO67IPJ/4HOuY3fIqE=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.16.pt-BR.langpack.xpi) = ZIO9IsNmX1bbGoaKVJFmwxVp92Y=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.16.ru-RU.langpack.xpi) = 9vciwCP5aRseMyS6zQTqaEYjMmk=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.16.source.tar.gz) = tZJ8nFUZsxnymA0xt/lUnY1vr3s=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.2.el-GR.langpack.xpi) = Blj2rXZ0U/lfN3OrdSORQp5PqVQ=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.2.he-IL.langpack.xpi) = HaJrFxVar46VzohOoja50q26oyY=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.9.be-BY.langpack.xpi) = oYEKmByHQdrOtes8voiMqa3SaOM=
+SHA1 (seamonkey-1.1.16/seamonkey-1.1.9.ur-PK.langpack.xpi) = 6A47tcOHbmz7FvOu/3FwQUGMcJc=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.11.hu-HU.langpack.xpi) = 9cARtkU9WnGkEdQFciWsKZMiFBfn+to0SAoAq4YegLA=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.12.lt-LT.langpack.xpi) = AADXJ0HvH2EEUq0nZeQnDRAVDZMqe/hXUFvMBS46kfc=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.12.sv-SE.langpack.xpi) = S0S7t9KcGU3uRynMbqSsWLbxikavYSNkE3jKRE/aGxk=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.13.es-ES.langpack.xpi) = tiLGgG4BbjLlFRI77Ozz4EbZy3PNQ5vhnSqdtg6TY0A=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.15.ca-AD.langpack.xpi) = LwqQhNDrtNiQsfLDNILRjCPVi2gUcxmCez9hXCGIknU=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.15.fr-FR.langpack.xpi) = 5JugLZrHmm6IlCtbVnyCXY/WxM8k7rq7UdK8JkxFk4A=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.15.it-IT.langpack.xpi) = JsCO4LMUS4Ovt+5iKdiSdjHutAjfq3PA9FFpHMd+GyY=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.15.nl-NL.langpack.xpi) = I49looN01lgZ0L0jMvt6TtRwIWpwjlumL8/xk1RZS60=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.15.pl-PL.langpack.xpi) = E3HrzfZrZtbPdpoAdEwaGlfkdmNYfaZepUhlyXZaFKg=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.16.cs-CZ.langpack.xpi) = iQGcgW3GsVMJ8wr8GY3ILwFcqW4kVuRb0TjWFJD3KhI=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.16.de-AT.langpack.xpi) = PLOavxauGPj6mNVtbabLN6W21xFckIium0q/x8WnQZk=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.16.pt-BR.langpack.xpi) = LwItXVI92R7J4OaS+9WXkG/d+zh20H6jYVUi0W87gCo=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.16.ru-RU.langpack.xpi) = 6+poRajPOyzF5GJHO7g45YvjjbKQPw7i+gTBzNMsNz8=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.16.source.tar.gz) = LAF2hfxtdL+Y5bRgloPid2Cr3hvBwrQqNbxJC7SPnNE=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.2.el-GR.langpack.xpi) = NLWdnFMzvaAgxpbNvWMrVfU+O1tFmN7Vmgc7My9H6fw=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.2.he-IL.langpack.xpi) = eTwxq+Vu+gVDUeieOKUCsk8KFuHe/1ZpgAUpP2Z4YXI=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.9.be-BY.langpack.xpi) = K2Ulu6dJJ+w+okA83JLbTNI451QC5p/1i2jPTtt9e3w=
+SHA256 (seamonkey-1.1.16/seamonkey-1.1.9.ur-PK.langpack.xpi) = IP92ka/XTu1YjGY1/WXTAdSaGlWFGVOkUvkNY1D/nSE=
+SIZE (seamonkey-1.1.16/seamonkey-1.1.11.hu-HU.langpack.xpi) = 1790904
+SIZE (seamonkey-1.1.16/seamonkey-1.1.12.lt-LT.langpack.xpi) = 720875
+SIZE (seamonkey-1.1.16/seamonkey-1.1.12.sv-SE.langpack.xpi) = 917287
+SIZE (seamonkey-1.1.16/seamonkey-1.1.13.es-ES.langpack.xpi) = 745935
+SIZE (seamonkey-1.1.16/seamonkey-1.1.15.ca-AD.langpack.xpi) = 1085850
+SIZE (seamonkey-1.1.16/seamonkey-1.1.15.fr-FR.langpack.xpi) = 1074809
+SIZE (seamonkey-1.1.16/seamonkey-1.1.15.it-IT.langpack.xpi) = 744211
+SIZE (seamonkey-1.1.16/seamonkey-1.1.15.nl-NL.langpack.xpi) = 714110
+SIZE (seamonkey-1.1.16/seamonkey-1.1.15.pl-PL.langpack.xpi) = 1818428
+SIZE (seamonkey-1.1.16/seamonkey-1.1.16.cs-CZ.langpack.xpi) = 739589
+SIZE (seamonkey-1.1.16/seamonkey-1.1.16.de-AT.langpack.xpi) = 1656537
+SIZE (seamonkey-1.1.16/seamonkey-1.1.16.pt-BR.langpack.xpi) = 510445
+SIZE (seamonkey-1.1.16/seamonkey-1.1.16.ru-RU.langpack.xpi) = 1188030
+SIZE (seamonkey-1.1.16/seamonkey-1.1.16.source.tar.gz) = 49245378
+SIZE (seamonkey-1.1.16/seamonkey-1.1.2.el-GR.langpack.xpi) = 490441
+SIZE (seamonkey-1.1.16/seamonkey-1.1.2.he-IL.langpack.xpi) = 744243
+SIZE (seamonkey-1.1.16/seamonkey-1.1.9.be-BY.langpack.xpi) = 592258
+SIZE (seamonkey-1.1.16/seamonkey-1.1.9.ur-PK.langpack.xpi) = 683014
Index: files/nsSound.cpp
===================================================================
RCS file: /cvs/ports/www/seamonkey/files/nsSound.cpp,v
diff -N -u files/nsSound.cpp
--- /dev/null	16 May 2009 02:54:22 -0000
+++ files/nsSound.cpp	16 May 2009 02:54:22 -0000
@@ -0,0 +1,402 @@
+/*	$OpenBSD: nsSound.cpp,v 1.1 2009/05/03 15:47:27 martynas Exp $	*/
+
+/*
+ * Copyright (c) 2009 Martynas Venckus <martynas@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Stuart Parmenter <pavlov@netscape.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include <string.h>
+
+#include "nscore.h"
+#include "plstr.h"
+#include "prlink.h"
+
+#include "nsSound.h"
+
+#include "nsIURL.h"
+#include "nsIFileURL.h"
+#include "nsNetUtil.h"
+#include "nsCOMPtr.h"
+#include "nsAutoPtr.h"
+
+#include <prthread.h>
+#include <sndio.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <gtk/gtk.h>
+
+#define WAV_MIN_LENGTH 44
+
+typedef struct sio_hdl * (PR_CALLBACK *SioOpenType)(char *,
+                          unsigned, int);
+typedef void (PR_CALLBACK *SioCloseType)(struct sio_hdl *);
+typedef int (PR_CALLBACK *SioSetparType)(struct sio_hdl *,
+                                         struct sio_par *);
+typedef int (PR_CALLBACK *SioGetparType)(struct sio_hdl *,
+                                         struct sio_par *);
+typedef int (PR_CALLBACK *SioStartType)(struct sio_hdl *);
+typedef size_t (PR_CALLBACK *SioWriteType)(struct sio_hdl *,
+                                           void *, size_t);
+typedef int (PR_CALLBACK *SioEofType)(struct sio_hdl *);
+typedef void (PR_CALLBACK *SioInitparType)(struct sio_par *);
+
+typedef struct {
+    struct sio_hdl *sndio_hdl;
+    void *audio;
+    size_t audio_len;
+} SioThreadData;
+
+static PRLibrary *sndio_lib = nsnull;
+
+NS_IMPL_ISUPPORTS2(nsSound, nsISound, nsIStreamLoaderObserver)
+
+////////////////////////////////////////////////////////////////////////
+static void
+RunSioThread(void *arg)
+{
+    SioThreadData *td;
+
+    td = (SioThreadData *)arg;
+
+    /* Close the stream if fail. */
+    SioCloseType SioClose =
+        (SioCloseType) PR_FindSymbol(sndio_lib, "sio_close");
+
+    /* Write stream. */
+    SioWriteType SioWrite =
+        (SioWriteType) PR_FindSymbol(sndio_lib, "sio_write");
+    SioEofType SioEof =
+        (SioEofType) PR_FindSymbol(sndio_lib, "sio_eof");
+    if (!SioWrite || !SioEof) {
+        if (SioClose)
+            (*SioClose)(td->sndio_hdl);
+        free(td->audio);
+        free(td);
+        return;
+    }
+
+    if ((*SioWrite)(td->sndio_hdl, (void *)td->audio,
+        td->audio_len) == 0 && (*SioEof)(td->sndio_hdl)) {
+        NS_WARNING("sio_write: couldn't write the stream");
+    }
+
+    if (SioClose)
+        (*SioClose)(td->sndio_hdl);
+
+    free(td->audio);
+    free(td);
+}
+
+nsSound::nsSound()
+{
+    mInited = PR_FALSE;
+}
+
+nsSound::~nsSound()
+{
+}
+
+NS_IMETHODIMP
+nsSound::Init()
+{
+    if (mInited)
+        return NS_OK;
+    if (sndio_lib)
+        return NS_OK;
+
+    sndio_lib = PR_LoadLibrary("libsndio.so");
+    if (!sndio_lib)
+        return NS_ERROR_FAILURE;
+
+    mInited = PR_TRUE;
+
+    return NS_OK;
+}
+
+#define GET_WORD(s, i) (s[i+1] << 8) | s[i]
+#define GET_DWORD(s, i) (s[i+3] << 24) | (s[i+2] << 16) | (s[i+1] << 8) | s[i]
+
+NS_IMETHODIMP nsSound::OnStreamComplete(nsIStreamLoader *aLoader,
+                                        nsISupports *context,
+                                        nsresult aStatus,
+                                        PRUint32 dataLen,
+                                        const PRUint8 *data)
+{
+    struct sio_hdl *sndio_hdl;
+    struct sio_par sndio_par;
+    SioThreadData *td;
+    PRUint32 samples_per_sec = 0, avg_bytes_per_sec = 0, chunk_len = 0;
+    PRUint16 format, channels = 1, bits_per_sample = 0;
+    const PRUint8 *audio = nsnull;
+    size_t audio_len = 0;
+
+    /* Print a load error on bad status, and return. */
+    if (NS_FAILED(aStatus)) {
+        return aStatus;
+    }
+
+    if (dataLen < 4) {
+        NS_WARNING("Sound stream too short to determine its type");
+        return NS_ERROR_FAILURE;
+    }
+
+    if (memcmp(data, "RIFF", 4)) {
+#ifdef DEBUG
+        printf("We only support WAV files currently.\n");
+#endif
+        return NS_ERROR_FAILURE;
+    }
+
+    if (dataLen <= WAV_MIN_LENGTH) {
+        NS_WARNING("WAV files should be longer than 44 bytes.");
+        return NS_ERROR_FAILURE;
+    }
+
+    PRUint32 i = 12;
+    while (i + 7 < dataLen) {
+        if (!memcmp(data + i, "fmt ", 4) && !chunk_len) {
+            i += 4;
+
+            /* length of the rest of this subblock (should be 16 for PCM data */
+            chunk_len = GET_DWORD(data, i);
+            i += 4;
+
+            if (chunk_len < 16 || i + chunk_len >= dataLen) {
+                NS_WARNING("Invalid WAV file: bad fmt chunk.");
+                return NS_ERROR_FAILURE;
+            }
+
+            format = GET_WORD(data, i);
+            i += 2;
+
+            channels = GET_WORD(data, i);
+            i += 2;
+
+            samples_per_sec = GET_DWORD(data, i);
+            i += 4;
+
+            avg_bytes_per_sec = GET_DWORD(data, i);
+            i += 4;
+
+            /* block align */
+            i += 2;
+
+            bits_per_sample = GET_WORD(data, i);
+            i += 2;
+
+            /* we don't support WAVs with odd compression codes */
+            if (chunk_len != 16)
+                NS_WARNING("Extra format bits found in WAV. Ignoring");
+
+            i += chunk_len - 16;
+        } else if (!memcmp(data + i, "data", 4)) {
+            i += 4;
+            if (!chunk_len) {
+                NS_WARNING("Invalid WAV file: no fmt chunk found");
+                return NS_ERROR_FAILURE;
+            }
+
+            audio_len = GET_DWORD(data, i);
+            i += 4;
+
+            /* try to play truncated WAVs */
+            if (i + audio_len > dataLen)
+                audio_len = dataLen - i;
+
+            audio = data + i;
+            break;
+        } else {
+            i += 4;
+            i += GET_DWORD(data, i);
+            i += 4;
+        }
+    }
+
+    if (!audio) {
+        NS_WARNING("Invalid WAV file: no data chunk found");
+        return NS_ERROR_FAILURE;
+    }
+
+    /* No audio data? well, at least the WAV was valid. */
+    if (!audio_len)
+        return NS_OK;
+
+    /* Open up connection to sndio. */
+    SioOpenType SioOpen =
+        (SioOpenType) PR_FindSymbol(sndio_lib, "sio_open");
+    if (!SioOpen)
+        return NS_ERROR_FAILURE;
+
+    sndio_hdl = SioOpen(NULL, SIO_PLAY, 0);
+    if (sndio_hdl == NULL) {
+        NS_WARNING("sio_open: couldn't open the stream");
+        return NS_ERROR_FAILURE;
+    }
+
+    /* Close the stream if fail. */
+    SioCloseType SioClose =
+        (SioCloseType) PR_FindSymbol(sndio_lib, "sio_close");
+
+    /* Initialize parameters structure. */
+    SioInitparType SioInitpar =
+        (SioInitparType) PR_FindSymbol(sndio_lib, "sio_initpar");
+    if (!SioInitpar) {
+        if (SioClose)
+            (*SioClose)(sndio_hdl);
+        return NS_ERROR_FAILURE;
+    }
+
+    (*SioInitpar)(&sndio_par);
+    sndio_par.bits = bits_per_sample;
+    sndio_par.le = SIO_LE_NATIVE;
+    sndio_par.pchan = channels;
+    sndio_par.rate = samples_per_sec;
+    sndio_par.sig = (bits_per_sample == 8) ? 0 : 1;
+
+    /* Set and get configuration set.
+       Put the stream into writing state. */
+    SioSetparType SioSetpar =
+        (SioSetparType) PR_FindSymbol(sndio_lib, "sio_setpar");
+    SioGetparType SioGetpar =
+        (SioGetparType) PR_FindSymbol(sndio_lib, "sio_getpar");
+    SioStartType SioStart =
+        (SioStartType) PR_FindSymbol(sndio_lib, "sio_start");
+    if (!SioSetpar || !SioGetpar || !SioStart) {
+        if (SioClose)
+            (*SioClose)(sndio_hdl);
+        return NS_ERROR_FAILURE;
+    }
+
+    if (!(*SioSetpar)(sndio_hdl, &sndio_par) ||
+        !(*SioGetpar)(sndio_hdl, &sndio_par) || !(*SioStart)(sndio_hdl)) {
+        NS_WARNING("sio_setpar: couldn't set configuration");
+        if (SioClose)
+            (*SioClose)(sndio_hdl);
+        return NS_ERROR_FAILURE;
+    }
+
+    /* Check configuration. */
+    if (sndio_par.bits != bits_per_sample || sndio_par.pchan != channels ||
+        sndio_par.rate != samples_per_sec) {
+        NS_WARNING("configuration is not available");
+        if (SioClose)
+            (*SioClose)(sndio_hdl);
+        return NS_ERROR_FAILURE;
+    }
+
+    if ((td = (SioThreadData *) malloc(sizeof(SioThreadData))) == NULL ||
+        (td->audio = malloc(audio_len * sizeof(*audio))) == NULL) {
+        if (SioClose)
+            (*SioClose)(sndio_hdl);
+        return NS_ERROR_FAILURE;
+    }
+
+    td->sndio_hdl = sndio_hdl;
+    td->audio_len = audio_len;
+    memcpy(td->audio, audio, audio_len);
+
+    PR_CreateThread(PR_SYSTEM_THREAD, RunSioThread, td, PR_PRIORITY_NORMAL,
+        PR_GLOBAL_THREAD, PR_UNJOINABLE_THREAD, 0);
+
+    return NS_OK;
+}
+
+NS_METHOD nsSound::Beep()
+{
+    ::gdk_beep();
+    return NS_OK;
+}
+
+NS_METHOD nsSound::Play(nsIURL *aURL)
+{
+    nsresult rv;
+
+    if (!mInited)
+        Init();
+
+    if (!sndio_lib)
+	    return NS_ERROR_FAILURE;
+
+    nsCOMPtr<nsIStreamLoader> loader;
+    rv = NS_NewStreamLoader(getter_AddRefs(loader), aURL, this);
+
+    return rv;
+}
+
+NS_IMETHODIMP nsSound::PlaySystemSound(const char *aSoundAlias)
+{
+    if (!aSoundAlias)
+        return NS_ERROR_FAILURE;
+
+    if (strcmp(aSoundAlias, "_moz_mailbeep") == 0) {
+        return Beep();
+    }
+
+    nsresult rv;
+    nsCOMPtr <nsIURI> fileURI;
+
+    /* create a nsILocalFile and then a nsIFileURL from that */
+    nsCOMPtr <nsILocalFile> soundFile;
+    rv = NS_NewNativeLocalFile(nsDependentCString(aSoundAlias), PR_TRUE,
+                               getter_AddRefs(soundFile));
+    NS_ENSURE_SUCCESS(rv,rv);
+
+    rv = NS_NewFileURI(getter_AddRefs(fileURI), soundFile);
+    NS_ENSURE_SUCCESS(rv,rv);
+
+    nsCOMPtr<nsIFileURL> fileURL = do_QueryInterface(fileURI,&rv);
+    NS_ENSURE_SUCCESS(rv,rv);
+
+    rv = Play(fileURL);
+
+    return rv;
+}
Index: files/seamonkey.desktop
===================================================================
RCS file: /cvs/ports/www/seamonkey/files/seamonkey.desktop,v
retrieving revision 1.1
diff -N -u files/seamonkey.desktop
--- files/seamonkey.desktop	24 Oct 2008 21:06:58 -0000	1.1
+++ files/seamonkey.desktop	16 May 2009 02:54:22 -0000
@@ -5,5 +5,5 @@
 Terminal=false
 Type=Application
 Icon=!!PREFIX!!/seamonkey/chrome/icons/default/seamonkey.png
-Categories=Application;PIM
+Categories=Application;Network;
 StartupNotify=True
Index: patches/patch-widget_src_gtk2_nsSound_cpp
===================================================================
RCS file: /cvs/ports/www/seamonkey/patches/Attic/patch-widget_src_gtk2_nsSound_cpp,v
retrieving revision 1.1.1.1
diff -N -u patches/patch-widget_src_gtk2_nsSound_cpp
--- patches/patch-widget_src_gtk2_nsSound_cpp	22 Dec 2006 23:32:28 -0000	1.1.1.1
+++ /dev/null	28 Sep 2008 10:50:08 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-widget_src_gtk2_nsSound_cpp,v 1.1.1.1 2006/12/22 23:32:28 kurt Exp $
---- widget/src/gtk2/nsSound.cpp.orig	Thu Aug 17 04:41:52 2006
-+++ widget/src/gtk2/nsSound.cpp	Fri Sep 15 07:41:32 2006
-@@ -114,7 +114,7 @@ nsSound::Init()
- 
-     EsdOpenSoundType EsdOpenSound;
- 
--    elib = PR_LoadLibrary("libesd.so.0");
-+    elib = PR_LoadLibrary("libesd.so");
-     if (!elib) return NS_ERROR_FAILURE;
- 
-     EsdOpenSound = (EsdOpenSoundType) PR_FindSymbol(elib, "esd_open_sound");
